River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Investigative Journalism Timeline Template

Two documents and four sheets that key every chronology row to its evidence and count independent sources, so one leaker cannot read as three.

Free download  ·  No account needed

Every guide to an investigative chronology asks for one row per event and a source citation on each row, and every one of them states the standard: be reluctant to rest anything contested on a single source. Not one of them defines what makes two sources two. So nothing checks it, and independence ends up asserted in the reporter's head rather than written down. Three memos from one leaker is one source. Four people who were all at the same briefing is one source.

So every item in this pack carries two fields instead of one. The route is how it reached you, which is what a lawyer asks about first. The origin is the single point of failure behind it, which is what makes the arithmetic possible. It ships filled in for a 14-month investigation by the Cordell Review, an invented paper, into why the Marleigh State Board of Water Resources renewed a testing contract three times after its own staff reported the contractor was altering results.

Of 143 chronology events, 58 are contested. They average 2.43 pieces of evidence each and 43 carry two or more, which is what a finished file looks like. Collapsed to origins, 23 do. Counted against what can be used in print, 19 do. Seventeen have no publishable origin at all: twelve resting on one leaker's unauthenticated documents, five on another paper's reporting. That last group is not a caveat to write. It is a records request to file.

Eleven spine events, three of them unpublishable

The Chronology, the corroboration count from the Evidence Standard Note, and the Relationship Map.

Chronology, the spine only

The Cordell Review, an invented paper. Board of Water Resources and Ledbetter Environmental, 14 months of reporting. The 11 events of 143 that the central claim cannot survive without.

EventDateWhat happenedItemsOriginsIn print
C-0012019-11-04A Ledbetter lab technician reports altered coliform results to the Division111
C-0862019-11-19Voss is forwarded it and writes that the Division will handle it internally310
C-0872020-06-08Voss instructs staff not to open a compliance file before the renewal310
C-0292020-07-01First renewal signed, $4.1m222
C-0022021-02-12The complaint is referred to the Inspector General, 15 months later111
C-0882022-05-03Voss is told the chain-of-custody forms do not match the bench sheets310
C-0302022-07-01Second renewal signed, $5.6m222
C-0982024-06-24The renewal memo records an unresolved sample-integrity question222
C-0312024-07-01Third renewal signed, $6.9m222
C-1072025-03-12Voss tells a closed briefing the Board will not re-test archived samples411
C-1082025-03-12The compliance lead says the 2019 complaint was never logged in the case system411

Four of the eleven carry two publishable origins, four carry exactly one, and three carry none. The three are the same thing said three ways: what one deputy director knew, on three documents each, all from one custodian, none of them authenticated. Nothing in an item count finds that, because by item those three are the best-sourced rows on the spine.

Corroboration, counted three ways

Over the 58 contested events only. An event is contested if it is about knowledge, intent or what was said. A signed contract with the instrument in the file is not, and demanding two origins for it wastes a week.

Counted over the 58 contested eventsEvents
Two or more evidence items43
Two or more independent origins23
Two or more publishable origins19
Exactly one publishable origin22
No publishable origin at all17

Where the twenty went

 EventsItems eachOrigins
Three documents from one leaker1231
Four accounts of one briefing841

What each origin is carrying

OriginContested events citing itSole origin for
Source 07, internal document set2512
Records request BWR-2025-0412150
On-record interviews, 8 people137
The 12 March 2025 briefing128
Prior reporting by another paper55

The item count is not lying. The contested events really do carry 2.43 pieces of evidence each, and any reporter would call that file well sourced. Collapse the citations to origins and 20 of the 43 vanish. Nine events survive losing Source 07 completely, because the agency produced the same 14 documents under the records request, and that is the entire argument for asking an agency for a document you are already holding.

Relationship Map

The origin field records what the reporter believed when the item was logged, so it is exactly as good as that belief. This is the pass that checks it. Every edge cites the register item that establishes it.

EdgeFromEffect on independence
Division hydrologist attended the 12 Mar 2025 briefingE-179One of four accounts of one room
Compliance analyst attended the same briefingE-180One of four accounts of one room
Contracts officer attended the same briefingE-181One of four accounts of one room
Lab liaison attended the same briefingE-182One of four accounts of one room
Compliance analyst reports to Garrett VossE-014Not independent of a subject
Lab liaison reports to Garrett VossE-014Not independent of a subject
Ledbetter's regional manager worked at the Board to 2017E-113Regulator to contractor before the first award

Before the map, and after it

 OriginsEventsSole support for
As logged, four background sources4120
After the map, one briefing1128

The threads the arithmetic wrote

