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.
Orientation · for the content team

Where every document enters the machine

Read left to right. The blue dashed box above each stage is what goes IN and who owns it. The green box below is what lands on disk when that stage finishes. Nothing here is a black box: every green item is a real file you can open in the run folder.

Goes in
Gumshoe citationsowner: Qasim · daily API pull
Gap tabs in the sheetowner: Qasim · his stacked rank
STAGE 1
Pick the topic
Ranks what Qasim's research already surfaced, by citations behind each topic. It never invents topics.
Comes out
topic-queue-*.json
a ranked list of what to build
Goes in
SEO input docowner: Qasim / Shaheer · one per pagekeywords + fan-out queries
Fan-out promptowner: Qasim · his prompt, verbatim
Product facts + KBfrom EZO's own KB docs
STAGE 2
Write the brief
(or blog outline)
Pages get a brief in PMM's Phase-5 shape. Blogs get an outline instead. Any claim with no source must say NEEDS-SOURCE rather than sound confident.
Comes out
generated-brief.md
fanout-raw.md + fanout-tree.md
brief-provenance.json - what it read
Goes in
The approved briefowner: PMM (Rubab's team)
Sprint SOPsEZO's own page-structure ruleschar counts, section order, CTA rules
STAGE 3
Write the draft
The draft is born already inside the SOP structure, because the writing instructions are generated from the same rules that will grade it. It can only use what the brief carries.
Comes out
draft.json / draft.md
the page, section by section
Goes in
Sprint SOPsEZO's own rules → the rule checker
QA rubric v1ours, from their docs → the AI reviewer
Blog + Money-page QA promptsowner: Qasim · verbatim
STAGE 4
Check it
Three separate checks, described on the next page. They produce a score and a findings list, never a silent edit.
Comes out
gate.md - every rule that failed
layer-b.json - the scores
canon-qa-report.md - Qasim's audit
Goes in
A draft that passedplus its whole scorecard
STAGE 5
Hand it over
Lands in WordPress as a DRAFT, never published, and only when explicitly armed. A review task is created in Asana. A failed draft never leaves the folder.
Comes out
WordPress draft + Asana task
journal.jsonl - every step, timestamped
The human review seat never went away. Stage 5 hands a person a draft plus the reasons the machine had for passing it. The machine's job is to remove the rule-checking a person used to do by hand, not to decide that a page is good. When a reviewer disagrees with the machine, the reviewer is right and the rule gets encoded - that is how Rida's feature-description character range entered the rule checker on 2026-08-04.
Where the run folders live: pipeline/runs/run-YYYYMMDD-HHMMSS/. One folder per run, holding every file named above. If you ever want to know why a page scored what it scored, open that folder - the answer is on disk and does not depend on anyone's memory of it.
Orientation · page 2

Every term, and where it came from

The colour tells you whether a word is standard in the industry, EZO's own vocabulary, or something we invented for this project. If it is blue, nobody outside this engagement has heard of it, and you should never feel behind for not recognising it.

INDUSTRY - standard outside EZO EZO'S OWN - from their docs, predates us OURS - we coined it here
TermOriginWhat it actually means
The rule checkerretired name: "Layer A"OURS Counts characters, checks section order, catches banned CTA labels like "Learn more". No AI involved - it either breaks a rule from EZO's SOPs or it doesn't. Named in the QA rubric we wrote in week 1.
The AI reviewerretired name: "Layer B"OURS An AI model scores the draft 1-5 on six things (accuracy, clarity, voice, search intent, originality, staying inside the right product). Same rubric doc as the rule checker. It grades the draft against its approved brief - that limit matters, see the bottom of this page.
The human reviewerretired name: "Layer C"OURS A person reviews. Always existed, never automated.
The checkretired name: "the gate"OURS Shorthand for the rule checker and the AI reviewer together, and the pass/fail they produce. A draft that has been through both has "passed the check".
Why the retired names
are still listed
OURS The four names above were ours, they were jargon, and we dropped them. They still appear in Asana task titles written before we did. They are listed here so that a task called "Layer B calibration" is something you can look up rather than something you have to ask about. Nothing on this site uses them.
Money pageEZO'S OWN EZO's word for a page meant to sell: feature, solution, use case, industry, comparison. Their QA doc has a whole separate process for these versus blogs. Not our coinage.
Fan-out queriesEZO'S OWN Qasim's method. Take one keyword, ask a model to list every follow-up question a search engine would run to answer it properly. The prompt is his, in his QA doc's appendix.
Retrieval treeEZO'S OWN The second half of that same prompt of his: the same queries arranged as a hierarchy, showing what nests under what. Tells you section depth rather than section list.
Phase 5EZO'S OWN The brief-writing stage in Rubab's PMM Page Brief Process v1.0. "Phase-5 structure" = the exact headings her process says a brief must have.
AEOINDUSTRY Answer Engine Optimisation. Getting cited by AI assistants rather than ranked by Google. The whole reason Qasim's role exists.
CVEINDUSTRY Common Vulnerabilities and Exposures. A public catalogue of known security flaws. Each one gets a permanent ID like CVE-2024-3094. Run by MITRE, a US non-profit that maintains it for the government. Security teams say "we have a CVE" the way a doctor says "it's a diagnosis code".
MITREINDUSTRY The organisation that maintains the CVE catalogue. Nothing to do with EZO or with us.
FactStoreOURS Our file of verified product claims, each with a source. When a draft states a number, it has to cite an id from here, or the rule checker rejects the number as improvised.
FixPassOURS Our automatic repair step: a model proposes fixes for what the check found, and a second, different model has to approve each one against a cited fact before it is applied.
Canon relayOURS Our name for running Qasim's QA process through the API instead of by hand: Qwen audits, Kimi audits, Claude consolidates. The process is his; only the plumbing is ours.
ProvenanceINDUSTRY A record of where something came from. brief-provenance.json lists every document a brief actually read.

The one limitation worth understanding, in plain terms

The AI reviewer grades a draft against its brief. So it cannot catch a mistake that was already in the brief.
On the patch-deployment page, the draft said "close the CVE". Three AI judges all called that accurate - and by their own rule they were right, because the approved brief says "CVE closure" seven times. The draft copied the brief faithfully. Qasim's own QA process caught it, because that process reads the page as a subject-matter expert with no brief in hand. This is a structural blind spot, not a bug, and it is the clearest argument for running his process alongside ours rather than instead of it.
If a word is not on this page and it gets used anyway, that is our mistake, not a gap in your knowledge. This list is the full vocabulary of the system as of the build date in the bar at the top of this page.