I audited the sources my AI fact-checker was citing. About 1 in 18 didn’t exist.
I audited the sources my AI fact-checker was citing. About 1 in 18 didn’t exist.

I audited the sources my AI fact-checker was citing. About 1 in 18 didn’t exist.

I've spent a while building a fact-checking pipeline, and I finally did a boring thing I should have done sooner: I took every source URL the system had cited across a batch of checks and just tested whether the pages actually existed.

About 1 in 18 (12 of 215) were dead or had never existed. Sequential-looking article IDs, a wikipedia subdomain that isn't a real thing, a couple of pages on real, reputable domains that 404'd. The part that actually worried me: several of those were sources the system had rated as top-tier. So the verdict looked well-sourced and authoritative, and the "proof" underneath was partly invented.

Root cause was dumb in hindsight. The model was writing the citation list itself as part of its JSON output, and that list was being trusted as-is. The API could return the actually-retrieved sources, but the displayed citations were whatever the model wrote, and nothing checked that those URLs resolved before showing them. A fabricated citation on a real domain sails straight through, because the domain is trustworthy even when the specific page is fiction.

What actually fixed it, in case it's useful to anyone building this:

- Stop trusting the model's own citation list. Use the URLs the retrieval layer actually returned, and treat anything the model adds on top as unverified until proven otherwise.

- Constrain the model to cite only from the retrieved set, and keep the extraction/attribution step at low temperature. Most fabricated citations come from letting the model free-associate sources instead of quoting the ones in front of it.

- Probe every URL before it's ever shown (does it resolve, does the page still actually contain the claim) and drop the ones that don't.

- Score the source's reliability separately, so a fabricated page on a reputable domain can't inherit that domain's trust.

- Test models for citation-faithfulness, not just answer quality. Some fabricate references far more than others, and the "smartest" model isn't always the most grounded one.

Two things I took away, for anyone building or just trusting these tools:

- "The model cited it" and "the source exists" are completely different claims. Check the second one.

- A confident verdict with no source you can open and verify isn't a fact-check, it's autocomplete with footnotes.

Curious if others working on retrieval/verification have measured their own dead-citation rate. I suspect it's way more common than anyone admits, especially in the current wave of live "AI fact-checker" tools.

(Disclosure: I build a verification tool, so this is self-interested navel-gazing, but the dead-link problem is real regardless of what you use.)

submitted by /u/jonathancheckwise
[link] [comments]