I built a newsroom that can't publish slop
The rebuild after I killed my media site had one rule: make slop structurally impossible to publish. AI does the cheap 80%; a human-attested operator take gates the other 20% — and the agent can't fake the attestation.
Eight months of posts, then fourteen months of silence — that's how the last version of this site died. The autopsy was blunt: no email capture, an anonymous byline, AI filler nobody would defend. So the rebuild had one non-negotiable rule: the machine must make slop structurally impossible to publish. Here's what I shipped.
What I set out to build — and why
A content engine where AI does the 80% that's cheap — research, drafting, formatting, distribution — and a human does the 20% that's the whole point: the take, the judgment, the sourcing. The internet is drowning in the first kind; the second is the only durable moat. The trick was making that split enforced, not aspirational.
The hard part: a gate you can't fake
Most "AI content" pipelines — the popular n8n content-factory templates included — are a chain of nodes that will happily publish nonsense if an upstream field goes empty. I wanted the opposite: a typed, git-backed lifecycle where publishing is gate-enforced. Every post has to clear, in code and in CI:
- An original operator take, human-attested — the un-fakeable 20%. No take, no publish.
- Zero unverified claims. Every unresolved verification flag blocks the gate until it's backed by a cited source.
- A named human byline, never an anonymous editor.
- Honest provenance — an "AI-drafted, human-edited, N sources" line on every piece.
The sharp part: the AI agent literally cannot set its own human-review flags. A protected-keys guard strips them from any agent write, so an agent — even one told to "just publish it" — can't attest the human sign-off. I found that out by trying.
What shipped
The publication you're reading. A serializable theme system where the whole look is data (swap it by prompt); an editorial gate enforced in three places; an operator-take block, a "receipts" sources block, and a provenance line rendered on every post; and a build that ejects to static HTML on Cloudflare. AI writes the draft; the gate refuses the byline until a human owns the take.
The operator take
The point wasn't a better writer; it was an un-skippable human. Let the machine do the cheap 80%, and make the 20% that's actually me impossible to route around.
What's next
The engine is done; now it earns its keep. Next: wire the newsletter capture, and let the factory pull from live sources so the drafting starts itself — with the same gate standing between the draft and the world.
Operator teardowns + playbooks, in your inbox. Free.
Join founders, operators, and investors reading Glocal Startups. Free. Unsubscribe anytime.