A compounding content property and an autonomous cold-outreach engine, sharing one AI content engine — designed to sell, deliver, and support itself, running entirely on Cloudflare.
This is not a content agency with AI bolted on. It is a system — a set of narrow agents that build a marketing asset, find customers, close them, deliver the work, and support them, with a human setting guardrails rather than doing tasks.
The business runs on two assets that share one engine:
A genuine, public content website on a real consumer topic. It ranks on Google, pulls organic traffic, and is the living proof in every sales conversation. It compounds whether or not anyone is selling.
A 1M+ Shopify store list worked by agents: enrich, generate a personalised sample, cold email, handle replies, send the Stripe link, close. Distribution as a loop, not a campaign.
Both are fed by the same AI content engine. The article that ranks on the public site and the sample with a prospect's name on it are the same artifact, produced the same way.
The public property must earn a real search audience, so its theme is consumer-facing — not a B2B niche, not a store directory.
Chosen on two criteria: (1) deep evergreen and seasonal search demand, and (2) an extremely dense Shopify merchant base — so every public article doubles as a credible, on-topic sample for outreach. The category is the one swappable variable in this plan; the method below does not change if it does.
The site follows the Wirecutter model, not the listicle-farm model: it helps a real person make a real purchase decision. Not "10 best X" — actual frameworks, tradeoffs, and "who each pick is for / skip if."
This pyramid is what makes deep interlinking possible at scale — see Section 04.
It is late 2026. Every competitor can generate a thousand articles before lunch. Differentiation is no longer "can you make content" — it is whether the content survives Google's scaled-content-abuse policy and an audience exhausted by AI slop. Six principles:
Interlinking is treated as a product surface maintained by an agent, not an afterthought. The link graph lives as data in a D1 table — links(from_page, to_page, anchor, type) — so it can be measured, audited, and repaired.
links table to see where equity pools and where it dries up.Fifteen narrow agents across four swimlanes. Each owns one job, one trigger, one definition of done. None of them talk to each other — they read and write the shared database (Section 07).
noindexes anything too thin to ship. Reused as client QA./products.json, /sitemap.xml) — no browser, no bot wall.One Cloudflare account, one wrangler.toml, no servers. The only piece outside Cloudflare is outbound bulk email.
| Need | Service | Role |
|---|---|---|
| Compute | Workers | Every agent and the web front end run as Workers. |
| Durable pipelines | Workflows | Multi-step jobs with retries, sleeps, and exactly-once steps. |
| Stateful agents | Durable Objects / Agents SDK | Each agent individually addressable with persistent state. |
| Scheduling | Cron Triggers | Fires Prospector, Interlinker, SEO Monitor, Retention. |
| Handoffs | Queues | Decoupled message passing between agents. |
| Need | Service | Role |
|---|---|---|
| Cheap, high-volume | Workers AI | Embeddings, classification, reply triage — edge inference. |
| Quality long-form | AI Gateway → strong model | Article generation routed to a top-tier model. Caching, rate limits, observability. No downgrade to a tiny model. |
| Need | Service | Role |
|---|---|---|
| Relational spine | D1 | Stores, prospects, conversations, pages, links — the shared source of truth. |
| Interlinking | Vectorize | Embedding index powering semantic contextual links. |
| Config / cache | KV | Fast key-value for settings and hot lookups. |
| Assets | R2 | Images, generated samples, deliverable PDFs — no egress fees. |
| Site hosting | Workers static assets | SSG for the long tail, on-demand render + cache for fresh pages. |
| Function | Service | Role |
|---|---|---|
| Web data | fetch + Browser Rendering | Public Shopify JSON by default; headless browser only as fallback. |
| Outbound email | Resend non-Cloudflare | Cold email + transactional. Cloudflare does not send bulk outbound. |
| Inbound email | Email Routing / Email Workers | Catches and parses replies for the Closer and Support agents. |
| Payments | Stripe | Payment links, checkout, webhooks driving the Billing agent. |
| Booking | GHL widget | Call scheduling when a prospect prefers to talk. |
| Search ops | Google Search Console API | Ranking data for the SEO Monitor and Retention agents. |
Agents never call each other. They read and write one D1 database; the schema is the org chart.
stores · prospects · conversations · customers · jobs · pages · links · events
Queues carry handoffs; Workflows wrap any multi-step job; Cron Triggers fire the scheduled agents.
Every table row carries a needs_human flag. Any agent below its confidence threshold sets it and stops. A daily digest — "sent 40, 3 replies, 1 sale, 2 need you" — is the human control panel.
Every agent action is logged to events with its reasoning. That log is both the audit trail ("why did it send that?") and next month's prompt-tuning data. The business writes down its own reasoning and compounds.
Do not boil the ocean. Prove each mechanic on a slice before scaling.
Cloudflare account, wrangler.toml, D1 schema, one niche slice chosen.
Research → Writer → Editor → Interlinker → Publisher for one cluster (~200–500 pages).
Confirm the cluster indexes and ranks for facet terms before scaling content.
Prospector + Sampler + Outreach + Closer + Stripe link — the first closed revenue loop.
Billing + Onboarding + Fulfilment — sale becomes delivered work automatically.
Support + Retention agents once there are paying customers to serve.
Add niches and sending domains one at a time, watching deliverability and indexing.
| Risk | Guardrail |
|---|---|
| Scaled content abuse penalty | Data-spine pages, real value per page, tiered indexing — noindex thin pages until enriched. Directory of stores is never published. |
| Email deliverability | Pool of sending domains, gradual warm-up, volume ramp, SPF/DKIM/DMARC, kept off the money domain. |
| Bot blocking on enrichment | Default to public Shopify JSON via plain fetch; Browser Rendering only as a small fallback lane with hard timeouts. |
| AI cost runaway | Workers AI for cheap calls, AI Gateway caching for the rest, per-agent budget caps. |
| Agent acting wrongly at scale | needs_human escalation, full event logging, style approved once by a human before any volume runs. |