A year ago, the publishing operation of The Charlotte Mercury, the thing it later set up Mercury Local to build and run, was three WordPress blogs and a rented app. I want to start the story there, because everything we built since only makes sense against what we were trying to leave.
The Charlotte Mercury, The Farmington Mercury and Strolling Ballantyne each ran on its own WordPress install, on shared hosting, with its own login, its own image library, its own theme and its own bill. Fix a design flaw and you fixed it three times, on three sites, and hoped you did not break one. Two of them used the same purchased theme, so they looked identical: a rotating slideshow of four articles, a sidebar of banners, a "Latest Posts" widget, and a placeholder tagline on The Charlotte Mercury that read "Always Last, to Breaking News #Alpha." It never got replaced. That tells you where the attention was going. It was going to keeping three separate machines alive.
The Farmington paper had more than five hundred articles on it, going back to the start of 2024. The Charlotte paper had the beginnings of a serious government desk. Neither looked like what it was. A reader landing on either one saw a blog with a stock theme, and first impressions are the only ones most readers give you.
Mercury Local's own site was worse in a different way. It was built on one of the no-code app builders, hosted on that builder's infrastructure, with twenty blog posts hard-coded into the app itself. No database. Three of the footer links went to pages that did not exist. If I wanted to change a sentence in a post, I was editing application code.
What this cost, in the only currency that matters
Not money, though it cost that too. Attention. Every hour spent on hosting, updates, plugin conflicts and theme quirks was an hour not spent on the county commission meeting. And there was a harder ceiling: a fourth publication meant a fourth WordPress site, from scratch. The model I was building toward, many small publications sharing one newsroom infrastructure, was impossible on that foundation. Not hard. Impossible.
Here is the distinction I kept coming back to. There is no shortage of local news websites. There is a shortage of local news infrastructure: one system that a publication can stand on, that gets better for all of them when it gets better for one. WordPress with a theme is a website. It is not infrastructure.
The decision
In March 2026 we stopped renting and built our own. One database for everything. One codebase serving every publication. Email, images, analytics and the newsroom desk, all ours. I did it with an AI writing and running the code and myself deciding what the system was, and it took about two weeks to move three publications and 813 articles onto it.
This series is the record of what that means, one piece of the stack at a time: the two weeks, images, email, the newsroom tool, analytics, the audit trail behind every article, the knowledge graph, a half-second found in the layout, the checks that run every night, the backups, the rules the database enforces on its own, the database and the front end themselves, and at the end, an honest accounting of what the AI did and what I did.
I am writing it because we are a small company that now owns something most small publishers rent, and I think the reasons why are worth taking seriously.
This is No. 01 in We Built Our Own, a Mercury Local series on building our own publishing stack. Next: Two weeks in March.
