River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Journalist Source and Contact Tracking

Every source tracker stores one attribution basis per person. That column is wrong the first time somebody who was on the record moves to background.

Free download  ·  No account needed

Attribution terms are not given by people. They are given in conversations. A source who spoke on the record in March and moved to background in June has given two different permissions, and the March quotes are still on the record. One column next to a phone number cannot hold that, and whichever way it resolves the conflict it answers wrongly. So this pack keeps terms on the conversation: one row per conversation, and a source register with no basis column at all.

It ships filled in for one reporter's beat file at The Cordell Review, an invented paper: 63 sources, 148 conversations, 412 quotes over fourteen months. Seventeen of those sources carry more than one basis across their own conversations. Grade the quotes by each source's most recent basis and 65 get marked publishable by name on terms nobody agreed to. Grade them by each source's most restrictive basis and 63 usable quotes get thrown away. Per conversation is wrong nought times.

The other half is the promises that have nothing to do with attribution. Quote review before publication, not approaching an employer, holding until a date, sending the piece when it runs. Forty-one of the 148 conversations carried one, six were past their date, and five of those six were the same promise. 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.

One source, three conversations, three different permissions

Every count is computed from the two registers. The quote grades come from the terms of each conversation rather than from anything on the contact record.

Attribution Terms

The Cordell Review, an invented paper. One reporter's beat file: 63 sources, 148 conversations, 412 quotes. One row per conversation, never per person.

ConvSourceDateTerms agreedAgreed descriptionEstablishedQuotes
C-004S-022025-03-11On the recordNamedStated by the source14
C-019S-022025-06-24On backgroundNot quotableStated by the source9
C-041S-022025-09-02Not for attribution"A county employee involved in the procurement"Offered, then narrowed by the source6
C-023S-112025-07-08Assumed, never statedUnknownAssumed by the reporter11
C-028S-112025-07-30On the recordNamedStated in writing4
C-033S-142025-08-14Off the recordUnusableStated twice by the source0

S-02 gave three different permissions in six months. The March quotes stay on the record: a later conversation never reaches backwards. S-11 went the other way, from an unstated basis to on the record for a narrower subject. C-033 produced no quotes and pointed at the readiness review, which is half the story.

What one basis per person gets wrong

The same 412 quotes, graded three ways. 218 of them are genuinely on the record.

How the terms are storedMarks on the recordNamed without the termsSuppressed though usableWrong
Each source's most recent basis267651681 of 412
Each source's most restrictive basis15506363 of 412
The terms of each conversation218000

Why the column cannot be saved

Sources whose terms are not constantCount
Went on the record, then to background9
Were on background, then went on the record5
Carry three or more different bases3
Sources with more than one basis17 of 63

Most recent is wrong 81 times and 65 of those are in the direction that burns a source. Most restrictive never over-publishes and pays for it by discarding 63 quotes the reporter was entitled to use. Per conversation costs one extra column.

Promises owed, and none of them about attribution

41 of the 148 conversations carried a commitment. 35 closed, 6 open and past their date.

PromiseMadeOverdue
Review their quotes before publication180
Send them the piece when it runs95
Do not approach their employer70
Hold until a stated date41
Do not use their job title30
Total416

The six, oldest first

SourceOwedDueDays past
S-42Send the piece2025-11-07115
S-17Send the piece2025-12-1280
S-09Send the piece2026-01-1645
S-36Hold until a date2026-02-1416
S-26Send the piece2026-02-2010
S-31Send the piece2026-02-2010

Five of the six are the same promise, which makes it a process gap rather than six oversights. The sixth runs the other way: a hold expired 16 days ago and nobody recorded it, so usable material is still being sat on.

What's in the pack

01

Attribution Terms, one row per conversation

The terms agreed in the source's own words, the agreed description verbatim where they may not be named, how the terms were established, the quotes captured, and any promise with its date. This sheet is the whole mechanism.

02

Source Register, with no basis column

Who they are, what they can and cannot speak to, conversations logged, days since contact. Deliberately missing the field every other tracker leads with, because that field is what makes a tracker wrong.

03

The join, reported as counts

What each quote may actually be used for under the terms of its own conversation, next to what a person-level column would have said. The gap is the number that shows why the extra row is worth keeping.

04

The promises nobody logs

Quote review, not contacting an employer, holding until a date, sending the piece when it runs. Commitments with dates on them, worked to closed, because these are what a source actually remembers.

05

Follow-up Register

Promises owed, terms to reconfirm, contacts gone cold and questions still open, each with the reason it is on the list. Including the hold that expired and left usable material unused.

06

Sourcing Standards Note

The desk's rules, written so they can be shared: what each basis permits, when a single source is an escalation rather than a judgement call, and the two limits worth stating before a promise is made.

07

Attribution Agreement Record

The contemporaneous note, one entry per conversation, for anything that is not plainly on the record. Appended and never overwritten, because the file's authority comes from never having lost a version.

08

A space rule every prompt reads first

Terms go on the conversation. Later conversations never reach backwards. A source can release you from terms and cannot impose new ones. And this register is one reporter's, not the desk's.

How to use it

  1. 1

    Open in River, or download it

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

  2. 2

    Log conversations, not contacts

    One row every time you speak to somebody, with the terms in their own words. Never edit an old row to reflect a new conversation.

  3. 3

    Run the join before you file

    Every quote graded on the terms of its own conversation, plus the sources whose terms changed and need a call before publication.

  4. 4

    Then work the promises

    Send what is owed, release the holds that expired, and ring the sources the file says have gone cold against their own subject.

Frequently asked questions

Is this template free?

Yes. Download the sheets and docs as Word and CSV files, no signup and no credit card. "Edit with AI" is an optional path for anyone who wants the agent to build the registers from an existing contacts file and a pile of interview notes.

Why not just put the attribution basis next to each contact?

Because 27 percent of sources in the worked file gave more than one basis over fourteen months. A single column has to pick one, and both sensible ways of picking fail: the most recent basis names 65 quotes nobody agreed to, and the most restrictive discards 63 usable ones.

Can a source change the terms of a conversation afterwards?

They can release you from terms, which is common and useful. They cannot impose new ones on a conversation that already happened. Where they ask, the concession that is usually keepable is narrower than the one requested: not repeating one line, or not using a job title.

What is the difference between background and not for attribution?

Background is usable as information and not quotable. Not for attribution is quotable with an agreed description instead of a name, and the description is part of the promise. Record it verbatim: "a county employee" and "a county official" describe different people to a reader.

When is one source not enough?

One named source on the record is publishable with attribution. One unnamed source on a serious allegation is an escalation: the BBC's accuracy guidelines make it a mandatory referral to editorial policy and legal advice, not a matter of taste.

Is it safe to keep this much detail about confidential sources?

Treat it as the sensitive document it is. The BBC's anonymity guidance is explicit that notebooks, emails and computer files can compromise a source as readily as a published name. The register stays with one reporter; only the standards note travels.

How does this connect to the rest of the reporting?

The terms decide what a quote can carry, so the fact check pack grades each assertion against them before publication. Interview transcript workup produces the timecoded quotes for each conversation's row, document dump triage covers the records side, and press release and pitch triage covers press officers, who are contacts rather than sources. The beat memory pack tracks the beat's recurring names.

Put the terms where they belong

Download the blank registers and standards docs as Word and CSV files, or open this exact pack in River and let the agent build them from what you already have.

Edit with AI