Service 20

Content Production Engine

A pipeline that turns source material into publishable drafts at volume, with a gate that refuses to write when the source is too thin, and an editor still in the loop.

On this page
  1. What a content production engine is
  2. Who it is for, and who it is not for
  3. What we actually build
  4. How it works technically
  5. The Source Density Gate
  6. The build process, stage by stage
  7. What you get at handover
  8. Where these projects go wrong
  9. What it costs to run once it is live
  10. How to tell whether you need this
  11. How to start

What a content production engine is

The short answer

A content production engine is a pipeline that assembles a defined source pack, drafts against a format specification, and routes every draft to a human editor before anything can publish. The model writes. It does not decide what is true, what is worth publishing, or when. Those three decisions stay with people, and the pipeline is built so they cannot be skipped.

The difference between an engine and a writing tool is where the judgement sits. A tool waits for someone to paste a prompt. An engine holds the brief format, the source pack, the voice specification and the review queue, and it runs on a schedule whether or not anyone remembers.

The second difference is refusal. A tool always produces something. An engine can decline, and should: when the source pack does not carry enough verifiable material for the target length, the correct output is a research task rather than fifteen hundred fluent words about nothing.

Terms this page uses precisely
Source pack
The set of documents a single draft may draw from: transcripts, product docs, support tickets, interviews, prior posts. Material outside the pack may not appear in the draft.
Atom
One verifiable, non-obvious claim in the source pack, counted once however often it is restated. Atoms are the unit the density gate counts before drafting is allowed.
Bound claim
A sentence in the draft carrying a machine-readable reference to the atom it came from. Unbound sentences are flagged for the editor and are not allowed to state facts.
Deletion rate
The share of generated sentences an editor removes rather than edits. It is the cheapest quality signal in the system and the first one worth watching.
Draft state
Where a piece sits in the pipeline: requested, gated, drafted, edited, approved, scheduled. Published is reachable only from approved, and only by a person.
  • 4 to 8 weeksTypical build for one content type, one CMS, one voice specification and the editor queue
  • Editor staysNothing reaches the CMS without a named person approving it, by architecture rather than by policy
  • Refuses to draftThe density gate returns a research task when the pack is too thin for the format
  • Every claim boundEach factual sentence carries a reference to the source atom it came from

Who it is for, and who it is not for

Build this if you already generate more raw material than you publish. Sales calls, support tickets, engineering decisions and customer interviews are the input. If that material does not exist, an engine will not manufacture it, and the output will read exactly like what it is.

This fits you if

  • You publish weekly or faster across more than one format, and the calendar slips whenever someone is busy.
  • You hold recorded calls, docs, tickets or interviews that nobody has turned into anything readable.
  • An editor already exists, or you are willing to fund one. The editor is the load-bearing part of this.
  • The bottleneck is drafting and coordination rather than deciding what to say.

Do not build this if

  • You want opinion pieces or a founder's point of view. Those need a named human author and the engine cannot fake one.
  • Nobody will edit. Unedited output published at volume damages a site faster than publishing nothing.
  • Your problem is that traffic is flat. More pages is not the fix, and often makes the diagnosis harder.
  • You publish twice a month. A shared document and a calendar reminder will outperform any pipeline at that volume.
Volume is not the goal, and it is not free

Publishing more pages raises the cost of every future site decision: migrations, redesigns, internal linking, pruning. Decide the ceiling before you build the engine, and decide who prunes. A pipeline with no deletion policy becomes a maintenance liability in about a year.

A writing tool your team pastes intoA production engine
TriggerSomebody remembersA queue, a schedule, or an event in your stack
InputWhatever is in the tabA defined source pack with ids
RefusalNever, it always answersDeclines and opens a research task when the pack is thin
FactsWhatever the model recallsBound to atoms, and unbound sentences are flagged
VoiceRe-explained every timeA versioned specification with counter-examples
ReviewOptional and inconsistentA rubric with logged codes and a deletion rate
PublishingCopy and pasteDraft states, a diff, and a rollback

