Publishers
Publishers
WordPress for newsrooms and publishers: platforms that hold on deadline.
In 2011 and 2012 I was a contractor on the team that moved Postmedia’s eleven daily papers, the National Post and the Ottawa Citizen among them, onto WordPress VIP. How the shared platform worked. The publishing platform is the system your editorial team runs on, so when it’s fragile, their work is fragile with it, and I build it around the editorial workflow itself.
Looking for republishable writing? See the Guides and writing services. This page is paid engineering work.
<div class="services-hero__visual" role="img" aria-label="Editorial workflow diagram: stories move through assignment, drafting, copy editing, and scheduling before publishing">
<div class="service-panel">
<div class="service-panel__header" aria-hidden="true">
<span class="service-panel__title">Newsroom <span class="service-panel__sep">/</span> editorial workflow</span>
<span class="service-panel__status">
<span class="service-panel__dot"></span>
Live
</span>
</div>
<div class="service-panel__flow" aria-hidden="true">
<div class="sp-flow__node">
<span class="sp-flow__node-label">Story submitted</span>
</div>
<div class="sp-flow__connector">↓</div>
<div class="sp-flow__node sp-flow__node--router">
<span class="sp-flow__node-title">Editorial queue</span>
<span class="sp-flow__node-criteria">state · deadline · desk</span>
</div>
<div class="sp-flow__connector">↓</div>
<div class="sp-flow__outputs">
<div class="sp-flow__output">
<div class="sp-flow__stage">Draft</div>
<span class="sp-flow__count">4</span>
</div>
<div class="sp-flow__output">
<div class="sp-flow__stage">Copy edit</div>
<span class="sp-flow__count">2</span>
</div>
<div class="sp-flow__output sp-flow__output--active">
<div class="sp-flow__stage sp-flow__stage--accent">Scheduled</div>
<span class="sp-flow__count">3</span>
</div>
</div>
</div>
<div class="service-panel__log" aria-hidden="true">
<div class="sp-log__entry">
<span class="sp-log__key">headline</span>
<span class="sp-log__val sp-log__val--truncate">Flood mitigation report</span>
</div>
<div class="sp-log__entry">
<span class="sp-log__key">status</span>
<span class="sp-log__val sp-log__val--accent">scheduled</span>
</div>
<div class="sp-log__entry">
<span class="sp-log__key">desk</span>
<span class="sp-log__val">environment</span>
</div>
<div class="sp-log__entry">
<span class="sp-log__key">publish_at</span>
<span class="sp-log__val sp-log__val--num">14:00 EDT</span>
</div>
</div>
<div class="service-panel__footer" aria-hidden="true">
<div class="service-panel__stat">
<strong>847</strong>
<span>published</span>
</div>
<div class="service-panel__stat">
<strong>9</strong>
<span>in queue</span>
</div>
<div class="service-panel__stat">
<strong>6</strong>
<span>contributors</span>
</div>
</div>
</div>
</div>
</div>
</section>
<div class="wp-block-group service-page-body site-shell">
<div class="wp-block-columns page-body">
<div class="wp-block-column page-content" style="flex-basis:66.66%">
<div class="service-vertical-problem">
<h2>The problem this fixes.</h2>
<p>Most publishing teams have inherited a build that worked when it was set up and gradually became something nobody wants to touch. The content model is wrong for how the team actually works. The editorial workflow depends on one person. Updates are terrifying. The site slows down during traffic spikes. Accessibility requirements are coming from procurement and nobody knows how to address them.</p>
<p>That's the state I walk into most often. The work is: stabilize the architecture, reduce the editorial friction, and leave behind a system the team can operate without calling me every month.</p>
</div>
What this work changes.
The platform your editorial team can operate without calling a developer every week. The workflow that doesn’t collapse when your senior engineer leaves. The site that holds when a story breaks and traffic spikes.
For most organizations, the problem isn’t the content management system. It’s the architecture built on top of it. The content model that never matched how your desk actually works. The permissions setup that evolved through two rebuilds and nobody quite understands anymore. Those are fixable. The output is a publishing system that’s boring in the right way: reliable, documented, and not dependent on any one person to keep running.
<div class="service-vertical-offers">
<h2>What I build.</h2>
<div class="service-offers-grid">
<div class="service-offer-item">
<h3>Editorial CMS architecture</h3>
<p>Custom post types, content models, and block patterns built around how your team actually creates content, not WordPress defaults. Includes role design, capability mapping, and editor-facing documentation your staff can use without a developer on call.</p>
</div>
<div class="service-offer-item">
<h3>Multi-author publishing workflows</h3>
<p>Contributor permissions, editorial approval flows, scheduling systems, and the post-type architecture that makes a multi-author operation manageable. Built for teams of five to fifty.</p>
</div>
<div class="service-offer-item">
<h3>Publishing platform migrations</h3>
<p>Newsroom migrations, WordPress VIP delivery, and platform consolidations. Content archaeology when you need historical posts preserved and properly mapped. I worked on Postmedia’s move of eleven daily papers onto one shared WordPress VIP platform, so I know what breaks.</p>
</div>
<div class="service-offer-item">
<h3>Technical SEO for editorial teams</h3>
<p>Core Web Vitals, internal linking systems, structured data, and indexation architecture tuned for publishing schedules, not for a static brochure site. Written deliverables your team can hand to a developer or act on directly.</p>
<p class="service-offer-item__more"><a href="/services/audit/">Site audit services →</a></p>
</div>
<div class="service-offer-item">
<h3>Accessibility and compliance</h3>
<p>WCAG 2.2 AA implementation and <a href="/services/accessibility/">AODA compliance</a> for Canadian publishers and government communications teams. Procurement-ready documentation, remediation plans, and the implementation work, not just the report.</p>
</div>
<div class="service-offer-item">
<h3>AI-augmented editorial workflows</h3>
<p>For teams already using AI tools without governance: routing layer, agent personas for editorial roles, cost attribution, and the audit trail that legal and finance can actually read. Available as an add-on to any publishing infrastructure engagement.</p>
<p class="service-offer-item__more"><a href="/services/ai-operations/">AI operations infrastructure →</a></p>
</div>
</div>
</div>
Who this is for.
Editorial directors, digital leads, and senior editors at organizations publishing regularly: newsrooms, association publishers, government communications teams, academic publishers. If you have five or more contributors and the workflow is held together by conventions nobody wrote down, this is the right starting point.
If you’re migrating from a platform that’s getting too expensive or too fragile, preparing for AODA accessibility requirements, or trying to consolidate several properties into a single publishing operation, the scope is clear: what exists, what needs to work, and what it costs to get there.
If you’re a solo writer or a small business with a blog, Lakeview Brands is a better fit. This work starts at the infrastructure layer, not the content layer. If the platform includes a training or LMS layer alongside the publishing system, the learning infrastructure service covers that side of the build.
How engagements work.
Most engagements start with a call, an hour to understand what you have, what your team actually needs to operate it, and what’s been getting in the way. No questionnaire in advance. No sales deck. Just a conversation to find out whether the work is the right scope for what we’re trying to fix.
If you don’t know your current state, a site audit is the right first move. It maps what’s broken, what to fix first, and what implementation will cost. The audit fee is credited in full against publishing infrastructure work if you proceed within 90 days.
From there, the engagement is scoped as a fixed-price brief: deliverables defined, timeline set, no open-ended retainer that expands when the scope isn’t pinned down. The work is documented as it progresses so your team isn’t dependent on any one person to understand what was built and why.
Handoff includes working documentation, enough that your senior editor or IT contact can operate the platform without calling a developer for routine things. After delivery, most publishing operations move to a Concierge maintenance plan, scheduled around the publishing calendar, with a committed response time for production issues. If the work surfaces something that changes the scope, that’s a conversation before it changes the price.
<div class="service-vertical-faq">
<h2>Questions.</h2>
<dl class="service-faq-list">
<dt id="faq-how-long-does-a-typical-publishers-engagement-take">How long does a typical publishers engagement take?</dt>
<dd><p>A platform audit with a remediation brief typically runs two to four weeks; a full editorial CMS rebuild or workflow overhaul runs eight to fourteen weeks. Scope is defined on the call and fixed before work begins, so the timeline holds unless the scope changes.</p></dd>
<dt id="faq-do-you-work-with-newsrooms-that-are-already-on-wordpress">Do you work with newsrooms that are already on WordPress?</dt>
<dd><p>Yes, and the majority of newsroom engagements start with an existing WordPress install rather than a blank slate. Typical work includes audits of what's broken, migrations away from page builders or legacy themes, editorial workflow fixes, and accessibility remediations.</p></dd>
<dt id="faq-what-does-fixed-price-mean-for-this-kind-of-work">What does fixed-price mean for this kind of work?</dt>
<dd><p>The price and deliverables are locked in before the engagement starts. If something surfaces during the work that changes scope, we have a conversation before anything changes on the invoice.</p></dd>
<dt id="faq-what-s-the-difference-between-this-and-hiring-an-agency">What’s the difference between this and hiring an agency?</dt>
<dd><p>You get direct access to the senior engineer doing the work, with no account manager sitting between you and the person making decisions. I document everything so your team can understand what was built and why, which means you can maintain it without depending on me to step back in.</p></dd>
</dl>
</div>
</div>
<div class="wp-block-column page-sidebar" style="flex-basis:33.33%">
<div class="sidebar-cta">
<h2 class="sidebar-cta__heading">WordPress for publishers</h2>
<p>WordPress infrastructure for newsrooms and editorial teams. Built for publishing operations across Canada.</p>
<a class="button" href="/contact/?cta_context=publishers_sidebar">Send the project brief →</a>
<a class="button button--ghost" href="/work/">See case studies</a>
</div>
<aside class="sidebar-links" aria-label="Related services">
<p class="sidebar-links__heading">Related services</p>
<ul class="sidebar-links__list">
<li><a href="/for/newspaper-website-development/">Newspaper websites</a></li>
<li><a href="/services/learning/">Learning platforms</a></li>
<li><a href="https://lakeviewbrands.com/">Small business (Lakeview Brands)</a></li>
</ul>
</aside>
</div>
</div>
</div>
How this connects to the rest of the system
- A publishing platform that can’t be found is a printing press in a basement, which is why technical audits treat discoverability as part of the same system rather than a separate job.
- Editorial and learning are both content systems built to outlast their founding team, so the architecture that serves a newsroom also serves a course catalogue.
- As AI enters the editorial workflow, the newsroom has to prove what the AI touched and what it cost, and that proof is the accountability layer AI Operations builds into the platform from the start.
<div class="wp-block-group service-vertical-proof site-shell">
<h2 class="wp-block-heading">Publishers and newsrooms I’ve built for.</h2>
</div>
<section class="services-cta site-shell" aria-labelledby="publishers-cta-final-heading">
<div class="services-cta__inner">
<h2 id="publishers-cta-final-heading">Ready to build publishing infrastructure that holds?</h2>
<p>These calls are 20 minutes. You bring the editorial constraints; I bring the architecture options. No proposal theatre, just a direct conversation about what your stack actually needs.</p>
<a class="button" href="https://cal.com/thisismyurl/20mins?utm_source=site&utm_medium=cta&utm_campaign=discovery_call&utm_content=publishers" rel="noopener">Book a 20-minute discovery call</a>
<p class="services-cta__see-also">Related: <a href="/services/audit/">Site audit</a> · <a href="/services/writing/">Writing services</a> · <a href="/work/postmedia-wordpress-vip-migration/">Postmedia case study</a> · <a href="/blog/">Guides</a></p>
</div>
</section>