River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Editorial Fact-Checking Checklist Template

A checklist verifies what you notice. This counts the assertions no source supports, the ones resting on one person, and the ones a document contradicts.

Free download  ·  No account needed

A fact checking checklist runs down the piece and verifies the things you notice: the names, the dates, the figures, the spellings. It cannot produce the one number that matters most, because the claims that go wrong are the ones that read perfectly and rest on nothing, and nothing in the prose marks them. This pack builds two registers instead, one row per assertion in the draft and one per source the reporter actually has, then joins them. The join reports four counts a read-through cannot produce at all.

It ships filled in for The Halstead Ledger, an invented paper checking a 2,400 word piece on an emergency housing contract. Sixty-one assertions against fourteen sources. Five had no source at all, and one of those was the nut graf. Eleven rested on a single source, five of them unnamed. Four were contradicted by something already in the file, starting with the contract value in the lede: the executed contract says $3,650,000, two amendments added $1,240,000, and the draft said $4.2 million.

Then the number only the join finds. One background source carried twenty-four of the sixty-one assertions, 39 percent of the piece, and five rested on that source alone. A withdrawal takes unsupported from five to ten without a word of the draft changing. Twenty claims needed a decision and twenty got one, with a name and a date against each. Open the pack in River and the agent builds both registers and runs the join, or download the blank sheets and work wherever you already do.

Sixty-one assertions, fourteen sources, four counts a read-through cannot produce

Every count is computed from the two registers beside it. Every figure in the contract row comes from the documents named in the row.

Assertion Register

The Halstead Ledger, an invented paper. Aldridge's emergency housing contract, 2,400 words, 61 assertions, one per 39 words. Twenty of the 61 rows shown.

IDWhereThe assertionSourcesBasisStatus
A-01LedeContract awarded to Northbrook in March 2024S-01, S-05DocumentVerified
A-04LedeAwarded without competitive tenderS-01, S-05DocumentVerified
A-07LedeThe contract is worth $4.2 millionS-01, S-04DocumentContradicted
A-08Nut grafTwo amendments raised the obligation to $4.89 millionS-01, S-02DocumentVerified
A-11Nut grafNobody at the city was monitoring occupancynoneNoneUnsupported
A-12BodyMonitoring reports filed late in 9 of 14 monthsS-01, S-03DocumentVerified
A-31BodyOccupancy never exceeded 62 percentS-07DatasetContradicted
A-32BodyOccupancy fell every month after the first inspectionS-07DatasetContradicted
A-33BodyThe pattern held across the whole contract periodS-07DatasetContradicted
A-41BodyResidents were told the placement was temporaryS-09, S-10On the recordVerified
A-46BodyProvider raised staffing to contract levels in NovemberS-06On the recordSingle-sourced
A-52BodyProvider had never run a shelter of this sizeS-03BackgroundSingle-sourced
A-55BodyOfficers were told to stop asking for the returnsS-03BackgroundSingle-sourced
A-59BodyThree other councils cancelled contracts with the providernoneNoneUnsupported
A-60BodyThe losing bidder's complaint was upheldS-12DocumentUnsupported
A-61KickerThe city intends to renew again next yearnoneNoneUnsupported

A-31, A-32 and A-33 are one sentence and three assertions against one dataset, contradicted for three unrelated reasons: the returns show 71 percent in one month, they are not monotonic, and two of the fourteen months have no return filed. Reading that sentence for plausibility finds nothing, because it is a plausible sentence.

What the join found

Four counts, computed by joining 61 assertions to 14 sources. None of them is available from a read-through.

1. Assertions no source supports: 5 of 61

Where it sitsCountWhy that matters
Nut graf1The paragraph the whole piece rests on
Kicker1The line the reader leaves with
Body3One of them the strongest paragraph in the draft, if true

2. Assertions resting on exactly one source: 11 of 61

Attribution basisCountWhat it can carry
On the record6Publishable attributed. All 6 rest on one interested party
On background5Has to survive being attributed to an unnamed person

3. Assertions a source contradicts: 4 of 61

The figureSourceAmount
Executed contractS-01$3,650,000
Amendments one and twoS-02+ $1,240,000
Actually obligatedS-01 + S-02$4,890,000
Council presentation subtotalS-04$4,200,000
What the draft saidnone$4,200,000

The presentation subtotal is the contract plus $550,000 of administrative costs that are not in the contract. The draft's figure matched neither the amount awarded nor the amount obligated, and understated the obligation by $690,000. It read like an ordinary well-sourced number.

4. Source concentration, and the withdrawal test

SourceBasisAssertionsShare of piece
S-01 executed contractPublic record3049.2%
S-03 former contract administratorBackground2439.3%
S-07 occupancy returnsPublic record1016.4%
S-13 state inspection reportsPublic record711.5%

If S-03 withdraws, 5 assertions lose their only support and 19 more lose one of theirs. The unsupported count goes from 5 to 10 in an afternoon, with no word of the draft changing. That is a fact about the structure of the piece, and working claim by claim in reading order never surfaces it.

Unverified Claim Log

