On October 1 I opened The Charlotte Mercury's city council page and it still said Vi Lyles was the mayor.
She isn't. She'd already left office.
It got worse the more I looked. The county commission page said the next meeting was in June. One commissioner had an at-large seat on one page and a district seat on his own page.
The annoying part is that we knew all of it. We covered the mayor leaving when it happened. Those stories were sitting right there on the same site. The pages were wrong because somebody had typed them. Somebody wrote "Mayor" next to a name, and nothing tied that word to the news that made it wrong later.
Sixteen publications run on our system. One person runs them. If a page only stays right when that one person remembers to go fix it, it's going to be wrong.
So we stopped typing it
A story has a date on it. It says what was true that day, and nobody expects it to change.
A page about the city council is different. It's telling you about today. Who's in each seat. When the next meeting is. What we've written about them. That kind of page goes wrong the day something changes, and nobody has to touch it for that to happen.
The thing is, we already had all of those facts in one place. Our database keeps every official, every seat and who has held it. Every story is linked to the people and public bodies it's about. Every meeting is on a calendar.
So we quit writing those pages. Now they fill themselves in. The Charlotte Mercury's pages for the city council, the county commission and Charlotte's regional transit authority show:
- who's in each seat, from the list of seats
- our stories about that body, newest first, from the stories linked to it
- the next meeting, from the calendar
Each official's own page works the same way.
Somebody still has to enter it when a seat changes hands. But they enter it once. The council page, that person's page, and every page listing their colleagues all change with it, because none of them has its own copy anymore. The former mayor's page says former now, and gives the years.
The commissioner with two seats was the same problem, just smaller. Two pages, two typed copies, and one had drifted. The database had one answer. District seat. Both pages show that now.
What this doesn't fix
I don't want to oversell it. A page that fills in from a database is only as good as the database. If nobody enters that a seat changed hands, the page is wrong again, and it'll look just as sure of itself as before.
What's different is where the mistake can hide. It used to be on every page that repeated the fact, and each one needed its own fix. Now it's in one place. Fix it there and it's fixed on every page that reads from it.
And some things still have to be written by somebody. Council members and commissioners each have a short biography. That's prose. We rewrote nineteen of them the same day, from our own published coverage. Those will get old again.
Here's the rule we took from it. If we already keep a fact in one place, the page reads it from there. The second you type it somewhere else, you've made a copy, and the copy starts getting old right away.
This is No. 19 in We Built Our Own, a Mercury Local series on building our own publishing system. Previous: 203 stories moved, no link broken.
