# receipts: Automated Citation Verification for Claude Code

> **Open source · MIT · npm: receiptscc · runs inside Claude Code**
> GPTZero tells you whether a citation is *real*. receipts tells you whether it is *right*: it reads your paper and the PDFs you cited, then flags every place the manuscript claims something the source does not actually say.

**A Claude Code tool by James Weatherhead.** Runs in your terminal, one command, roughly $0.50 to $5 per paper.

| | |
|---|---|
| Install footprint | **29 tokens** in Claude Code |
| Command | **/receipts** |
| Cost per paper | **~$0.50 to $5** |
| License | **MIT**, cross-platform (Mac, Windows, Linux) |

- Code on GitHub: https://github.com/JamesWeatherhead/receipts
- npm package: https://www.npmjs.com/package/receiptscc
- Example verdicts: https://github.com/JamesWeatherhead/receipts/tree/main/demo/verdicts

---

A hundred hallucinated citations made headlines at NeurIPS. The quieter problem is the citations that are real but wrong: the paper exists, and it doesn't say what you claimed it said. receipts is a small tool I built for that unglamorous chore, checking a manuscript's citations against their sources before a reviewer finds out they don't match. It runs inside [Claude Code](https://docs.anthropic.com/en/docs/claude-code), Anthropic's terminal assistant, and is open source under the MIT license.

## The problem nobody counts

In early 2026, GPTZero reported [100 hallucinated citations across 51 papers](https://techcrunch.com/2026/01/21/irony-alert-hallucinated-citations-found-in-papers-from-neurips-the-prestigious-ai-conference/) at NeurIPS 2024. Those are the **fake** ones: references to work that does not exist. They are the easy case, because a reference either resolves or it doesn't.

Nobody is counting the harder case: the **real** papers that don't say what the author claims.

Your manuscript says: *"Smith et al. achieved 99% accuracy on all benchmarks."*

The actual paper says: *"We achieve 73% accuracy on the standard benchmark."*

That isn't fraud. It's human memory, plus exhaustion, plus LLM assistance, adding up to systematic misquotation. receipts is built to catch it before your reviewers do.

## What it does

Give it your paper. Give it the PDFs you cited. It reads both, then tells you what's wrong. There is no upload and no web service: it works on the files in a folder on your machine, through Claude Code, for roughly **$0.50 to $5 per paper**.

For every citation it returns a verdict, and for anything that needs fixing it puts the exact manuscript sentence next to the exact source sentence, with the correction spelled out.

### The three verdicts

| Verdict | Meaning |
|---|---|
| **VALID** | The citation is accurate. Nothing to do. |
| **ADJUST** | A small fix (a number, a qualifier) brings the sentence back in line with the source. |
| **INVALID** | The source does not support the claim. |

A real verdict from the project's demo set, where the cited paper is genuine but the manuscript quietly overstated it:

```
Reference 1: ADJUST   (Srivastava et al., "Dropout", JMLR)

  Manuscript claims:
    "the optimal dropout probability is p=0.5 for ALL layers"

  Source states:
    "p=0.5 for hidden units and p=0.8 for input units"

  Assessment: NOT SUPPORTED

  Required correction:
    "p=0.5 for all layers"
        becomes
    "p=0.5 for hidden units, p=0.8 for input units"
```

## How to run it

receipts installs as a command *inside* Claude Code and adds almost nothing to your context. You need Node.js and either an Anthropic API key or a Claude Pro/Max plan.

1. **Install Claude Code.** `npm install -g @anthropic-ai/claude-code`
2. **Install the command.** `npx receiptscc`, once. You'll see a receipt banner when it works.
3. **Set up a folder.** Put your paper in a folder, with the PDFs you cited in a `sources` subfolder.
4. **Run it.** From that folder, start Claude Code with `claude`, then type `/receipts`.
5. **Read the results.** receipts writes a `RECEIPTS.md` file: a verdict for every citation, with the fixes.

```
thesis/
    my_paper.pdf          your manuscript (any name)
    sources/              the PDFs you cited
        smith_2020.pdf
        jones_2021.pdf
        chen_2019.pdf
```

The `/receipts` command only works inside Claude Code. If you type it in a plain terminal, it won't run: start `claude` first.

## Built to be cheap and light

The install footprint is **29 tokens**: a 13-token command definition plus a 16-token verifier-agent template. That's the entire permanent cost to your Claude Code context. The actual checking runs on Claude's normal token budget, which is where the per-paper cost comes from, so you can run a cheap model on drafts and a stronger one on the final submission.

| Paper | Citations | Haiku | Sonnet | Opus |
|---|---|---|---|---|
| Short | 10 | ~$0.50 | ~$2 | ~$9 |
| Medium | 25 | ~$1.30 | ~$5 | ~$24 |
| Full | 50 | ~$3 | ~$11 | ~$56 |

*Approximate cost per paper, from the project README. Haiku for drafts, Opus for the final pass.*

## Why I built it

I'm an MD/PhD candidate, and I got tired of re-checking citations by hand at 2am before deadlines. The same discipline runs through my [research on trustworthy clinical AI](https://james.jcweatherhead.com/research/): a model's output is only worth as much as what you can verify it against. receipts is that check, turned into one command, aimed at the moment where it's cheapest to fix a mistake, before anyone else reads it.

---

*receipts is an open-source research tool, not legal advice. You are responsible for having the right to upload and process the documents you check, including compliance with copyright, publisher terms, and institutional policy. The tool is provided "as is," and its use is also subject to Anthropic's terms of service.*

## More builds

- **[VibeRad](/viberad/)**: AI radiology teaching assistant; Google DeepMind Gemini 3 Pro hackathon winner.
- **[Local PHI Scrubber](/local-phi-scrubber/)**: On-device, human-in-the-loop PHI redaction with small language models; AMIA 2026 oral.
- **[AutoTox](/autotox/)**: AI toxicology interpretation deployed in UTMB clinical pathology; 66% faster sign-out.
