Local news is about a finite cast. A few hundred officials, a few dozen public bodies, the developers, the businesses, the streets, the buildings. The same names recur for years. A publication that treats each story as a fresh page throws that away every day. We decided to keep it.
Every person, place, organization and public body we cover has one record and one public page. As of this week there are 2,568 of them, linked to their coverage 7,960 times. We call it the knowledge graph: records that link to each other, so a person connects to the stories that name him, the transcripts he speaks in, and the bodies he sits on. It is the part of the platform I would defend hardest.
What a profile is
Go to any of our publications and open a story about a county commissioner. His name links to a page: who he is, what seat he holds, every story we have written that names him, every meeting transcript in which he speaks, every document that mentions him, on every one of our publications. The page is not written by hand. It is assembled from the coverage. Publish another story tomorrow and it is on the page tomorrow.
The same is true of a public body, a development, a street, a business. The Farmington police department has a page that carries every police log we have published. A shopping mall that appears in the arrest log every week has a page that explains why its address keeps coming up. A council has its roster, and the roster is the record that the site, the newsroom desk and the reporting all read.
How it is built
From the reporting, at the moment of publishing. When a story is produced, the platform reads its final text, matches the names against the records it already has, links the ones it finds, and creates only the ones that are genuinely new. Relationships stated outright in the piece, this person chairs that body, this company is developing that site, are recorded with the sentence that states them, so a relationship in our graph can always be traced to the story that established it.
Nothing is bought from a data vendor. Nothing is scraped from someone else. If we have not covered a person, we do not have a page for them, and a page with too little behind it is kept out of search engines until it has earned its place: a published profile, enough facts, or three linked stories.
The rule we enforce hardest
One subject, one page, forever. A profile's address never changes. If two records turn out to be the same person, one becomes the survivor and the other's address redirects to it permanently. A name that has appeared in print keeps its page. In July we found 236 subjects across four publications that each had two addresses for one page, and consolidated every one without moving a single story. Since September, the database itself refuses to create a person whose name is a near-match for one we already have, names the existing record in its refusal, and leaves the override to a person with a reason.
I care about this because a reader who bookmarks a page in 2026 should find it in 2030, and because a search engine that finds two pages for one person trusts neither.
What it is for
For readers, it is context on demand: who is this, what have they done before, what else is going on around this. For the newsroom, it is memory: a reporter starting a story sees at once what we already hold. For the machines that increasingly read us on readers' behalf, it is structure: a page per subject, with a machine-readable summary on it, that says who this is and how they connect to everything else we cover.
A publication is a set of stories. A news organization is a set of subjects it has followed over time. The graph is what makes us the second thing.
This is No. 08 in We Built Our Own. Previous: Every article carries its receipts. Next: Half a second, found in the layout.
