Skip to content

Paperclip Org Setup — Northlight Content (SFW network)

Date: 2026-07-03

Second production-quality Paperclip org on the live instance (ns ai, svc paperclip.ai.svc.cluster.local:3100, public https://paperclip.ai.cauda.dev), built live against the API from inside the pod and readback-verified via DB/GET. This is the mainstream SFW sibling of the adult org RateLab — same structure, fully Google-monetized. RateLab is untouched; only new objects were created here.

The business

Northlight Content is a network of SFW niche content sites monetized via Google AdSense (display / auto-ads) + mainstream affiliate (Amazon Associates and niche CPS/CPA programs), grown via genuinely-useful quality content and real SEO. The org is scaffolding only — agents are configured and idle; the operator assigns the first real work. Sites support both pre-seeded editorial content and moderated user submissions (UGC), so a site never launches empty.

  • Company id: fc8ac674-69b3-4f9d-b55c-6ff7d6ab7fb5
  • Name: Northlight Content
  • Issue prefix: NOR (auto-derived from the name — Paperclip has no API to force a prefix; "BrightWorks/NLC" was an example, not a hard requirement, so the natural NOR was kept, exactly as RateLab kept its natural RAT)
  • Status: active
  • Monthly budget: 50000 cents (soft ops cap; subscription lanes aren't metered)

Growth is strictly legitimate. The company description and every agent's instructions forbid: thin/mass-produced/doorway AI spam, fabricated reviews or fake E-E-A-T, undisclosed AI/affiliate relationships, bot/fake traffic, click/impression fraud, cloaking/deceptive redirects, PBN/link-scheme SEO, and any Google-AdSense-program-policy or ToS violation (invalid traffic = AdSense ban). Compliance is treated as a first-class revenue requirement (deindexing or an AdSense ban destroys the revenue base).

Environment + auth (as used)

  • Drive the API from inside the pod on 127.0.0.1:3100: kubectl -n ai exec <pod> -c paperclip -- node -e '...http.request...'.
  • Sign in: POST /api/auth/sign-in/email {email:"[email protected]",password:...}. Auth every call with BOTH: the FULL session cookie from the sign-in Set-Cookie (__Secure-paperclip-default.session_token=<token>.<signature> — the response-body token field is only the first half and 401s on its own) AND Origin: https://paperclip.ai.cauda.dev (the CSRF-trusted origin is derived from PAPERCLIP_PUBLIC_URL; http://127.0.0.1:3100 returns 403 INVALID_ORIGIN).
  • Ground-truth readback: psql on the pg-cluster primary (databases ns), DB paperclip, plural snake_case tables.

Agents

Eleven agents mirroring RateLab's diversified roster with SFW roles, current-gen model IDs, and a managed AGENTS.md instructions bundle per agent (role prompt + the shared Northlight guardrails). Subscription-lane agents (claude_local, codex_local) pin the shared Local execution environment (d918b3f7-f11d-456f-89e3-ed6d420a5a99); the free in-cluster B60 lane (opencode_local) leaves the environment unset.

Exposed models were queried live (GET /api/companies/<id>/adapters/<adapter>/models) and the newest of each tier was used. Note: the newest exposed Sonnet is claude-sonnet-4-6 (no claude-sonnet-5 is exposed by this adapter), so Sonnet-tier agents use claude-sonnet-4-6.

Agent Role Adapter Model / endpoint Lane Agent id
Growth-Strategist researcher claude_local claude-opus-4-8 (effort high) Claude Max 1cc0ece5-e750-44d6-b4cb-93c1ce07ff54
Engineer (lead) engineer claude_local claude-fable-5 (effort high) Claude Max 8a43ca66-6602-40f5-bd18-8de841e74542
Builder · Codex engineer codex_local gpt-5.5 (reasoning high, bypass on) ChatGPT f3be1e23-f90c-409a-849b-c9245c558b8c
Builder · Claude engineer claude_local claude-opus-4-8 (effort high) Claude Max 29837f81-b6c7-436a-91f6-e8a68c16f034
Builder · B60 engineer opencode_local cauda/qwen3-8b (B60 router) B60 (free) 4828f705-7f72-446a-8ec4-6dc9d9170a8b
Content-SEO researcher claude_local claude-sonnet-4-6 (effort medium) Claude Max 57e89e6b-d413-4b05-9c17-38e647569293
Analytics-Ops researcher claude_local claude-sonnet-4-6 (effort medium) Claude Max 7ce18a50-bc23-430f-a251-b2970fe2fe43
Marketing cmo opencode_local cauda/qwen3-8b (B60 router) B60 (free) 25c0c396-0b1c-4d26-8d5d-52601bbfe102
Bulk-Content-Writer researcher opencode_local cauda/qwen3-8b (B60 router) B60 (free) e9c34977-019b-4394-8155-65bd87720eb7
Metadata-Tagger researcher opencode_local cauda/qwen3-8b (B60 router) B60 (free) b1da930c-1fe5-4df4-a343-dbc9074189e3
Localization researcher opencode_local cauda/qwen3-8b (B60 router) B60 (free) ffead3d3-24f3-4296-a2e7-856545a16ab7

The B60 agents are wired via a custom OpenCode provider injected through adapterConfig.env.PAPERCLIP_OPENCODE_PROVIDERS (provider cauda, baseURL http://qwen3-8b-router.ai.svc.cluster.local/v3, model qwen3-8b, no auth) with PAPERCLIP_OPENCODE_SMALL_MODEL=cauda/qwen3-8b — identical to RateLab's wiring.

STALE (standalone B60 8b retired): that router Service no longer exists — repoint these in-DB overrides to the B580 router (wire model qwen3-8b-b580) or drop them so agents inherit the deployment-global providers.

Code environment (gitea, not GitHub)

  • New private repo: gitea_admin/brightworks-sites at https://git.dev.cauda.dev (created via the gitea API with admin creds Secret dev/gitea-admin; verified it did not exist first).
  • clone: https://git.dev.cauda.dev/gitea_admin/brightworks-sites.git
  • ssh: [email protected]:gitea_admin/brightworks-sites.git
  • default branch main, private, auto-initialized.
  • Paperclip project Northlight Sites (c4b5c43f-c6d0-4002-8390-bb9df5352545) with a primary git_repo execution workspace brightworks-sites bound to that repo (repoRef/defaultRef = main).

Goal tree — everything ladders to "Maximize revenue"

Root Maximize revenue (b39890a3-26fa-4ed6-91ee-900bab3516c2, company-level). Five company-level strategic pillars parent to it, each agent-owned:

  • Topical authority + genuine SEO — owner Content-SEO
  • Monetization optimization (AdSense + affiliate) — owner Analytics-Ops
  • Growth loop — measure, double down, re-measure — owner Growth-Strategist
  • Grow the network legitimately — owner Marketing
  • Compliance & policy is first-class — owner Analytics-Ops

Six task-level goals sit under the Compliance pillar: helpful-content-only (no thin AI spam), valid-traffic-only, Privacy-Policy + consent (GDPR/CCPA), AdSense-program-policy adherence, the UGC-moderation gate before per-site UGC enablement, and a DMCA/report-abuse path per site.

Pipelines (working → … → review → done/cancelled)

All nine are project-scoped to Northlight Sites, enforceTransitions=true. Stage ownership is encoded as @Agent mentions in each stage's whatHappensHere config; review stages carry approval routing (approveToStageKey/requestChangesToStageKey/rejectToStageKey) — the same pattern RateLab uses. (Explicit pipeline_transitions rows are 0 by design, as in RateLab; movement is derived from stage config + ordering.)

Pipeline Stages (owner)
Market & monetization research Scope (Growth) → Research (Growth+Analytics) → Synthesis (Analytics) → Review (human) → Done → Cancelled
New site launch Spec (Growth+Engineer) → Build (Builders/Engineer) → Pre-seed content (Content-SEO+Bulk-Writer+Metadata) → Compliance check (Analytics) → Review (Engineer/human) → Launched → Cancelled
Blog/article content funnel Brief (Content-SEO) → Draft (Bulk-Writer+Metadata) → Quality review (Content-SEO/human) → Published → Cancelled
UGC moderation & quality Intake (Analytics) → Moderation (Content-SEO) → Approve/publish (human) → Published → Removed
Network architecture & interlinking Map (Content-SEO+Metadata) → Implement (Builders/Engineer) → Review (Engineer+Content-SEO/human) → Done → Cancelled
AdSense integration & optimization Plan (Analytics) → Implement (Builders/Engineer) → Measure (Analytics) → Review (human) → Done → Cancelled
Traffic growth campaign Plan (Marketing+Growth) → Execute (Marketing) → Measure (Analytics) → Review (human) → Done → Cancelled
Analytics & growth loop Measure (Analytics) → Analyze (Growth+Analytics) → Recommend (Growth) → Review (human) → Done → Cancelled
Compliance & policy Audit (Analytics) → Remediate (Engineer+Builder) → Review (human) → Compliant → Blocked

Two additions folded in per operator direction: - Pre-seed content stage on New site launch — each site launches with initial quality articles (from the content funnel) so it is never empty. - UGC moderation & quality pipeline — pre/post-publication moderation of user submissions (spam, off-topic, low-quality, policy) so UGC can't drag a site into AdSense-policy violations; includes DMCA/report-abuse. UGC is enabled per-site only once this is wired.

Guardrails encoded (in goal + pipeline + agent descriptions)

  • Quality content that genuinely helps users — never thin/mass-produced/doorway AI spam (Google's spam + helpful-content systems deindex it → lost AdSense revenue). Disclose AI + affiliate where required; no fabricated reviews / fake E-E-A-T.
  • Google AdSense program-policy compliant (no prohibited/adult/deceptive content; valid traffic only — invalid/bot clicks get the AdSense account banned).
  • Real traffic only (genuine SEO + marketing) — no bot/fake traffic, click fraud, cloaking, or ToS-violating tricks.
  • Legitimate cross-promotion of the operator's OWN sites — not link schemes/PBNs.
  • Required Privacy Policy + cookie/consent (GDPR/CCPA), DMCA/report-abuse per site.

Assign your first job (operator steps)

Everything is idle scaffolding. To start the SFW network:

  1. Kick off niche research. Add a case to Market & monetization research (Scope stage) describing a candidate SFW niche and monetization angle; let Growth-Strategist + Analytics-Ops research it, then approve the opportunity list at Review.
  2. Launch the first site. Add a case to New site launch (Spec stage) for the chosen niche. Build → Pre-seed content (initial quality articles) → Compliance check (privacy policy, consent, AdSense-safe, DMCA) → Review → Launched. UGC stays disabled at this point.
  3. Feed the content funnel. Add batch cases to Blog/article content funnel (Brief stage) per niche; Content-SEO briefs, Bulk-Writer drafts, Content-SEO quality-reviews before publish. These articles also pre-seed new sites.
  4. Wire monetization + compliance. Run AdSense integration & optimization and Compliance & policy on the launched site before driving traffic.
  5. Enable UGC (optional, per site). Only after wiring the UGC moderation & quality pipeline for that site — then flip UGC on.
  6. Grow + measure. Run Traffic growth campaign for real-audience growth and Analytics & growth loop to find winners and double down; feed results back into research and launches.

Agents run on the operator's seeded subscriptions (Claude Max, ChatGPT) and the free in-cluster B60 GPU; nothing is metered per-token beyond the soft ops budget.