What we actually build

Six components. The interesting ones are the two that say no.

The request queue and the brief contract

Work enters as a brief, never as a topic string. The brief names the format, the target length, the audience, the questions the piece must answer, the source pack, and what the piece may not claim. A brief that cannot be filled is a signal that nobody has decided what the piece is for.

Brief contractjson
{
  "brief_id": "2026-03-04-comparison-webhooks-polling",
  "format": "comparison",
  "target_words": [1200, 1800],
  "audience": "backend engineers choosing a trigger mechanism",
  "must_answer": [
    "When does polling beat a webhook?",
    "What breaks first at scale in each?",
    "What does a hybrid actually look like?"
  ],
  "source_pack": [
    { "id": "s1", "type": "transcript", "ref": "eng-call-2026-02-18" },
    { "id": "s2", "type": "doc",        "ref": "internal/queue-design.md" },
    { "id": "s3", "type": "tickets",    "ref": "support:tag=missed-events" }
  ],
  "atoms_required": 18,
  "atoms_found": 23,
  "forbidden": [
    "any figure that is not in the pack",
    "claims about competitor pricing",
    "the words we ban in voice/spec-v4.md"
  ],
  "voice_ref": "voice/spec-v4.md",
  "internal_links": ["/guides/webhooks-vs-polling/", "/services/systems-integration/"],
  "on_gate_fail": "open_research_task"
}

The source pack assembler

Retrieval that pulls candidate material from your transcripts, docs and tickets, deduplicates it, and returns passages with stable ids. This is a retrieval problem before it is a writing problem, and the same rules apply as in RAG and knowledge systems: chunk on meaning, keep the source id, and never let a passage lose its origin.

The density gate

A deterministic count of atoms in the pack against the requirement for the format. Below the line, the pipeline opens a research task naming what is missing. This component is why the engine does not fill a calendar with plausible filler when the material runs out.

The drafting stage and the claim binder

Generation happens section by section against the outline rather than in one pass, which keeps each call inside a sane context and makes a bad section cheap to regenerate. The binder then walks every sentence, attaches the atom id it rests on, and marks the rest unbound for the editor.

The editor workspace and the publisher adapter

The editor sees the draft with bound claims linked to their sources, unbound sentences highlighted, and the rubric beside it. Approval moves the draft state, and only that state can reach the CMS, through an adapter that writes a draft and never a live page.

How it works technically

Eight stages. The design goal is that a weak source pack stops the run early rather than producing text that costs an editor an hour to reject.

  1. Brief validation. Reject briefs missing a format, an audience or a source pack. Roughly a third of first-attempt briefs fail here, which is useful information about how the work was being commissioned before.
  2. Pack assembly. Retrieve candidate passages, deduplicate near-identical ones, and store the pack with an id so the same draft can be reproduced later.
  3. Atom extraction. One model pass that lists the verifiable claims in the pack, each with the passage id it came from. Deduplicate claims that restate each other.
  4. The gate. Compare atom count against the format requirement. Below the line, open a research task naming the gaps and stop. This is a plain conditional, not a judgement call.
  5. Outline. Generate a section plan with the must-answer questions mapped to sections, then check every required question is covered before drafting starts.
  6. Section drafting. One call per section, carrying the outline, the assigned atoms, and the voice specification. Sections are drafted independently so a weak one can be regenerated alone.
  7. Binding and checks. Attach atom ids to factual sentences, flag unbound ones, and run deterministic checks: banned words, quotation matching, forbidden claims, repeated openers across recent drafts.
  8. Editor queue. The draft lands with its rubric, its deletion-rate history and its atom map. Approval writes a CMS draft. Nothing in this pipeline can publish.
Editor rubrictext
EDITOR PASS. Work in this order. Stop at the first hard fail and send it back.

HARD FAILS, return the draft to the pipeline:
  H1  A factual sentence carrying no bound atom.
  H2  An atom used to support a claim the atom does not make.
  H3  A number, date or name that appears nowhere in the source pack.
  H4  A quotation not present verbatim in a source.
  H5  A section that restates an earlier section in different words.

