My Work

How I Built My Article Factory

10 min

Last updated,

Summary

The Article Factory turns the Audit Engine’s content gaps into articles in batches, at the cadence a client’s reviewers can handle. Nothing is written until a context layer describes the company, and every article passes a 30-point scorecard and code checks on links, sources and schema before a human approves it. The principle is one sentence: AI writes, code verifies, people decide.

Three generations, and what the first two taught me

The first system I built produced 100-plus SEO articles in two to three weeks for a history publisher, on four AI article pipelines I wired together myself. The second produced the copy behind $1 million of SEO revenue across 17 real-estate clients in seven and a half months, on early GPT models across five content formats.

Both worked. Both had the same weaknesses: the model knew nothing about the company beyond what the prompt said, nothing checked the model’s output except the model, and every new client meant rebuilding the pipeline by hand.

The Factory is the third generation, built to fix all three. It reads the company before it writes.

Code verifies what the model claims. And one codebase serves every client.

Why generic AI content fails, and what has to exist first

A model asked to write “an article about mold inspection costs” produces something plausible and interchangeable. It doesn’t know the company charges by square foot, that its customers are mostly homebuyers on a closing deadline, that the founder never uses the word “remediation,” or that the only pages an article may link to are the 59 city pages and the pricing page.

So before a single article is written, the Factory builds a context layer: one folder it reads every time.

  • Company profile. Who the company is, what it sells, proof points it can claim.
  • Audience personas. Who buys, their questions, their pains, the words they use.
  • Writing guidelines. Voice, structure, banned phrases.
  • Customer voice. How real customers talk, from calls and reviews.
  • Site configuration. Domain, publishing system, approved authors, image style.
  • Approved links. The official list of pages an article is allowed to link to.
  • CTA library. Approved calls to action, by funnel stage.
  • Lead magnet library. The offers an article can point to.

It’s built from onboarding conversations, the client’s own materials and the audit. When a client corrects something, the correction is written into the layer the same week, so the same mistake doesn’t happen twice.

When a client’s materials are thin, I research and build it. For the pre-FDA medical device company, the writing guidelines carried a 16-term banned-word list tighter than the regulators require, and that list lived inside the drafting prompt, so the model never saw those words as options.

The keyword gate

Themes come from the Audit Engine’s content gaps and citation losses. A research pass hunts for net-new terms, and an exclusion list of everything the client already covers forces it past the obvious. Then every candidate keyword has to pass five checks before it can run:

  • Verified demand. Search volume from two independent datasets that agree.
  • Brand relevance of at least five out of ten against the company profile.
  • Buying intent. Commercial or transactional, not idle curiosity.
  • No cannibalization. Low risk of competing with a page the client already has.
  • A traceable source. Where the keyword was found, on the record.

The client approves the final list before any batch starts. That approval is the first of three human gates.

One article, end to end

Every article takes the same path.

AI does the work. A brief sets the angle, persona, funnel stage, section plan, call to action and offer. The drafting agent writes against the brief, in the client’s voice, with real sources. Four optimization passes follow: on-page SEO, answer structure, citation-readiness, structured data.

A feature image is generated in the client’s visual style. Then the scorecard: 30 points, 26 or more passes, below that it goes back.

Code verifies. Every external link is probed with a live request after the model finishes; dead links are removed and the article fails if it can’t hold three live sources. Internal links are checked against the approved list, and only URLs on that list may ship. The image has to load, the schema has to validate, the byline has to be an approved author.

Then a pass strips 33 categories of machine phrasing, the words and constructions that make writing read as AI. The link check in particular overwrites whatever the model claimed about its own links; a model’s confidence about a URL is not evidence, the server’s response is.

People decide. Keyword approval before a batch starts. Article review on the finished draft, with the client’s reviewers on top of mine wherever they want to be.

Publish approval before anything touches the client’s site. Where a category needs a legal, medical or financial reviewer, their sign-off is a required step, and their corrections become rules in the context layer the same week.

Anywhere an AI is the only check on its own work, I treat that as a bug and add a code check or a human one.

The 30-point scorecard

