Articles

The publishing pipeline that replaced six hours a week

A weekly publishing routine looks small until you count it. Choosing a topic, researching it, writing a draft, finding an image, checking the facts, formatting it, scheduling it, then doing the same shape of work again for social. Call it six hours. Across a year that is a full working month spent producing the same artefact over and over.

Almost all of it is automatable. The part that is not, and the part people get wrong, is the judgement at the end.

What the flow actually does

The version we run in production has six stages, and every one of them can fail independently, which matters later.

  1. Pick a topic. From a maintained pool rather than from the model’s imagination. A pool means you control the editorial line, and it means the same subject does not come round twice in a month.
  2. Gather sources. Real URLs, fetched and read. Not remembered.
  3. Draft. With the sources in context and an instruction that no claim may appear without one behind it.
  4. Check. A second pass that reads the draft against the sources and rejects it if a fact is not supported.
  5. Illustrate. A licensed photo from your own library matched by subject, or a generated image where no licensed option exists.
  6. Ask. An email with the draft, the image, and a publish link.

The pool is the whole editorial strategy

The first version of this flow let the model choose what to write about. It produced competent, forgettable pieces that drifted toward whatever the model found easy. Within three weeks the blog had four articles about roughly the same thing.

Moving to a maintained topic pool fixed it in an afternoon. Each entry carries a subject, a type, and a set of verified facts. The generator walks the pool rather than free-associating, so coverage is something you decide rather than something you discover afterwards.

It also makes gaps visible. When we looked at one pool honestly, four of fifteen entries covered the same animal and an obvious category had nothing at all. That is not a prompt problem, and no amount of prompt engineering would have surfaced it.

Fact checking has to be able to say no

A quality gate that always passes is decoration. The gate in this flow can reject, and it does.

Which created the failure that cost a week of published output before anyone noticed. The gate rejected a draft, the flow discarded it, and the scheduler recorded the run as complete. No retry, no alert, no queued item. The system was working exactly as written, producing nothing, and reporting success.

The dangerous automation failure is not the one that crashes. It is the one that finishes cleanly having done nothing.

The fix was small: on rejection, retry with the gate’s reasoning fed back in, cap the attempts, and if the cap is hit, raise it rather than swallow it. That is the whole difference between a pipeline that quietly stops and one that tells you.

Approval is the feature, not the friction

The instinct with a writing pipeline is to close the loop entirely. Resist it, at least at first.

A one-click approval email costs about forty seconds per piece and removes the entire class of risk where something wrong, off-brand or legally awkward publishes itself at three in the morning. Forty seconds a week is not the cost you were trying to remove. The six hours were.

Once the flow has produced fifty approved pieces and you have stopped finding things to change, closing the loop is a one-line change. Start closed, and you will never build the confidence to open it.

What it replaced, in hours

On the setup we know best, roughly six hours a week of writing and scheduling became about ten minutes of reading approval emails. The build took a little under three weeks including the supervised run, and the ongoing cost is a few dollars a month in model calls.

The honest caveat is that the first month is not free. Prompts need tuning against your voice, the pool needs filling, and the gate will reject things it should not until you calibrate it. Budget for that month and the arithmetic still works comfortably.

If you build one thing from this

Build the retry on rejection before you build anything clever. Every other part of this pipeline degrades visibly when it breaks. That one degrades into silence, and silence is the expensive kind.

Keep reading