SOFT FAILS, fix in place and log the code:
  S1  An opening paragraph that describes the topic instead of answering it.
  S2  A sentence over forty words carrying two ideas.
  S3  A list where a table would answer faster.
  S4  Hedging that hides the position: can be, may help, often.
  S5  A transition sentence carrying no information.

LOG FOR EVERY DRAFT:
  sentences_deleted / sentences_total
  hard_fail_codes[]
  soft_fail_codes[]
  minutes_spent

Three or more hard fails means the draft goes back to the brief, not to the
writer. The brief is usually what was wrong.
Why sections are drafted separately

A single long generation degrades unevenly and forces you to reject the whole thing. Section-level drafting makes failure local: regenerate one section, keep the rest, and keep the editor's time attached to the part that was wrong. It also makes the deletion rate measurable per section type, which is where the real pattern shows.

Voice is handled as a specification rather than as adjectives. Positive examples, negative examples, banned constructions, sentence-length distribution, and three paragraphs the client has approved as the reference. Treating prompts as versioned assets is the discipline described in prompts as code, and it is what makes a voice change reviewable instead of mysterious.

The Source Density Gate

Content pipelines fail for one reason more than any other. The source material is too thin to support the length somebody asked for, so the model fills the gap with fluent, well-formed, entirely empty prose. Everybody notices, nobody can point at the cause, and the pipeline gets blamed for a briefing problem.

Framework

The ChatGPTalker Source Density Gate

Five steps that decide whether a draft is allowed to exist. Run them before generation, not after, because after generation you are editing rather than deciding.

01
Count the atoms

Extract every verifiable, non-obvious claim in the pack and deduplicate restatements. Obvious claims do not count. If the sentence would be true of any company in the category, it is not an atom.

02
Set the ratio per format

Each format declares atoms required per target length. A comparison piece needs more than a definition page, and needs them distributed across the options rather than piled on one.

03
Refuse below the line

Under the threshold, the pipeline returns a research task naming the specific gaps: which option has no evidence, which question has no answer in the pack. Nobody has to argue about whether the draft is thin.

04
Bind every atom

Each factual sentence carries the id of the atom behind it. Unbound sentences are allowed to exist as connective tissue, but they may not carry facts, and the editor sees them highlighted.

05
Watch the deletion rate

Track deleted sentences over total sentences per draft. A rising rate almost never means the model got worse. It means packs are thinning, or a format's threshold was set too low when nobody was looking.

The thresholds below are a starting point we tune against your first twenty drafts, not a law of nature. What matters is that the number exists, is written down, and is enforced by code rather than by whoever is reviewing that week.

FormatTarget lengthAtoms requiredEditor passBelow the line
Definition or explainer700 to 1,000 words8, spread across the sectionsFact checkResearch task, name the missing sections
Comparison1,200 to 1,800 words18, at least 6 per optionFact check plus a claims readRefuse. An unevenly evidenced comparison is worse than none
How-to guide1,500 to 2,500 words20, including 4 verified by doing itFull editRefuse. Guides written from theory get found out
Release note200 to 400 words3, all from the changelogFact checkRefuse and ask engineering
Opinion or point of view800 to 1,400 wordsNot applicableWritten by a named personAlways refuse. The engine assists, it does not author
Format thresholds. The last row is the important one: some work should never come out of a pipeline.

The build process, stage by stage

Four to eight weeks depending on how many formats you need. We build one format properly before adding a second, because the second is mostly a copy of the first once the pipeline exists.

Week 0
Baseline and teardown

We read twenty pieces you already published and mark what worked. We also time the current process end to end: commissioning, drafting, review, publishing. That timing is the baseline the engine gets measured against.

Week 1
Voice specification and format specs

Positive and negative examples, banned constructions, and the three paragraphs that become the reference. Then the format specs: lengths, required questions, atom thresholds.

Weeks 2 to 3
Retrieval, atoms and the gate