Every article is graded on 30 pass-or-fail criteria across six categories. Each failure comes with a one-line reason and the specific fix. The score is parsed and enforced by code, not by the model grading itself.

  • Content and structure, 6 points. The question is answered in the first 100 words. Every heading opens with a 40-to-60-word answer. Sections stand alone. An FAQ with five or more questions. Tables for comparisons, lists for steps.
  • SEO, 6 points. Title under 60 characters with the keyword. Description under 155. Correct heading hierarchy. Three or more live internal links and three or more live external sources. Alt text. Clean URL.
  • Answer-engine structure, 4 points. The first paragraph works as a standalone snippet. Headings phrased the way people search. FAQ answers self-contained. One best-answer paragraph identified and refined.
  • Citation-readiness, 5 points. Claims carry data with named sources. Entities named consistently. Author byline with credentials. A last-updated date. Depth that matches or beats the pages AI already cites.
  • Structured data, 4 points. Article schema complete. FAQ schema wrapping every question. Breadcrumbs. Author and publisher entities cross-referencing correctly.
  • Conversion, 5 points. The primary call to action matches the funnel stage. A styled CTA block. A lead magnet matched, or the article flagged as needing one. Every offer link tracked. A next-read footer with two or three links.

Twenty-six to 30 passes and moves to human review. Twenty-two to 25 needs fixes, and the optimization pass re-runs on the failed criteria only.

Below 22 goes back through all four passes. A refreshed article, where an existing page is improved rather than replaced, passes at 24, because it deliberately keeps original sections a new article would have written differently.

The anatomy of a finished article

Twelve parts, in the order a reader and an AI engine meet them: breadcrumbs; a title under 60 characters; a named author and an updated date; a direct answer in the first 100 words that stands alone, because Google’s snippets and AI assistants lift the first paragraph; question-shaped headings; a self-contained answer block under each; comparisons as short tables, four rows at most, because long ones break on phones; three or more live external sources; a lead magnet callout with a tracked link; an FAQ of five or more questions with schema; a next-read footer; and the structured data block covering Article, FAQPage, Breadcrumb, Person and Organization. Typical length is 1,800 to 3,500 words, set per article by the brief rather than by a rule.

Lead magnets, so content earns names and not only traffic

The audit tells us which questions buyers ask at each stage. The Factory builds the offers that answer them, a checklist, a calculator, a comparison template, an assessment, then matches each article to the best-fitting offer.

Each candidate offer is scored against the article: topic match counts for half, funnel stage for a third, persona fit for the rest. The best match above the threshold is placed as a styled callout with a tracked link, so analytics show which article, which offer and which stage produced each lead.

A second offer is added only if it serves a different stage. When nothing fits, the article ships with the standard call to action and is flagged as an orphan; the weekly audit lists orphans, so the next offer built is the one the most articles are waiting for.

Batches, cadence and publishing anywhere

Per article, every time, the batch contains publish-ready HTML formatted to the client’s site components, the structured data as a ready-to-embed block, the title tag, description, URL slug, author and dates, the feature image with alt text, the full scorecard with every criterion pass or fail, and the brief and offer plan for reviewers.

It can go to WordPress, Webflow, HubSpot, Shopify, Contentful, Ghost, a custom system through its import format or API, or a zip of folders for the client’s own team to publish. Indexing requests go out the day a page goes live. If the client would rather publish themselves, the Factory never needs access to their site.

Capacity is not the constraint. The queue can produce 500 to 1,000 articles a week per client, far more than any client has approved. Cadence is set by approval speed, deliberately.

A typical rhythm is three to five new articles a week plus three to five upgrades of existing pages, with the first batch live in week three of an engagement. At three a week that’s about twelve new articles a month.

How I built it: Audit, Strategize, Spec, Build, Orchestrate, Train

Audit

I audited my own two earlier generations and the agency alternative. The earlier systems had no context layer, no deterministic verification and no reuse across clients.

Agency production ran $800 to $2,000 per article, and at three articles a week that is $10,000 to $26,000 a month, most of it not the writing. The cost problem and the trust problem had the same root: the expensive, unreliable parts were the ones nobody had systematized.

Strategize

Five principles. AI writes, code verifies, people decide. Context before content, always.

Capacity and cadence are different things, and cadence belongs to the client’s reviewers. One codebase, many tenants, with isolation strict enough that a client’s context can never leak into another client’s article. And a running cost low enough that publishing frequency is never a budget conversation.

Spec

The eight-file context layer and what each file must contain. The five keyword checks and their thresholds. The six-stage drafting pipeline.

The 30 scorecard criteria with their six categories, point values and pass bands, plus the 24-point rule for refreshes. The twelve-part article anatomy. The lead-magnet scoring weights.

