Loading the record
United States edition
October 15, 2026
See the evidence. Decide for yourself.
Loading the record
How a rating is made
United States politics only. We rate a specific claim. We do not rate a party, an outlet, or the person reading the page.
Coverage stops at the United States. A story needs a US political claim, a left-leaning US report, a right-leaning US report, and a public US record: BLS, CBO, Census, Treasury, FEC, or another official table. World news, foreign elections, and international wires are out, even when they mention Washington.
A story starts with one sentence someone can agree or disagree with. The verdict uses the public record those reports are talking about. The rating is an argument with the links left in. Every verdict also carries one sentence that starts “Sourced from [linked outlet], …” so the label is tied to a page, not to a vibe.
The verdict lists only show stories with both a left-leaning and a right-leaning report from different outlets. Schedules, event listings, and announcements, where nothing contested gets checked, are not published.
Stories are not the output of a news API. Where a clause could not be re-checked against a primary table, the story says so in “What this check did not verify.”
These are labels, not a score. Unproven is not a softer true. Lie is not a step the pipeline may take on its own. The headline is the large type on a story. The sentence under it names the linked source.
| Label | According to the linked source | When it is used |
|---|---|---|
| LieThe claim was false, and the record shows intent. | Sourced from [linked outlet], the claim conflicts with the record and there is evidence it was made knowing that. | Only with evidence of intent. The pipeline never auto-publishes LIE. It holds the item and shows FALSE until the owner says OK. |
| FalseThis doesn't match the data. | Sourced from [linked outlet], this doesn't match the data. | The claim conflicts with the cited record. A central fact is wrong. |
| MisleadingThe numbers are real. The conclusion isn't. | Sourced from [linked outlet], the numbers are real and the conclusion isn't. | The cited figures check out, and the way they are assembled points the wrong way. |
| Mostly falseThe central claim doesn't hold. | Sourced from [linked outlet], the central claim doesn't hold. | A detail may be real, but the main assertion does not survive the record. |
| Half truePart of this checks out. Part doesn't. | Sourced from [linked outlet], part of this checks out and a material part does not. | One reading of the claim matches the record. Another reading, the one a reader would take from the wording, does not. |
| Mostly trueThe main point holds, with a caveat. | Sourced from [linked outlet], the main point holds, with a caveat. | The central comparison or fact holds. A qualifier still belongs with it. |
| TrueThis matches the public record. | Sourced from [linked outlet], this matches the public record. | The claim lines up with the cited primary source, including its scope and time period. |
| UnprovenThe record does not settle this. | Sourced from [linked outlet], the public record does not settle this claim. | The available primary source does not confirm or refute the claim. This is not a soft true. |
LIE is not a synonym for FALSE. It requires evidence the claim was made knowing it was false. The autonomous pipeline never publishes LIE. decidePublication in lib/ingest/publish.ts holds the item and keeps the public label at FALSE until the owner says OK. A false claim with no evidence of intent stays FALSE.
Verdicts name what the claim does. They do not insult the reader, the reporter, or the audience of either outlet. “Misleading” means the cited numbers are real and the conclusion does not follow. “Half true” means one reading matches the record and the reading the wording invites does not. “Mostly true” keeps the caveat on the page. “Unproven” means the record does not settle it.
Outlets are tagged on a five-point scale in the style of AllSides and Ad Fontes: left, lean left, center, lean right, right. The tags in this edition are a local seed map, assigned by hand. They are not a live score from either company, and they are not a measure of whether a particular article is accurate.
The map lives in content/bias-map.ts. A licensed feed can replace it later. Until then, an unrecognized outlet is a gap, not a guess the site hides.
Each story has a section for the places the two reports diverge from each other or from the record. If both sides quote the same number and only the adjectives differ, the section says that. Inventing a clash is the same failure as inventing a quote.
Story pages include schema.org ClaimReview markup: the claim, the rating’s name, the “Sourced from [linked outlet], …” sentence, and the URL of this review. There is no numeric score. The labels are not a ladder from false to true. Search engines may ignore the markup. The page still has to make sense without it.
There is no paid news API. The gather step reads official RSS or Atom feeds from US outlets, left and right. The identifying agent is FuckedPoliticsBot/0.1. It requests at most one page a second per host, reads robots.txt before the feed, and stops when the path is disallowed. It does not log in, pass a paywall, or solve a bot check. HTML is not a fallback. Full feed text stays inside the gather step. A published card gets a headline, a short quote a person copied, and a link.
A cluster needs at least one left or lean-left article and one right or lean-right article, published within 24 hours of each other, with headline tokens that overlap. World and international paths are dropped even when a feed includes them. Each outlet has a health check: the feed has to answer, the newest item has to be from the last seven days, and robots.txt has to allow the path. A stale or blocked outlet is off the default list in lib/ingest/outlets.ts.
Eligible clusters are scored, and the top 40 are kept. If fewer than 15 clusters have both sides, the edition keeps every eligible cluster and records the shortfall. The score is
0.45 × breadth + 0.25 × most-read + 0.20 × Wikipedia + 0.10 × Trends
X and Reddit are not read. A draft from this score still has no verdict. LIE is never auto-published.
Every story ends with a “Challenge this verdict” form. Submissions are queued and reviewed with AI assistance, not by an independent human, and never change a story on their own. Accepted corrections are listed on the corrections page.