APPROVED 2026-04-13 • FEATURE FREEZE • BUILD STARTED 2026-04-14

CampaignForge + ContentForge

Complete Spec Bundle — 5 Documents, 3 Repos, Building

5
Spec Documents
17
Decisions
3
Repos Live
375+
Files Shipped
36/40
Tasks Done
Spec Documents
Click any card to drill into the full visual breakdown.
Platform Spec (Ops App)
ContentForge (Content Sites)
Trust Framework (Accounts)
Execution Plan (Timeline)
Operator Runbook (Daily Ops)
Build Progress
Repos scaffolded 2026-04-14. Feature freeze in effect — building from locked specs.

campaignforge-app

PIPELINE UI DONE

SvelteKit 2 + Svelte 5 + Tailwind 4 + Drizzle ORM + shadcn-svelte

✓ App shell + auth + dark mode
✓ shadcn-svelte (9 components)
✓ PostgreSQL + Drizzle + migrations
✓ Agent Executor + SSE streaming
✓ Cost tracker (per-model pricing)
✓ Session manager (state machine)
✓ Pipeline orchestrator (stage sequencing)
✓ Brief editor (7-step form → YAML)
✓ Pipeline execution UI (SSE + timeline)
✓ Approval panels (angles + copy)
✓ 3 pipeline API routes wired
◆ Validation results display
◆ Deploy to Coolify
◆ GATE: Pipeline runnable from UI

contentforge

QUALITY GATES DONE

Astro 5 + Svelte islands + MDX + Tailwind 4 • 42 pages, 10 tools, Lighthouse 95+

✓ 20 articles + 10 tools + 4 E-E-A-T
✓ 8 shared + 10 tool Svelte islands
✓ JSON-LD schema (all page types)
✓ XML sitemaps (priority + lastmod)
✓ Zaraz events (5 × 10 tools)
✓ Playwright E2E (22 tests)
✓ a11y audit (zero critical/serious)
✓ Lighthouse CI (all pages 95+)
✓ Skip-to-content + ARIA roles
✓ Color contrast WCAG AA
◆ URL redirect plan + A/B test
◆ CF Pages production cutover
◆ GATE: ContentForge live on Astro

Lessons Learned

Session 9 — Pipeline Brain Upgrade (2026-04-15)

Agents process early rules more heavily: Adding HARD RULES blocks at the top of each skill file ensures non-negotiable constraints are in the "hot zone" of agent attention. Rules buried mid-document get diluted by accumulated context.

Decision trees > prose guidance: Converting "consider X when Y" into "IF X THEN Y, OTHERWISE Z" produces more reliable agent behavior. Agents follow explicit branches; they interpret flexible guidance flexibly (which means inconsistently).

Anti-patterns are as powerful as patterns: Showing agents what NOT to produce (with concrete BAD examples and WHY explanations) creates hard boundaries. Without anti-patterns, agents gravitate toward "safe" generic output that passes no rules but also creates no value.

Subagent permissions are session-scoped, not inherited: Adding permissions to settings.local.json or project settings doesn't reliably propagate to subagents in don't-ask mode. Python/Bash fallback for file writes is the workaround. Some agents succeed, some don't — the behavior is inconsistent and needs investigation.

Session 8 — Parallel Agent Scaling (2026-04-15)

Sweet spot is 3-4 parallel agents: Beyond 4, prompt quality drops and merge review gets sloppy. The real constraint is file isolation, not compute. With 3 repos, the ceiling is ~5 agents if file boundaries are clean.

Feature branches prevent same-repo conflicts: Agents C and D in campaignforge-app worked on separate branches (feat/cost-session-manager, feat/pipeline-orchestrator), then merged sequentially. Zero conflicts.

Independent agents can converge on identical fixes: Both the a11y and Lighthouse agents independently identified and fixed the same CSS cascade issue (@layer base wrapping, :where() scoping) with byte-identical diffs. Merge was clean because Git detected identical changes.

CAPI Worker type errors are IDE-only: Cloudflare Workers have their own tsconfig with @cloudflare/workers-types. The IDE picks up the root tsconfig which doesn't know about Request/Response/fetch globals. Not real errors.

Session 3 — Content Migration + Tool Islands (2026-04-14)

MDX body_html requires JSX-safe formatting: Raw HTML from JSON has nested block elements on same lines, bare <br> tags, and ~ chars parsed as strikethrough. Conversion script needed multi-pass formatting: self-close void tags, escape tildes to &#126;, and split every block element onto its own line.