The verification list: external links probed live, internal links against the approved list, image load, schema validity, byline approval, and the machine-phrasing pass with its roughly 34 banned words, 12 banned phrases and 33-category rubric. The publish formats per CMS. Each of these became a reference document inside the skill, so the drafting agent and the verification code read the same definitions.

Build

TypeScript throughout, written with Claude in Claude Code. The drafting agent runs on the Claude Agent SDK as an autonomous sub-agent that walks the six stages per article with the context layer and scorecard in its instructions. Deterministic post-processing follows in code: sanitize, audit every external link with a live request and overwrite the model’s self-grade with the result, attach the feature image, wire the call to action and lead magnet.

A publish detector watches for the article going live. Monitoring connects Search Console, analytics, the CRM and the data warehouse, plus an AI-visibility probe. The build came to 42 shared modules, 30 scheduled and on-demand tasks, 36 database migrations across 28 tables, about 110 dashboard files and 21 operator command-line tools, across roughly 190 commits.

Orchestrate

Article jobs sit in a queue in one shared database with row-level isolation by client, drained by background workers. Twelve tasks run on schedules and eighteen on demand or by webhook. Each client gets a live dashboard and an operator copilot.

Provisioning a new client is one command and about fifteen minutes: a record in the database, a brand-setup research pass, and a live dashboard. Publishing runs as a scheduled queue, typically Monday, Wednesday and Friday, with indexing requests the same day.

The weekly audit from the Optimization Loop reads what ranked and feeds the next batch’s research. Five clients are live at roughly $12 to $15 a month each.

Train

Corrections become rules. A reviewer’s fix goes into the context layer the same week. In April 2026 a client-side catch on one batch became a hard cap on table rows inside the production prompt within days.

The machine-phrasing list grew from observed tells in real drafts. The refresh threshold was set at 24 after watching good refreshes fail at 26 for keeping sections a new article would have rewritten.

And a second system sits outside the Factory as its adversary: a ship-or-block quality gate that re-verifies any deliverable in a fresh session against the original sources, where one fabricated or unverifiable claim is an automatic block. That gate has its own article: the $12-a-month factory and its QA gate.

What it has produced

For a 59-market home-services company, the Factory refreshed 158 existing articles and wrote 14 new ones in a quarter, every one through the scorecard and a human edit, while the company’s organic leads went from zero to 134 a month and it collected $32,538 from organic search in 90 days. For a pre-FDA medical device company, nine articles scored 24 or 25 out of 25 and six cleared clinical review with no rewrites. For a marketing-talent marketplace, it produced the answer-shaped pages behind an AI-search channel that billed $305,120 in six months.

Frequently asked questions

Research selects keywords against verified demand and buying intent, and a model drafts against a brief and a context layer describing the company. Code verifies what the model cannot check about itself: links, sources, schema, internal-link rules, machine phrasing. A scorecard gates the draft and a human approves before publishing.

Read next

The SEO/GEO Workstream

How I Built My Optimization Loop

Sites break quietly, and SEO wins fade when they were a project rather than a system. I built an Optimization Loop: an automated health check every two days, a weekly audit that ends in three to five action items, a weekly AI citation run across five engines with every answer stored, and a full re-audit every six months on the same method. This is what it does and how I built it.

7 min

A gardener tending an orchard beside a turning waterwheel

In February 2026 a marketing-talent marketplace had no way to tell whether ChatGPT, Claude, Gemini or Perplexity had sent it a single customer. By August the channel had billed $305,120, 2.6% of company revenue, and every dollar traced to a signed deal.

4 min

The first laden barges arrive on a new canal while a clerk opens a ledger

When a marketplace cut paid spend 55%, every channel fell 35 to 43% except leads from ChatGPT, Claude, Gemini and Perplexity, which fell 5%. A regression across 26 weeks shows why: $100k of ad spend buys about 162 form fills and a statistically zero number of AI-search leads.

3 min

A coin-paved road ends at a closed gate while travelers carry the harvest on the other path

Nobody at the company knew whether AI assistants recommended them. Six months later a weekly panel across ChatGPT, Perplexity, Gemini, Claude and Google AI Overviews showed the brand cited 74 times against Upwork's 53 and Toptal's 34, across 183 citations among six tracked competitors.

3 min

An orator on a stone rostrum with a circle of listeners

A marketplace's organic search looked healthy: 1,031 leads and $366,294 in signed revenue a year. A first-party audit found 2,650 pages telling Google to ignore them, 87% of clicks coming from people who already knew the brand, and a conversion count that was 98% pageviews.

3 min

A crowd hesitating between two nearly identical temples