Every page here is also a document. Use your browser's print or save-as-PDF and you get the same PDF that goes out by email, which is why these are laid out like sheets of paper.
EZO Content Pipeline · Pillar 2 · AI Draft · 2026-07-27

The draft is born inside the SOP, then scored by the machine

The real Hardware feature-page brief through the draft stage. The writer's job moves from typing the first draft to editing and judging it - her seat is outlined below.

built + tested code path (113 tests) hand-executed today - drafter API call blocked on credits; the scores are real output from the check fed by the one SOP ruleset - change a rule once, drafter and rule checker both move outlined panel = the writer's seat (Wed session)
ONE RULESET, TWO CONSUMERS - the SOP page rules (pipeline/qa_gate/feature_page.py) become both the drafter's constraint sheet and the rule checker's 20 checks. No hand-copied numbers anywhere.
1 · Approved brief
Hardware Asset Discovery & Tracking - PMM-team structure, 30,777 chars. Leaves real choices open: 3 hero headings, 4 benefits H2s, per-block headline picks.
2 · Draftgen
Constraint sheet built at call time from the rule checker's ruleset. Grounding: brief-only - no invented stats, names, or pricing; gaps become [NEEDS-SOURCE].
3 · Draft, born in structure
13 sections in SOP order. H1 = 40/40 chars, hero heading = 50/50, hero description = 229 (200-230). CTAs sentence case per SOP.
4 · QA check
Deterministic - 20 checks, 0-100 + CRITICAL, PASS at 80. Scored this draft 95/100 in under a second, findings itemized.
5 · Writer's seat
Edit + judge, not first-type. Fix what the check flags, pick the headlines, run the voice pass, log what the machine got wrong.
The scorecard she receives (real output from the check)
95/100PASS · 19/20 checks passed
1 finding · 0 critical
[MEDIUM] stats-h2 - length 44, allowed 50-70. The brief never wrote a stats heading, so someone had to. That someone is the writer - this is exactly where her judgment enters.
ElementMeasuredSOP rule
H140 chars20-40
Hero supporting heading50 chars40-50
Hero description229 chars200-230
Meta title57 chars50-60
Meta description152 chars145-160
Stats section H244 chars50-70
How the score works: 20 checks, score = checks passed out of 20. PASS needs 80+ and zero CRITICAL findings. A missing required section is CRITICAL - it can never silently pass. Fix the one heading above and this page re-checks at 100.
Born in structure - 13 sections, SOP order
breadcrumbhero trust badges 4stats 3 benefits 6 cardslogos [NEEDS-SOURCE] mid CTAfeature detail 6 blocks testimonials 3mid CTA 2 resources 5FAQs 10 final CTA
Every count lands inside its SOP range on first pass. Approved logos are not in the brief, so the machine refuses to invent them - the red chip is an honest hole for the content team, not filler.
Conflict surfaced, not smoothed over: the brief writes CTAs as TALK TO AN EXPERT; the SOP mandates sentence-case buttons. The machine follows the SOP ("Talk to an expert") and the conflict stays logged for a human ruling - the check flags, it never silently resolves.
Where her judgment enters - Wed session script
Role shift: the machine types the first draft inside the rules. The writer edits, chooses, and catches what rules cannot.
1Input - open the approved brief; see the choices it deliberately leaves to a writer.
2Constraints - the drafter is told the same character counts the rule checker enforces. She never memorizes the SOP table again.
3Generate - watch the draft appear already in SOP order, gaps marked [NEEDS-SOURCE].
4Scorecard - the check returns 95/100 with the stats-h2 finding itemized.
5Her pass - fix the flagged heading, pick the hero and benefits headlines, voice pass, re-check and watch the score move.
6Feedback loop - what she flags becomes a rule in the checker or a rubric criterion. Problems found get logged - Friday's deliverable.
Sources: Marketing Team Sprint SOPs (the rule checker's ruleset), Hardware feature-page brief (content team), pipeline/draftgen.py + pipeline/qa_gate/ (built, 113 tests passing). Today's live drafter call hit an API credit error (exact error and request ids recorded in docs/plans/pillar2-ai-draft-build.md); the draft above was assembled by hand from the same brief under the same constraint sheet, and every scorecard number is the deterministic rule checker's actual output. Every mark on this page is defined in the legend.