Astro dynamic components need static imports: client:visible hydration fails with dynamic component references (NoMatchingImport). Must use conditional static rendering: {tc === 'EFCCalculator' && <EFCCalculator client:visible />}.

Parallel agents for tool implementations: 4 agents dispatched simultaneously, each handling 2-3 tools. All completed in ~17 minutes. Logic/data separation (*.logic.ts, *.data.ts) enabled clean parallelization with zero merge conflicts.

Session 2 — W1 Build (2026-04-14)

Astro 5 Content Layer API: entry.render() is gone. Use import { render } from 'astro:content' then render(entry). Content collections need glob() loader from astro/loaders.

shadcn-svelte + Tailwind v4: @apply border-border fails — Tailwind v4 doesn't know custom vars via @apply. Use @theme inline to declare all HSL color vars, then use raw CSS instead of @apply for base styles.

shadcn-svelte components need WithElementRef: The cn utility must also export WithElementRef and WithoutChildrenOrChild types for sidebar/rail components.

MDX in Content Collections: HTML (tables, callouts, step-lists) works inline in MDX. No need to convert to custom components yet — the prose CSS styles handle it.

Session 1 — Scaffold (2026-04-14)

Astro 5 Content Collections: Uses src/content.config.ts (not src/content/config.ts). The z import from astro:content shows deprecation warnings.

Tailwind v4: No tailwind.config.ts needed. Uses @tailwindcss/vite plugin. The @astrojs/tailwind integration conflicts — use the Vite plugin directly.

Remote agents failed: Overnight scaffold agents couldn't auth with GitHub. Local execution worked first try.

Session Log

