Second Source
Before you share it, see who else is saying it.
A calm way to see how well a story is supported. It started as a private tool I built for a working journalist, and this is its public sibling: it groups reports about the same event, counts only truly independent outlets, and labels each story in plain words. Try the working demo on this page, built on sample news from a fictional city.
Try it. It’s yours to break.
It is laid out like the private tool it comes from: Today, Latest, Map, Verify, Research, Assistant and Alerts. New reports arrive while you watch. Open a story and press Replay to watch it earn its label. Everything stays in your browser.
Second Source
Sample news from a fictional cityOpens full screen, like an app. New reports arrive while you watch.
Loading…
Where it comes from
Second Source is the public, gentler sibling of a private tool I built in October 2026 for a journalist covering the Middle East. That version reads more than 200 news sources in Arabic and English around the clock, groups their reports into stories, and labels each story by how much independent reporting agrees. It deals with real and often sensitive news, so it stays private, behind a sign-in. This demo keeps its method and its layout, and swaps the subject matter for everyday stories from a fictional city.
The gaps it closed
- 01
Too much to read, in two languages
Following a region properly means following dozens of outlets in Arabic and English. The tool reads more than 200 sources around the clock and groups their reports into stories, so each event is read once, with everyone who covered it listed underneath.
- 02
Repetition that looks like confirmation
The same agency story, reprinted across many sites, can feel like wide agreement. Reprints now count for the outlet they copy, and outlets with one owner count once, so the number shown is the number of independent sources.
- 03
Social posts arrive first
Posts from residents often break news, but they are not confirmation. They appear as leads, clearly marked, and never raise a story's label on their own.
- 04
Outlets without a usable feed
Some important outlets publish no feed, or turn away automated readers. Rather than getting around those restrictions, the tool finds their articles through public search indexes, so they are still covered and nothing is forced.
- 05
Numbers that drift
Early reports often disagree on counts and dates. When they do, the story is labelled Details differ and shows which outlet gave which figure, so the disagreement is visible before it gets repeated.
- 06
Losing the thread
A story can be followed, given private notes, and replayed report by report to see how it got its label. Watchlists flag new matches, a daily briefing sums up the day, and a story can be exported to Word or PDF to work from.
- 07
Questions with sources attached
An assistant answers questions about the news using only what was collected, and cites the reports it used. When it looks further on the web, the answer says so, and it can never change a story's label.
- 08
Comfortable to use every day
Plain-language labels with their own icons, five text sizes, light and dark themes, and a layout that works as well on a phone as on a desk, so the tool fits into a working day instead of adding to it.
The problem
Ten headlines about the same thing can feel like ten confirmations. Often they are one: a news agency's story reprinted word for word, or two papers with the same owner. And a story that has only appeared in posts from residents is a lead, not a fact yet. Counting articles is easy. Counting independent sources is what actually tells you how much to trust a story.
How it decides
- 01
Reports become stories
Reports about the same event are grouped into one story, so you read the event once and see everyone who covered it.
- 02
Count outlets, not articles
A reprint counts for the agency it copies. Outlets with the same owner count once. Ten reprints of one agency story add up to one source.
- 03
Leads are not confirmation
Community posts are shown, because they are often first, but they never raise a story's label on their own.
- 04
Compare the details
When outlets agree a thing happened but quote different numbers or dates, the story says so, and shows who said what.
- 05
Plain words, gentle colour
Single source, Corroborated, Well supported, Details differ, Corrected. Lagoon means independent outlets agree, coral means look again, and every label also has its own shape and words.
What the demo does
- Today: what changed since you opened it, stories you follow, details to double-check, the biggest stories, watchlist matches and a short daily briefing.
- Latest: every story with filters for time, topic and label, next to a map and the day's numbers: reports per hour and stories by support.
- Map: where each story happened in the city, coloured by its label and sized by how many independent outlets report it. Replay the last 18 hours with a slider.
- Verify: the stories sorted into columns, from details that differ to well supported, so you can see at a glance what needs a second look.
- Story view: why it has its label, the first report, the figures each outlet gave, every report in order, how it got here step by step, and possibly related stories.
- Research: search every report, or explore the people, places and organisations in the news.
- Assistant: ask a question, check a claim, make a timeline or compare outlets. The answers are built only from the sample reports, and every quoted report names its outlet. No AI is involved in the demo.
- Alerts: watchlists for the topics and words you care about, with matches as they arrive. Add your own or remove the samples.
- Sources: every sample outlet, who owns it, which ones count together, and your own notes on each.
- On a phone it opens full screen like an app, with a tab bar and bottom sheets you can swipe away. On a computer it sits in the page with a sidebar and a search bar.
What building it taught me
- 01
Running something that must not stop
The private tool runs 24 hours a day on a small free-tier cloud server: a collector that reads the sources and a web app that shows them. Services restart themselves, a watchdog checks them every minute, and the data is backed up every night.
- 02
Shipping without breaking it
Every change is built and delivered automatically. The server checks the new version is healthy before switching to it, rolls back on its own if it is not, and restarts only the part that changed, so updates do not take the site down.
- 03
Data under pressure
One small database is written to by the collector while people read from it. I learned to keep writes short, batch new reports, and do the heavy work before taking the lock, which ended the moments when the site could not read while the collector was writing.
- 04
Turning reports into stories
Grouping articles about the same event across two languages, keeping one story to one event, and modelling who owns which outlet and who copies whom. That logic is the heart of both the private tool and this demo.
- 05
Collecting politely
Respecting each site's pace and access rules, and falling back to public search indexes when a site says no. Reliable collection turned out to be as much about manners as code.
- 06
AI with guardrails
Giving an assistant access to the news without letting it make things up: it answers from collected reports, cites them, labels anything it looked up, and has no power over the labels.
- 07
Accessibility as a requirement
Checked against WCAG AA in both themes with automated audits, and tested in real phone and desktop browsers, because a verification tool is only useful if it is easy to read.
What a label means
A label describes how much independent reporting agrees. It never says whether something is true. Well supported stories can still be wrong, and single-source stories are often right. The point is to know which is which before you pass it on.
Your data stays with you
The stories, outlets and city are made up for the demo. Follows, notes and watchlists are saved only in your own browser. Nothing you type is sent to me or anyone else, and Reset brings everything back to the start.
Count outlets, not articles.