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 naturalNORwas kept, exactly as RateLab kept its naturalRAT) - 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-inSet-Cookie(__Secure-paperclip-default.session_token=<token>.<signature>— the response-bodytokenfield is only the first half and 401s on its own) ANDOrigin: https://paperclip.ai.cauda.dev(the CSRF-trusted origin is derived fromPAPERCLIP_PUBLIC_URL;http://127.0.0.1:3100returns403 INVALID_ORIGIN). - Ground-truth readback:
psqlon thepg-clusterprimary (databasesns), DBpaperclip, 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-sitesat https://git.dev.cauda.dev (created via the gitea API with admin creds Secretdev/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 primarygit_repoexecution 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:
- 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.
- 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.
- 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.
- Wire monetization + compliance. Run AdSense integration & optimization and Compliance & policy on the launched site before driving traffic.
- Enable UGC (optional, per site). Only after wiring the UGC moderation & quality pipeline for that site — then flip UGC on.
- 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.