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 · Build Status Board · updated 2026-08-05

Five pillars, every moving piece, one board

EZO's own Asana: 11 steps, 16-day median, 6 of the 11 pure review. Those 11 collapse into these 5; every finding names the rule and its author.

live / built in motion this week queued blocked - named ownerNEW = capability we add beyond today's process (not consolidation)1640 tests passing158 runs journalled (79 complete)
1Structured brief
Brief generator in team's own v1.0 structure
Brief pre-check: their QA checklist as machine rules
Redmine wiring into brief inputs
Gumshoe feed LIVE (auto-pull -> staging sheet)
Marketing KB 01-11 ingested: 1,258 verified facts
FactStore: no verified fact = the brief refuses
Own SERP top-7 scrape + SEMrush signalsNEW
👥 Shaheer / Beebrak - 4 briefs on their own tasks
2AI draft
Draftgen: brief -> SOP-born draft (built, tested)
Full chain: draft -> check -> fix -> re-check, one run
Readable draft doc for the writer (counts annotated)
Writer edits captured as problems-found log
REWRITE rule: no lifted brief text
Channel spokes: LinkedIn + design/web-dev packageNEW
Brand voice scored against a written canonNEW
👥 Rida - her 4 corrections are now rules
3Machine rule checker
Deterministic rules: SOP-derived, 0-100 + CRITICAL
FixPass: fix -> independent verify -> re-check
Eval: catch 100% / fix 86% / 0 unjustified
AI reviewer: what a rule cannot catch
Run Auditor: telemetry, receipts, no silent fails
Every finding names the rule AND who wrote it
👥 Qasim - his QA + FAQ process, encoded verbatim
4Human review
Lands as a comment on the task they own
Doc shared + @mentioned, verified openable
Comment states what was checked and what was NOT
Roster refuses an unoriented recipient, by test
Failing work ships WITH findings (4 briefs, 08-05)
Pass rate: instrumented, not yet measured
👥 13 comments on 6 owners' own tasks - 0 new tasks
5Publish + verify
WordPress REST auth works (drafts only)
6 live scorecards on staged pages (83/100)
1 page staged, 0 published through the pipeline
Only 3 of 9 sprint URLs resolve (rest are planned)
Done = live URL verified + AEO measured
👥 Content + web dev time - the gap, not machinery
Connectors - where the machine reads and writes
Asana read + write-back LIVE; 13 comments posted on owners' tasksGoogle Drive/Docs/Sheets programmatic in/outRedmine access set; not yet wired into the pipelineGumshoe daily 8am cron pull since 07-29; counts match QasimLLM providers (OpenRouter corp) ONE corporate key, one gateway, data collection deniedGSC / GA4 baseline + refresh listSEMrush key requestedWordPress draft-stage adapter built (drafts only); live publish stays humanStaging env 3 of 9 sprint URLs resolve; rest are planned addresses
Week 3 - handoff week, where each day actually landed
Mon5 orphaned artifacts re-routed through owners' managers
TueRida's 4 corrections encoded; her page NOT yet re-drafted
Wed4 comparison briefs posted, failing, findings attached
Thuteam sessions: Content, Design, Social - unbooked
Fri3 assets each through, produced by THEM not by me
Sources - every document the team shared, and whether the machine uses it yet (full proof: docs/SOURCE-LEDGER.md)
Sprint SOPs + SEO rulebook the rule checker's rulesetBlog QA process blog ruleset (thin by their own P0)PMM brief process v1.0 briefgen + brief pre-checkSEO gap sheets (15 tabs) 8 of 15 tabs feed queue + lookupsGumshoe API live pull -> staging sheet, counts validatedSite KB (1,403 pages) product fact storeAsana board sweep + doc-task bridgeMarketing KB 01-11 ingested 07-28; 1,258 verified factsServer-log LLM crawls (34 tabs) largest unused assetRedmine access set, not wiredSEMrush / Serper keys held, V1 enrichment
Waiting on - blocker, owner, what unblocks
Publishing time Content + web dev → first asset liveTeam sessions Content/Design/Social → they produce 3 eachQ3 topics + SEO docs Rida / Qasim → no more interim inputsBrand voice doc Rubab → the voice score gets a referentHubSpot field map + scored forms EZO → lead-enrichment MVP
Every mark on this board is defined in the legend - nothing unexplained. Priority runs left to right: pillars 1-3 before 4, before 5. Source of truth: scripts/build_status_board.py (edit data, re-run).