2026-04-15 #10
Parallel Orchestration: 9 Agents, 2 Batches, 3 Repos — Batch 1 (5 agents): URL redirect plan (309 lines, phased cutover), Zaraz config spec + guide (1,322 lines, found 7 tracking gaps including critical cta_type mismatch), pipeline v2 dry run (Stages 1-2 passed, found proof_mechanism validator gap), BUILD-P validation results UI (941 lines, 5 files), ContentForge backfill (12 pages: 10 school profiles with College Scorecard data + degree-match quiz + terms-of-use). Batch 2 (4 agents): BUILD-P Coolify deploy prep (Dockerfile, health check, deploy guide), end-to-end tracking verification audit (full chain status + 7-phase operator checklist), Winners Vault seeded (4 tool-backed winners + 5 blacklisted from swipe vault history), ContentForge sitemaps + school profile routing + 18 stale URL fixes. Inline: proof_mechanism added to programmatic validator (config + script), Financial Aid Quiz URL mismatch fixed (32 refs), claude-mem permissions unblocked. 9 agents, ~35 files, ~4,000 lines across 3 repos. Winners Vault live. BUILD-P deploy-ready.
2026-04-15 #9
Pipeline Brain Upgrade: v2 System Prompt + 19 Skills Restructured — Rewrote the affiliate marketer system prompt (v2) with strategic thesis: tool-backed proof > generic claims, Advantage+ black box reality, multi-vertical expansion pattern. Restructured all 19 pipeline skills across 5 batches: added HARD RULES blocks, VERIFY gates between steps, anti-pattern examples (GOOD vs BAD with WHY), IF/THEN decision trees replacing prose, tool-as-proof integration throughout. New data model additions: proof_mechanism field on angles, tool_backed on vault entries, tool_angle_insights in retro reports, tool-backed specificity bonus in copy scoring. Deep strategic discussion: Advantage+ angle flooding strategy, tool-as-moat thesis, multi-vertical gov research pattern, free-traffic-to-direct-school outreach play, win-win-win-win value architecture. 19 skills restructured, ~1,600 lines added. v2 system prompt created. All pushed.
2026-04-15 #8
Parallel Builds #3-5: 10 Tasks, 3 Batches, 12 Agents — Batch 3 (3 agents): XML sitemaps, cost tracker + session manager, pipeline orchestrator. Batch 4 (3 agents): brief editor (7-step form), Zaraz event taxonomy (5 events × 10 tools), Playwright E2E tests (22 tests). Batch 5 (4 agents): pipeline execution UI (SSE streaming + timeline + approvals), a11y audit (zero critical/serious), Lighthouse CI (all pages 95+), CAPI Worker (Zaraz → Meta CAPI). Both contentforge a11y and Lighthouse agents independently arrived at identical CSS cascade + favicon fixes — zero merge conflicts. +48 files, ~6,000 lines across 3 repos. 10 tasks completed.
2026-04-15 #5
Parallel Build #2: Schema Markup + Agent Executor — Agent team. Agent 1: JSON-LD structured data on all 42 contentforge pages (BreadcrumbList, Article, WebApplication, Organization via @graph arrays). Agent 2: full Agent Executor in campaignforge-app — Anthropic SDK streaming, cost tracker with per-model pricing, session manager, POST /api/pipeline/execute with auth guard and SSE response. +8 files, 1,623 insertions across 2 repos. 1 Plane task Done.
2026-04-15 #4
Parallel Build: E-E-A-T + PostgreSQL — Agent team session. Agent 1: built 4 substantive E-E-A-T pages in contentforge (about, editorial-policy, methodology, contact) with real data sources (Federal Methodology, BLS, IPEDS, College Scorecard), tool-by-tool methodology, affiliate disclosure, AI disclosure. Agent 2: set up PostgreSQL + Drizzle in campaignforge-app — docker-compose.yml (PG 16, port 5433), drizzle.config.ts, 6 db npm scripts, .env.example, Coolify production setup docs. +8 files across 2 repos. 2 Plane tasks marked Done.
2026-04-14 #3
BUILD-C Content + Tools Complete — Bulk converted 28 article/tool JSONs to MDX (wrote Python converter with MDX-safe HTML formatting). Built 4 category index pages (/category/financial-aid/ etc.). Polished 8 shared Svelte components (StepWizard, ButtonGroup, ResultCard, InputField, ProgressBar, MethodologyDisclosure, SourceCitation, CTAButton). Implemented all 10 interactive Svelte tool islands (EFC Calculator, Financial Aid Quiz, Scholarship Finder, ROI Calculator, Loan Repayment, Career Salary Explorer, Employer Tuition Checker, Time-to-Degree, GI Bill Calculator, Aid Letter Decoder). Wired tool components with client:visible hydration. 41 pages build in 4s. +31 files, 10,452 insertions in tool commit alone. 12 Plane tasks marked Done.
2026-04-14 #2
BUILD-C W1 + BUILD-P W1 — Design tokens migrated, full header/footer/layouts built, homepage + tools index polished, FAFSA article + EFC calculator converted to MDX, Content Layer routing working (9 pages). shadcn-svelte initialized, app shell with sidebar nav + dark mode + auth. CF Pages deployed. +86 files across 2 repos.
2026-04-14 #1
Scaffolds — Both repos created, pushed to GitHub. contentforge: Astro 5 + Svelte + Tailwind 4 (60 files). campaignforge-app: SvelteKit 2 + Drizzle (99 files). 30 Plane tasks created.
1 3-Repo Architecture
Each concern lives in its own repository. Shared config, independent deploys.
Repository Purpose Stack Deploys To Status
campaignforge-app CampaignForge ops platform (workflow UI, pipeline execution, dashboards) SvelteKit 2, Svelte 5, shadcn-svelte, Drizzle + Kysely, Postgres DigitalOcean via Coolify Deploy-Ready
contentforge Content sites (degreesources.com + future verticals) Astro 5, Svelte 5 islands, MDX, Tailwind 4 Cloudflare Pages W1 Done • Deployed
campaign-forge Pipeline brain: skills, config, specs, vertical data, research Python scripts, YAML/JSON config, Claude skills Local / CLI Active
2 Revenue Flow
Ad spend → Content site → Tool engagement → Offer conversion → Revenue
1

Ad Click

Meta / Google / TikTok ad → user clicks → lands on content site tool page

2

Tool Engagement

User uses EFC Calculator / Quiz / Finder → genuine value delivered

3

CTA Click

User clicks "Explore Programs" → routed via offer URL with tracking params

4

Lead Submit

User fills form on partner portal → lead captured → Everflow attributes

5

Revenue

$35 CPL per qualified lead → Winners Vault updated → next campaign informed

3 Execution Phases
BUILD (Claude builds) + OPERATE (Operator executes) run simultaneously across 5 phases.

Phase 0

This Week

Spec review, social profiles, Meta Verified, entity resolution, pre-warming

22 tasks

Phase 1

Weeks 1-3

Tracking live, platform MVP, ad accounts, organic posting, campaign structures

35 tasks

Phase 2

Weeks 4-6

Full workflow UI, account warm-up, first live campaign, Winners Vault seeded

26 tasks

Phase 3

Weeks 7-9

Lead intelligence, email capture, social automation, competitive intel, platform health

28 tasks

Phase 4-5

Weeks 10+

Ad platform APIs, CAPI firing, retro automated, ping/post routing, multi-vertical

15+ tasks