The problem
Real journalism is slow and expensive: beat coverage, research synthesis, drafting, and editorial review each take human hours. The Dissent asks what a newsroom looks like if the whole pipeline — from tip to published article — runs as a set of cooperating agents, with humans setting the standards instead of typing every word.
The approach
The system runs seven independent desks — politics, sports, food, tech, neighborhoods, things, and an editorial desk — each fully self-contained under a copy-don't-import isolation rule: its own orchestrator, prompts, sources, and tools, so any desk can be rewritten without touching the others. A central event bus routes a story through its lifecycle (development → investigation → writing → review → publication), spawning the right orchestrator for each stage. The hard, unglamorous parts are the interesting ones: semantic dedup gates so the paper doesn't run the same story twice, prompt caching, and a model-routing policy — cheap models for grunt work, expensive ones for review.
The stack
A Next.js front end serves the reader-facing paper with live touches — a breaking-news bar, a newsroom activity feed, a sports-betting ledger. The agent backend is Python on a DigitalOcean droplet driven by systemd and cron jobs: newsletter digests, byline curation, source monitoring, pick settlement. An autobuilder — a Claude Code agent on a schedule — ships incremental features to the site on its own.
Where it's at
Live and publishing. A recent backend refactor isolated the desks and replaced third-party SDKs with in-house clients, and a round of cost work cut daily LLM spend from ~$25–31 down to ~$5–8 while increasing output. It's the project that taught me the most about making agents reliable in production rather than impressive in a demo.