The 20 assertions that did not verify, each with one decision, a named decider and a date. Open rows: 0.

DecisionRowsWhat it meansWhere it ended
Cut4Out of the piece, recorded anyway3 contradicted numbers and the kicker
Soften with attribution6Stays, with whose claim it is now visibleAgreed wording recorded on each row
Get a second source7Back out to reporting, named target5 came back verified, 2 did not
Publish on a named sign-off3An editor decided, by nameAll 3 attributed to the provider
Total2012 decided by the checker, 8 referred up0 left open

Where the 61 assertions ended up

OutcomeCount
Verified on the first pass41
Verified once a second source arrived5
Cut at the check4
Cut when no second source came2
Softened, attribution now visible6
Published on a named sign-off3
Total61
Still open at sign-off0

One of the two claims held out was the most serious in the draft: officers told to stop asking for the monitoring returns, on one background source with no document. Softening it was available and refused, because attributing an instruction claim to an unnamed person leaves the allegation standing and takes away the accountability for it.

What's in the pack

01

Assertion Register

One row per checkable claim, not per sentence, with the structural positions named. An unsourced claim in the nut graf is a different problem from one in paragraph nineteen, and a count that does not say where they sit hides both.

02

Source Register, with the column nobody keeps

Every source with its attribution basis and what it cannot support as well as what it can. A contract states what was agreed and says nothing about what was spent. That column is where the join gets its teeth.

03

The four counts

Assertions no source supports, assertions resting on exactly one source split by basis, assertions a source contradicts, and how much of the piece one source carries. Arithmetic rather than judgement, and reported before any line-by-line critique.

04

The withdrawal test

What your unsupported count becomes if the source carrying the most of the piece pulls out. In the worked example it goes from five to ten, and no sentence in the draft shows it.

05

Unverified Claim Log

Four decisions, one per row, with a name and a date: cut, soften with attribution, get a second source, or publish on a named sign-off. Worked to zero open rows rather than to zero flags.

06

Annotated Draft and Query List

The same findings arranged for the person revising, plus seventeen queries split into what the writer can answer and what needs a source rung up again. Those are different work and they get scheduled differently. For an outside contributor they are also desk hours somebody is paying for, which the freelance pack prices.

07

Sign-off Record

What was checked, where it landed, what could not be established, and who decided the difference. Signed by a named person before publication, and the signer is never the checker.

08

A space rule every prompt reads first

Grade against the source material rather than against plausibility, never count one source twice, read the document rather than somebody's description of it, and never let a claim through undecided.

How to use it

  1. 1

    Open in River, or download it

    Open the pack and let the agent build both registers, or download the blank sheets and docs. The template library holds the rest.

  2. 2

    Send the sources, not just the draft

    A space holding only the draft can grade on plausibility and nothing else. Recordings, documents, spreadsheets and emails, with each person's attribution basis.

  3. 3

    Extract before you verify

    Every assertion comes out first, in register order. Reading the draft beside its sources is how a check quietly starts skimming after four paragraphs.

  4. 4

    Then decide, one row at a time

    Read the four counts, then work every unverified row to a decision with a name on it. A flag is a note, and notes lose to deadlines.

Frequently asked questions

Is this template free?

Yes. Download the whole pack as Word documents and CSV sheets, no signup and no credit card. "Edit with AI" is a separate, optional path for anyone who wants the agent to build the registers and run the join. Nothing happens until you send it a draft and its sources.

How is this different from a fact checking checklist?

A checklist verifies the items you notice, in reading order. This joins two lists and produces counts across the whole piece, including the count of assertions no source supports. Nothing in a well written unsourced sentence marks it, so no amount of careful reading brings that number out.

Why does it need the source material and not just the draft?

Because grading a claim without its sources is grading it on plausibility, and plausibility is exactly what a well written unsupported claim has. Where the file is thin, the finding is that the file is thin, which is more useful than an answer assembled from elsewhere and credited to reporting nobody did.

What counts as a single-sourced claim worth escalating?

The attribution basis decides it. One named source on the record is publishable with attribution. One unnamed source carrying a serious allegation is a category of its own: the BBC's accuracy guidelines make that a mandatory referral to editorial policy and legal advice rather than a matter of taste.

Can a claim publish without being verified?

Yes, on a named sign-off, and that is a legitimate outcome. The failure is publishing because nobody decided. Reuters puts the related trap plainly in its standards and values: never cite sources in the plural when you have only one.

Does it work for a piece built on documents rather than interviews?

That is the easier case, because a primary document can verify a claim on its own. If the documents are still being fought for, the FOIA request pack files the request and counts the statutory deadline. When two documents disagree, conflicting report reconciliation works out which figure the records support.

Where does this sit in the workflow?

After the reporting and before the edit closes, on a date the editorial calendar can work backwards from. On a story built from tape, interview transcript workup produces the quote bank with timecodes this pass grades against. Style is separate: copyedit and style rules on how the paper writes. Where a claim is also legally risky, legal review prep ranks it for counsel separately.

Count what nothing supports

Download the blank registers and docs as Word and CSV files, or open this exact pack in River and let the agent run the join for you.

Edit with AI