Inspiration
For a democracy to be at its best, it is extremely important that the society has a strong and independent journalistic environment. Unfortunately, in America, on average, two newspapers close every week. One of the main reasons behind this is that investigative journalism is expensive. It takes real people reading hundreds of documents and following up on leads over and over again to produce just one story. We thought: what if we use AI agents that can read a document and continue searching for more documents at all hours of the day to help fill that gap and support our democracy?
What it does
Our swarm of agents, with a unique harness that pushes forward new discovery of information alongside factuality and non-politicized reporting, work 24/7 to write articles and share them with the world.
How we built it
We built a pipeline of Claude agents in Python. Bossman (the name of one of the agents) scans news, Reddit, SEC, Federal Register filings, and whatever else it imagines for leads, McLovin (another one of the agents) turns them into testable claims, and then a third reporter agent sends scout agents online to pull and quote primary records, including SEC filings, FDIC bank data, court dockets, state regulators' dockets and audits, through search APIs and a browser agent that navigates sites itself. Finally, a three-model council (skeptic, novelty and virality) must approve every draft before it's published to Astra DB and our Next.js site on Vercel, where every sentence links to its quoted source.
Challenges we ran into
- Knowing when a true story isn't worth telling. Plenty of investigations checked out and still had no juice: the records confirmed something only as a technicality, or the "new" number was arithmetic on figures already public. We taught the agents to tell the difference. McLovin must name the specific new fact a lead would establish before a reporter takes it on, like two records that disagree or a number nobody has computed. The pivot step drops leftovers that are "true but trivia," and a virality judge asks whether anyone affected would care. Several accurate drafts, like a university's program cuts and a city's budget math, were held because the finding was real but not surprising.
- Getting to the records. Search engines bot-blocked us within hours and a paid API ran out of credit. So we built a browser agent that uses each site's own search box and clicks through agency portals. It also had to read 200-page PDFs and ZIP attachments.
- An editorial council that never said yes. At first the novelty judge approved 0 of 22 drafts, and stories spent hours in revision chasing one missing number. We fixed it by predicting what the judges would demand before research started, giving judges memory of their own earlier notes, and letting revisions send scouts out for missing facts.
- Verifying every quote word for word. The quote checker was strict enough that it flagged legitimate editing, like a quote shortened with an ellipsis or a bracketed "[w]hile." We had to make it accept both without letting through a quote that isn't really in the source.
Accomplishments that we're proud of
- We broke real news overnight, and every claim traces to a public record. Ten stories cleared our editorial council, and each one established something no outlet had published.
- A bank failure regulators saw coming. When Philadelphia's Tioga-Franklin Savings Bank failed in August, coverage restated the FDIC's press release. Our agents pulled the bank's own quarterly FDIC filings and set them against its 2024 consent order. The bank reported a 5.17% capital ratio on the exact day regulators required 9%, and the ratio fell every quarter until it was seized 20 months later.
- Atlanta's growing water debt. Other outlets reported that Atlanta has $236 million in unpaid water bills. Our agents read the City Auditor's own tables and found the city wrote off $61 million, including its first council-approved write-offs since 2019, and the past-due balance still grew by $39 million. The auditor and the water department also disagree by about $50 million on what's owed.
- An editorial process that says no. Of about 40 investigations overnight, most were killed or parked because the story was already reported or the premise was wrong. Every published sentence links to the exact quote it rests on.
What we learned
- The writing is easy; the news is hard. Our agents could draft a clean article in minutes. What took all night was proving a story was actually new: most leads had already been reported, or rested on a premise the records contradicted.
- The best stories come from putting two public records side by side. Our winners weren't leaks. They were things like a bank's own filings set against its regulator's order, or a city auditor's write-off table set against its debt balance. That's data anyone could check, but nobody had compared.
- The hunch is usually wrong, and that's where the story is. Most of our published stories came from a reporter agent pivoting when its original hypothesis failed and asking what the records did show.
- Strict verification pays off. Checking every quote word for word, and having a skeptic model review every draft, caught real mistakes before they published: a fee stated for the wrong year, a lawsuit's wording presented as fact, and a figure credited to the wrong district.
What's next for The Clanker Times
- Following stories as they develop. Several of our stories have a live next event. Car-Mart's lender reprieve runs out October 1, and the Beltline tax district faces an extension vote. Agents will recheck the filings and add dated updates, so a story keeps going after it's published.
- Records that aren't online. Today our agents can only use records already published on the web. Next, they'll draft and track public-records and FOIA requests, which is where many of the best local stories are.
- Hooking it up to email and a phone so that the agents can do interviews with key figures needed for reporting.
Log in or sign up for Devpost to join the conversation.