If you've built a "content agent" that's really just a system prompt wrapped around a single chat completion call, this one's for you. This isn't a framework pitch — it's the actual pipeline architecture I run in production for a weekly content operation, including the specific failure modes that showed up when I ran one broad agent instead of three narrow ones, and the review gate that fixed them.
For months my content pipeline was one agent, one system prompt, one call per task: research the topic, write the draft, reformat for each platform, all in a single unlogged pass. It looked like this:
prompt = f"Research and write a full article about {topic} in my voice, then create a LinkedIn post, an X thread, and a Substack note."
response = model.generate(prompt)
It worked, in the sense that it produced output fast. It also drifted off-brand within weeks, stated at least two statistics it never actually sourced, and needed a near-full rewrite more weeks than not. Nothing in that pipeline separated "did the model find a real claim" from "did the model write good prose" from "did the model format it correctly for the platform" — three different jobs, collapsed into one unreviewed call.
The fix: narrow the scope of each agent, log the handoff
The pipeline now looks like three sequential agents, each with a single job and a structured handoff:
Topic / Source List
↓
Agent 1: Research Collector
— extracts {claim, source, date} tuples only, no prose
↓
Research Digest (structured JSON)
↓
Agent 2: Draft Writer
— writes only from digest claims, in defined voice + structure spec
— cannot introduce a claim not present in the digest
↓
Full Draft
↓
Human Review Gate
↓
Agent 3: Repurposer
— 4 platform-specific posts from the approved draft only
A minimal digest schema that the Draft Writer is constrained to:
{
"claims": [
{
"claim": "Freelancers using structured AI workflows cut deliverable time from 6h to 2.5h",
"source": "Selfemployed.com",
"date": "2026",
"verified": true
}
],
"contradictions": []
}
The Draft Writer's system prompt includes a hard constraint: every factual sentence must map to an entry in claims. If it can't, it's flagged, not silently smoothed over.
The review gate that actually catches hallucinations
The single rule that mattered more than any prompt engineering: no claim survives into a draft unless it traces to a specific, dated, named source. Not "studies show," not "reports suggest" — a name and a date, always. This one constraint caught more invented statistics in my drafts than any amount of manual proofreading.
Review isn't just for the draft's content, either. It has to apply one layer up, to the claims that decide which model runs your Draft Writer in the first place. The week of July 16-20, 2026, three labs (Moonshot, Alibaba, and an anonymous poster citing GPT-5.6) each shipped a capability claim with verification missing, deferred, or withheld — a leaderboard debut with no independent reproduction, a "second only to the frontier model" claim with no benchmark table, and a math-breakthrough claim with the prompt kept private. Swapping your production model on the strength of a headline like that, without checking methodology, is running Agent without Review on the exact decision that shapes every downstream draft.
Memory: the part that makes error rate actually decrease over time
Each agent loads a running corrections file before it starts a task:
2026-05-12: banned "leverage" — appears 3x in flagged drafts this week
2026-06-02: source "TechRumorBlog" downweighted — produced 2 unverifiable claims
2026-06-19: Draft Writer kept opening with "In today's fast-moving AI world" — added to banned-opener list
That file held four lines the week I started it. It's past a hundred now. First-pass drafts need noticeably less correction than they did three months ago, with the exact same underlying models the whole time. Without a persisted corrections file, each session starts from zero and repeats the same mistakes indefinitely — this is the part most single-session "AI content agent" setups are structurally missing, regardless of model quality.
What I don't automate yet
Research Collector and Repurposer run on a schedule now, after roughly two months of manual Review with zero unverified claims slipping through. Draft Writer output still gets a full human Review pass, every single time, before anything reaches Repurposing. The reasoning: a Research Collector that misreads a source produces a flawed digest Review catches before a draft exists. A Repurposer that formats a post badly produces an ugly post I can delete. A Draft Writer that states a false claim in clean, confident prose — with no Review gate catching it — produces a published article with my name on it that's simply wrong. The failure cost isn't the same at each stage, so the automation decision shouldn't treat it as if it were.
Full framework (the Cowork Loop™, all six stages, applied end-to-end): How To Build An AI Content Team
Top comments (0)