Disinfo Verify — On-Demand Fact-Checking
On-demand verification of a piece of text, a URL or an image against the archive of fact-checks already published by fact-checking organizations. The request joins a queue, the result is written back into the same document and gets a permalink — the verification becomes a piece you can file away, not a screen that disappears.
Overview
The archive held 98,818 indexed fact-checks as measured on 26 July 2026, assembled through three independent channels: Data Commons, the Google Fact Check Tools API across 14 fact-checking domains, and seven RSS feeds. Collection runs daily at 05:00.
Matching is lexical and auditable. The search retrieves candidate fact-checks, and confidence comes from term overlap weighted by rarity: a rare term counts for more than a common one. There are two thresholds — above 0.55 the system decides, between 0.38 and 0.55 it flags the item for human review, and below that it asserts nothing. There are also anti-false-positive floors: at least three content terms in common, and at most five fact-checks displayed out of forty retrieved.
The abstention zone is not rhetorical modesty. The precision of lexical matching was measured against a set of 246 labeled pairs and does not go beyond 17% at its best operating point — which is why the system shows the terms that matched and keeps the decision visible, instead of hiding the method behind a badge.
Inputs and Outputs
- Free text — a conservative label with four possible values (“debunked by a fact-check”, “related fact-check found”, “indication — requires human review”, “no match”), an explanation, the fact-checks that matched along with the terms they share, and the “In fact” block carrying the correction as written by the fact-checking organization itself. Where the organization published no correction, the block does not appear — the sentence is never derived from the claim.
- URL — the same output, with the title recovered from the archive, from the downloaded page or from a copy held by the Internet Archive, plus how far the content has circulated on the monitored networks. The URL’s identity is the hash of its canonical form, with tracking parameters stripped, so that the same story shared from ten campaigns remains a single document.
- Image (JPEG, PNG, WebP, AVIF, GIF) — declared provenance (EXIF, XMP, IPTC and detection of the C2PA container), the image’s history in the archive by sha256 and by pHash, five pixel-forensics indicators with range and percentiles, reverse web search and a transcription of any overlaid text.
Engineering Decisions
Language filtering with abstention. Without the filter, 9.0% of candidates came back in another language; with it, none. But the detector declares itself uncertain on 27.5% of queries — and in those cases the filter is switched off, rather than discarding a legitimate candidate on a weak guess.
pHash with a mirrored hash. The perceptual hash recognizes the same image after recompression or resizing. Because flipping an image horizontally produces maximum distance, the platform also stores the hash of the mirrored image — eight extra bytes that head off the most common false negative in recycled imagery.
Forensics stratified by compression. Of the 37 pixel indicators measured, five were published: the ones that survived four simultaneous gates, among them robustness to recompression and the absence of bias by outlet. The ranges are stratified by the JPEG quantization table, so that the indicator measures the image and not the newsroom that published it.
A hostile intake gate. File type detected from the bytes, ceilings on size and megapixels, decompression bombs refused by reading the header before decoding, SVG refused for not being pictorial, and SSRF protection on URL fetches: DNS resolved up front, refusal if any IP is private, and at most three redirects, each revalidated at every hop.
Capabilities
- An archive of fact-checking organizations with verdicts normalized into six canonical classes
- A declared abstention zone, with the matched terms always visible
- A mandatory “what could not be determined” section, drawn from a closed vocabulary of 17 reasons
- A signed human verdict, restricted to five options enforced by a database constraint, across four publication states
- Coordination and amplification signals calibrated against a null model, over seven normalized networks
Use Cases
- Check a claim received in a message or published in the press before responding to it
- Find out whether an image has circulated before, in which outlets and since when
- Preserve the verification with a permalink, the evidence and a trail of how it was produced
- Prioritize the review queue of a communications, legal or fact-checking team
What the System Does Not Do
- It issues no automatic true-or-false verdict. The language model is instructed never to rule on veracity, and a ten-pattern lock blocks any output field that looks like a badge of authenticity.
- It accepts neither video nor audio — only text, URLs and the five image formats listed above.
- It does not classify an image as AI-generated: there is no calibrated classifier, and the model’s visual reading is presented as an opinion, with both supporting and contradicting indications.
- It does not validate C2PA credentials; it detects the presence of the container and states that it has not verified the signature.
- It does not label an account as a bot, does not recognize faces and does not geolocate images.
- “No match” is never presented as “true”.
Integrations
- Google Fact Check Tools API, Data Commons and RSS feeds from fact-checking organizations
- Internet Archive, Google Cloud Vision (licensed reverse search, not scraping)
- OpenSearch, MinIO / Amazon S3
SLA & Guarantees
Queue drained every 10 minutes · image verdicts only through a signed human assessment