---
name: fact-check
description: Fact-check an article, report or any text before publishing by having a second, independent reviewer verify every claim against its source. Findings are graded P1 (false), P2 (inaccurate, outdated or unsupported) and P3 (wording); fix and repeat until no P1 or P2 remain. Use when the user asks to fact-check, verify, review claims or check a draft before publishing.
argument-hint: "[path to the draft]"
---

# Fact-check with a second reviewer

A model that wrote a text is bad at catching its own mistakes: it reads what it meant, not what it wrote. So the check is done by a second reviewer that did not write the text: another model through its CLI if one is installed, otherwise a fresh subagent that gets only the draft and the instructions below, never the conversation that produced the draft.

## 1. Prepare the check

Create a folder `factcheck/` next to the draft. Write the reviewer's instructions to `factcheck/prompt-1.txt`:

- the path to the draft and today's date;
- "read-only review, do not edit files";
- "open the source pages; do not answer from memory. If a page blocks you, say 'not confirmed' instead of 'false'";
- what to check, as a numbered list (see below);
- the answer format: a list of findings, each with the grade, the exact quote, what is wrong, the correct fact and the source URL or file.

What to check, adapted to the text:

1. Every number, price, limit, date, version and name against the page that states it, as of today.
2. "Can / can't / supports" claims against the product's help or documentation page, not an announcement or a third-party review.
3. Quotes: exact wording and who said it.
4. Research numbers against the original paper, not a news story about it.
5. Your own test data, if the text reports one: every number against the raw files. Flag any conclusion broader than the test.
6. Claims presented as your own experience that the raw data doesn't support.
7. The title, description and image captions: they must not claim more than the body.
8. Anything important a reader would expect and the text misses.

Grades:
- **P1**: false. The source says something different.
- **P2**: inaccurate, outdated, unsupported by the cited source, or an overstatement.
- **P3**: wording that could mislead, but the fact is right.

## 2. Run the reviewer

With a second model CLI (examples; use whatever is installed):

```bash
codex exec --skip-git-repo-check -s read-only -C <folder> - < factcheck/prompt-1.txt > factcheck/round-1.log 2>&1
gemini -p "$(cat factcheck/prompt-1.txt)" > factcheck/round-1.log 2>&1
```

Give it web access if the CLI supports it (for example `codex --search exec ...`). A round usually takes 5 to 15 minutes, so run it in the background.

Without a second CLI: start a subagent with only the prompt file's content. Tell it to use web fetch for every source.

Save the reviewer's final answer to `factcheck/round-1.md`.

## 3. Fix

- Fix every P1 and P2 in the draft. Don't argue with a finding in your head: open the source yourself if you disagree, and keep the version the source supports.
- If the reviewer marked something "not confirmed" because a page was blocked, confirm it another way (a browser, a cached copy) or remove the claim.
- P3: fix when it makes the text clearer.
- Record what you changed, as old → new pairs, in `factcheck/fixes-round-1.md`, and what you left unchanged and why.

## 4. Repeat until clean

Round 2 uses the same instructions plus: "round 1 findings are in round-1.md, the fixes in fixes-round-1.md. Check that each P1 and P2 was fixed correctly and that the new wording introduced no new errors." The first line of the answer must be `P1: N, P2: N`.

Continue with narrow rounds (only the previous findings and the changed sentences) until P1 and P2 are both zero. If round 3 is still not clean, stop and list the disputed claims for the user instead of publishing.

## What usually goes wrong

- Prices: monthly vs billed yearly, currency shown by region, a plan renamed last month.
- Limits: "free" with a monthly cap, limits that differ by plan or country.
- A claim sourced from an overview or marketing page when the help page says otherwise.
- Numbers rounded in one place and exact in another.
- "We tested" wording for things that weren't tested, and conclusions from one small test stated as general facts.
- Superlatives ("the best", "the most generous") that the data doesn't support.
- A fix that corrects one sentence but leaves the same claim elsewhere in the text (the FAQ, the summary, image captions).