Source pack assembly against your real material, atom extraction, deduplication, and the gate. We run it over past pieces to see which of them would have been refused, which is usually an uncomfortable and useful conversation.

Week 4
Drafting and binding

Outline generation, section drafting, claim binding, and the deterministic checks. First drafts go to your editor with no expectation that they are good yet.

Weeks 5 to 6
Editor loop

The editor works real drafts and logs rubric codes. We tune formats, thresholds and the voice spec against those codes rather than against opinions. Deletion rate is tracked from the first draft onward.

Weeks 7 to 8
CMS adapter and handover

Draft states, the publisher adapter, rollback, and the reporting view. Handover happens by your team commissioning and shipping a piece end to end while we watch.

What you get at handover

Everything runs on your keys, in your repository, against your CMS. The voice specification and the format specs are files you can edit without us.

Handover contents
0 of 8 done

The regression set matters most. When you change a prompt or the model changes underneath you, the only way to tell an improvement from a mood is to re-run drafts an editor has already judged. Details of that method are in writing evals for systems that are not deterministic.

Where these projects go wrong

Six failure modes, in the order we see them.

There was never any source material

The engine gets built, the packs are thin, and the gate refuses most briefs. That is the system working, and it feels like the system failing. The honest response is to fix the input: record the calls, write the decisions down, mine the tickets. An engine is a distribution mechanism for material you already have.

Volume with no distribution plan

Two hundred pages arrive, nothing links to most of them, and nobody reads them. Plan the internal linking and the promotion before the pipeline runs, not after. The linking half of that problem is SEO and AEO automation work, and it should be built in the same quarter.

The editor becomes the bottleneck, and nobody measured it

Drafting capacity multiplies and review capacity does not move, so drafts queue up and go stale. Measure editor minutes per piece from day one, and treat that number as the real throughput limit of the whole system. The calculator below exists for this.

Facts assembled from the model rather than the pack

The most damaging failure, because the output looks confident and specific. A model recalls a plausible figure, writes it fluently, and an editor skims past it. Claim binding plus a deterministic check that every number appears in the pack is the only defence that survives a busy week.

The template starts to show

After ten pieces the shape repeats: same four sections, same rhythm, same opening move. Fix it with format variants, a check for repeated opening constructions across recent drafts, and an editor instruction to break the pattern deliberately once in every batch.

The pipeline publishes

Somebody wires the last step directly to the CMS because approval felt slow. There is now no draft state, no diff, and no rollback, and one bad run is live on your site. Publishing stays a human action. That is not caution, it is the cheapest insurance in the build.

An engine that cannot refuse to write will eventually write something you have to explain.
Near-duplicate pages are a site-level risk

Generating twenty variants from one source pack produces pages that differ in wording and not in substance. Search systems handle that badly and readers handle it worse. Set a minimum atom overlap threshold between any two pieces and fail the second one, rather than discovering the pattern six months later.

What it costs to run once it is live

The model is the cheap part and the editor is not. Run the arithmetic on your own numbers, using your provider's published prices today. Any price printed on a page is out of date by the time it is read, so treat the defaults as an example you overwrite.

Cost per published piece

Defaults are illustrative assumptions, not current market prices. Input tokens include the source pack, which is what makes drafting more expensive than people expect. Substitute your own editor rate and your provider's rate.

0Model cost per draft
0Editor cost per draft
0Total per month

Move the editor minutes slider and watch what happens. On any realistic assumption the human line dominates by an order of magnitude, which reframes the whole project. You are not buying cheaper words. You are buying a way to point a fixed amount of editorial attention at more finished drafts, and that only pays if the drafts arrive good enough to edit rather than good enough to rewrite.

Cost lineWhat drives itDirection of travelThe honest lever
Model inferenceSource pack size, not output lengthFalls as retrieval gets more selectiveRetrieve less and better. Most packs carry passages no atom came from.
Editor timeDeletion rate and hard-fail countFalls only if the brief improvesFix briefs and thresholds. Editing harder is not a strategy.
Retrieval and storageCorpus size and re-index frequencyRoughly flatRe-index on change, not on a schedule.
MaintenanceCMS changes, model changes, format additionsFixed monthlyBudget a day or two a month, or watch it decay.
The running cost lines, and what actually moves them.