ThreadNext actionEvents fixedOn spine
T-01Name the 24 unproduced leaked documents by title, date, author and recipient in a follow-up request123
T-02Ask for the calendar entry, agenda and circulated notes for 12 Mar 202582

The register held those four accounts as four separate origins for two months. They were four people in one room, and collapsing them took 12 contested events from apparently four-sourced to single-sourced, two of them on the spine. No field in the register said so. The edge list is where it showed, and the count was re-run the same afternoon.

What's in the pack

01

Evidence Register, two fields not one

One row per item, with the route it arrived by and the origin key behind it. Plus what it can be used for in print, what authenticates it, and every event citing it. The origin key is the field the arithmetic runs on.

02

Chronology, with three corroboration columns

One row per event, contested or established by record, carrying the item count, the independent origin count and the publishable origin count side by side. When those three numbers disagree, the row says so instead of the reporter remembering.

03

Relationship Map, as an edge list

Not a picture. One row per relationship, each citing the register item that establishes it, with a column for what the edge does to independence. This is where four background sources turn out to be one briefing.

04

Open Thread Log, sorted by what it fixes

Every event under two publishable origins becomes a thread with a named next action, the count of events it would fix, whether it touches the spine, its cost, and one line on what the piece concedes if it never closes.

05

Chronology Narrative, publishable rows only

The sequence written as prose from rows that have a publishable origin, with the 17 that have none marked in place rather than quietly skipped. Where the narrative stops making sense is where the reporting is thin.

06

Evidence Standard Note, for the legal read

The document to hand an editor or a lawyer before either reads a draft: the standard, how independence is measured, the three counts, what each route can be used for, and every dependency named.

07

A space rule every prompt reads first

Two items from one origin are one item. Contested events are separated from events a record establishes. Publishability is a third count. The map checks the origin field. And nothing here checks the draft.

How to use it

  1. 1

    Open in River, or download it

    Open the pack and send whatever exists, in whatever state, or download the blank register and sheets and work where you already do. The template library holds the rest.

  2. 2

    Log the route and the origin

    Two fields on every item. The route is how it reached you. The origin is the single point of failure behind it, keyed so that everything sharing one gets the same key.

  3. 3

    Count three ways, over contested events only

    By item, by independent origin, and by origin you could use in print. Then per origin: how many events cite it and how many rest on it alone. Do this in month three, not the week before the legal read.

  4. 4

    Build the map, then re-run the count

    The origin field is a belief, and the edge list is what checks it. Every collapse you find changes the arithmetic, and each event still under two publishable origins becomes a thread with a named next action.

Frequently asked questions

Is this template free?

Yes. Download the register, chronology, map and thread log as CSV files and the two documents as Word files, with no signup. "Edit with AI" is the optional path if you want the agent to build the register from what you have and keep the counts current as it grows.

Why not just count sources per event like every other template?

Because the count is wrong in the direction that matters. On the worked file 43 of 58 contested events carry two or more pieces of evidence and 23 carry two or more independent origins. Twenty events pass the standard on paper and fail it in fact, and every one of them looks fine in a source-count column.

What actually counts as one origin?

One single point of failure. One records request however many documents came back, one leaker however many they handed over, one meeting however many attendees described it separately. A subject's statement and a trade write-up of that statement are one. Two people who both heard it from the same third person are one.

Why is publishability a separate count from independence?

Because an origin can be independent and still unusable. A document given for guidance only is binding: the Supreme Court held that a promise to a source is enforceable against a publisher. Another paper's reporting is a lead, not your finding. So count origins, then count the ones you could print.

Does the count really change anything a lawyer would care about?

It changes the posture directly. The Reporters Committee's guide to pre-publication review is explicit that where libel risk is high you want public records or sources willing to go on the record, and that an inability to name a confidential source can hamper a defence. That is the publishable-origin column, in legal terms.

Why ask an agency for a leaked document you already have?

Because production authenticates it. Fourteen of the 38 leaked documents on the worked file also came back under the request, and those 14 carry nine events with two publishable origins each. Federal FOIA regulations require a requester to describe records in sufficient detail to locate them, and a document in your hand describes itself.

Where does this sit in the rest of the reporting?

Beside it. The FOIA request pack files the requests this log keeps generating, and document dump triage handles the unstructured half of a release. The dataset cleaning and analysis packs take the structured half, the source pack holds attribution terms, the fact check pack checks the draft, and finding verification puts each finding to the subject before it runs.

Find out what your file is really sourced on

Download the blank evidence register, chronology, relationship map and thread log, or open this exact pack in River and send it what you have so far.

Edit with AI