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
245
Files Shipped
7/30
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

W1 DONE

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

✓ 186 files committed
✓ shadcn-svelte (9 components)
✓ App shell + sidebar nav
✓ Dark mode + theme toggle
✓ Auth guard verified
✓ Login page polished
◆ 12 database tables
◆ 29 page routes
◆ 12 API endpoint stubs
◆ 7 Drizzle schema files

contentforge

W1 DONE

Astro 5 + Svelte islands + MDX + Tailwind 4 • Deployed to CF Pages

✓ Design tokens migrated
✓ Header (fixed + mega-dropdown)
✓ Footer (dark, 4-column)
✓ 3 layouts (Base, Article, Tool)
✓ Content Layer + glob loader
✓ FAFSA guide (full MDX)
✓ EFC calculator (MDX + stub)
✓ CF Pages deployed
◆ Build: 9 pages, ~1s
◆ 28 articles remaining

Lessons Learned

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-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 W1 Done
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