Inspiration

Most “AI journalism” projects begin with a prompt and end with an article. That is also where the biggest problems begin: missing context, duplicated stories, weak sourcing, stale facts, and confident claims that nobody can reconstruct later.

I wanted to build the newsroom around the journalist rather than the text generator.

The result is The Autonomous Journalist, an evidence-first newsroom that follows live reporting, identifies developing events, verifies independently owned sources, creates a dated research dossier, and only then allows an AI writer to begin.

Its first publication, The Elite Times, is already operating as an autonomous digital newspaper.

What it does

The system is organized like a newsroom:

  1. A wire desk monitors approved RSS and Atom sources.
  2. The World Ledger records every observation and source revision.
  3. Related reporting is clustered into evolving real-world events.
  4. Events need at least two readable, independently owned sources before becoming eligible.
  5. A Journalist agent produces a dated memo containing:
    • what is new;
    • an attributed timeline;
    • relevant background;
    • unresolved questions;
    • claims the available evidence cannot support.
  6. An editor-in-chief chooses the angle and assigns the appropriate publication persona.
  7. Writer, editor, fact-desk, and judge agents process the article through separate gates.
  8. Only the strongest surviving work is published.
  9. Later evidence changes can open a correction candidate tied to the exact dossier used for the article.

Every model response is treated as untrusted input. OpenAI structured output helps shape it, but deterministic TypeScript and Zod parsers independently validate it before another agent can consume it.

How I built it

OpenAI models power different newsroom responsibilities instead of one oversized prompt:

  • GPT-5 handles research, editorial planning, writing, editing, and qualitative judging.
  • GPT-5 mini handles cost-sensitive fact-checking and secondary evaluation.
  • text-embedding-3-small clusters differently worded headlines referring to the same event.
  • GPT Image 1 creates original editorial artwork for published stories.

The World Ledger is stored in PostgreSQL as versioned events, observations, source revisions, evidence dossiers, editorial decisions, correction candidates, and agent cursors. This lets the system answer an important question: What did the newsroom know when it published this article?

Live page acquisition passes through a governed intake layer with URL normalization, robots.txt enforcement, SSRF protection, DNS pinning, manual redirect validation, response-size limits, rate controls, and daily quotas. Raw evidence is retained temporarily in Cloudflare R2, while PostgreSQL stores bounded searchable excerpts and provenance metadata.

The public newspaper is generated with Next.js and served as static pages through Cloudflare. Readers never query the newsroom database directly. A private control panel shows active agents, prompts, personas, source health, spending, event histories, dossiers, and publishing decisions. Operators can pause intake or disable a source without redeploying the system.

Challenges

Independent confirmation

Ten websites can repeat the same wire report without providing ten independent confirmations. I learned that counting URLs is not enough. The ledger groups sources by ownership family and requires independently owned, readable evidence.

Time and changing facts

Live news is not a collection of permanent documents. Headlines change, live blogs update, and old explainers appear beside current reporting. The system therefore separates publication time, observation time, fetch time, and event time instead of quietly treating them as interchangeable.

Making model output safe to compose

Structured output improves reliability, but it is not a trust boundary. Every agent boundary needed deterministic schema validation, content rules, source checks, retry limits, and a failure state. If an article cannot pass, it is dropped rather than repaired through unlimited prompting.

Cost control

An autonomous newsroom can quickly accumulate model, image, voice, video, storage, and database costs. Paid operations reserve budget before contacting a provider. News intake begins with free public feeds and is capped at 1,000 real page requests per day.

Autonomy with accountability

Removing the human approval queue cannot mean removing control. The system has publishing, intake, social, video, and spending kill switches, plus immutable model runs and editorial decisions. Autonomy is bounded by explicit rules and visible evidence.

What I learned

The most important part of an autonomous journalist is not its writing style. It is its memory.

A useful journalism agent needs to know which sources are independent, what changed, what remains uncertain, which evidence an earlier article used, and when that evidence became outdated.

The World Ledger became the core of the project because it turns a collection of agents into a newsroom with shared institutional memory.

Built With

Share this project:

Updates