bibguard — Catching Hallucinated Citations Before Submission
One command verifies every reference in a .bib file against five scholarly databases, catching phantom DOIs, fabricated arXiv IDs, author mismatches and retracted papers. Published to PyPI and npm, with a desktop app and a browser extension.
// DESCRIPTION
LLMs hallucinate citations, copy-paste corrupts metadata, and
retracted papers slip through review. bibguard catches all three before submission
rather than after.
pip install bibguard # Python
npx bibguard paper.bib # Node.js, zero install
What it checks
- Five sources — arXiv, Crossref, DBLP, Semantic Scholar, OpenAlex
- Phantom ID detection — a well-formed DOI or arXiv ID that does not resolve is itself the hallucination signal
- Kill-shot logic — a phantom ID cannot be talked out of by a similar-looking search result, which is the failure mode of naive fuzzy matching
- TeX cross-audit —
\cite{key}with no entry, and orphan entries never cited - Duplicate detection — near-identical entries under different keys
- Auto-fix — emits a corrected
.bibwith missing DOIs and eprint IDs filled in - Type-aware —
@misc/@onlineentries do not false-alarm as hallucinated
Shipped as four front ends
A Python CLI (PyPI), an npm package for CI pipelines, a Tauri desktop app with
.dmg/.msi/.AppImage builds, and a Chrome/Firefox extension
for checking citations while browsing. Core requires only requests and
bibtexparser.
It has caught real defects
On the finished CIKM 2026 camera-ready, bibguard found a bibliography entry with a fabricated author list — the first author's surname wrong and five of six co-authors not authors of that paper — plus an uncited duplicate of the same DOI. Both were replaced with Crossref's canonical record. See The Recall Ceiling.
For the heavier semantic stack — NLI entailment and Bayesian scoring across five layers — see IntegriRef, the NLPCC 2026 paper this tool grew out of.
// HIGHLIGHTS
- Published to PyPI and npm; desktop app and browser extension alongside
- Cross-checks five scholarly databases in one command
- Phantom-ID kill-shot logic: a non-resolving well-formed ID cannot be overridden
- Caught a fabricated author list in a real camera-ready bibliography
- 200-case validation benchmark; Apache-2.0