How to tell whether you need this

Five questions. Count the yeses honestly.

  • Do you generate recorded material weekly that nobody turns into anything readable?
  • Is your published output limited by drafting time rather than by deciding what to say?
  • Does a named person edit today, and would they still edit at three times the volume?
  • Can you name the formats you publish, and what each one is for, without inventing them now?
  • Would you delete a page that stopped earning its place, and does anyone own that decision?

One or two yeses means the constraint is upstream and an engine will make that visible without fixing it. Three or four is the standard case. Five means you already run a disciplined operation, and this is a throughput project with a predictable payback rather than a change in what you can do.

The adjacent build

If the real complaint is that nobody finds the pages, the pipeline is not the fix. Monitoring, briefing and internal linking are SEO and AEO automation, and doing that first usually makes a smaller amount of content perform better than a larger amount would have.

How to start

It starts with your existing published work, not with a demo. We want to see what you have shipped and what you wish you had not.

  1. Send twenty published piecesBefore the call

    Mark five you are happy with and five you are not. The gap between those two sets is most of the voice specification.

  2. A ninety minute scoping callWeek 0

    We map where material comes from, who commissions, who edits, and where the current process stalls. We also look for the material you already have and are not using.

  3. A written scope with the refusal rulesWithin a week

    Formats, thresholds, what the engine will never write, integration points, and the metrics measured against your baseline. If your material cannot support the volume you want, that goes in the scope rather than in a later apology.

  4. One format, end to endWeeks 1 to 4

    We build a single format completely, including the gate and the editor loop, before adding a second. A second format is a configuration change once the first one works.

  5. Your team ships a pieceWeek 8

    Handover means your editor commissions, gates, edits and publishes one piece without us touching anything. Until that happens, it is a demonstration.

Cite this

ChatGPTalker, Content Production Engine: a production engine gates on source density before drafting, binds every factual sentence to a source atom, and cannot publish without a named human approving the draft.

Questions we get asked

Will this replace our writers?
It replaces first-draft typing and the coordination around it, not judgement. Somebody still decides what is worth saying, still checks that claims are true, and still owns the voice. In practice the editor role grows and the drafting role shrinks, and teams that fire the editor to fund the pipeline end up with a fast route to publishing things they regret.
How do you stop it inventing facts?
Three mechanisms, and the third is the one that holds. Generation is restricted to a defined source pack, every factual sentence is bound to the atom it came from, and a deterministic check confirms that each number, date, name and quotation appears in the pack. Unbound sentences are highlighted for the editor and are not allowed to carry facts.
What happens when the source material runs out?
The density gate refuses the brief and opens a research task naming the gaps: which question has no answer in the pack, which option has no evidence. That refusal is the feature. Without it a pipeline keeps producing on schedule and the quality decays gradually enough that nobody catches the moment it stopped being worth reading.
Can it write in our voice?
It can approximate a voice from a specification with positive examples, negative examples, banned constructions and a reference set that your team has approved. It cannot originate a point of view, which is why opinion formats are excluded by design. Voice specifications are versioned files, so a change is reviewable rather than a matter of someone's memory.
How much editing will each draft actually need?
Enough that you should measure it from day one rather than assume. We log deletion rate and editor minutes per piece from the first draft, and tune briefs, thresholds and prompts against those numbers. If minutes per piece are not falling over the first month, the brief is usually the problem rather than the model.
Does the pipeline publish automatically?
No, and we will argue against building it that way. Approval is a human action that moves a draft state, and only that state can reach the CMS, through an adapter that writes a draft rather than a live page. This keeps a bad run inside your workflow instead of on your site, and it costs almost nothing to preserve.

Tell us what is eating the hours.

Send the process, the volume and the tools it touches. You get a scoped plan with a build shape and a timeline, not a brochure.

Start a project