name: ctq-social description: Use when reviewing, rewriting, or quality-checking any social media post or article draft for Boubacar Barry before publishing. Triggers on "review this post", "quality check this draft", "ctq-social", "does this sound like me", "check this LinkedIn post", "review this tweet", "run ctq", or any post needing Sankofa Council review before publishing.
CTQ Social -- Content Quality Control for Boubacar Barry
Overview
CTQ (Content Quality Control) is a minimum two-pass Sankofa Council review process applied to every post or article before it is published. The Council reviews through Boubacar's voice, brand positioning, and platform dynamics. It does not validate -- it stress-tests.
Default CTQ target: The previous session's CTQ. If Boubacar specifies a different target at the start of a session, use that instead. The target is locked for the session unless he changes it explicitly.
HARD RULES added 2026-05-21 (locked from Wheeler + Day 4 wins)
Email Contrast Pre-Publish Gate (mandatory for any HTML email)
Before sending any HTML email artifact (cold outreach, audit delivery, self-digest, newsletter, 7-day-challenge results), run:
python3 scripts/email_contrast_check.py path/to/email.html
Exit 1 on FAIL = refuse to send. Also REQUIRE:
- Light theme default (white bg + dark text) — dark theme breaks in Gmail Dark Mode
- Every style inlined (NEVER
<style>blocks — email clients strip them) <meta name="color-scheme" content="light only">+<meta name="supported-color-schemes" content="light only">in head- Reference palette (all WCAG AA on white): INK
#1A1A1Atext, LINK#0066CC, ACCENT_ORANGE#C23B00, SUCCESS_GREEN#1E7E34, CARD_BG#F6F7F9, CELEBRATE_BG#FFF7E6, BORDER#D1D5DB
Caught when Day 4 v1 email rendered illegible (light inline text + light email-client default bg). Detail: feedback_email_contrast_must_pass_before_send.md.
3-check pre-send formula (mandatory for any first-contact outbound to a named prospect)
Single-prospect first-contact (cold email, warm reply, audit drop, follow-up after silence) MUST pass ALL THREE:
- Specificity about THEM — 1+ detail proving 5+ min research (business, niche, offer, competitor, pain, domain, team, reviews, content). NOT generic flattery.
- Diagnostic humility about what we DON'T know — explicit "I can't tell from outside what your real bottleneck is. Could be A, B, C, or something I haven't named."
- Zero sales pressure on first interaction — no fees, no contract, no "decide today," no scarcity. CTA = smallest possible micro-commitment.
All 3 pass = ship. ANY fail = revise.
Codified from Spine Craft Utah (cold→warm reply, first-ever cold-email reply for CW) + Nate Tanner (warm→deep engagement w/ implementation + book-research call ask) both succeeded via this exact formula 2026-05-21. Detail: feedback_diagnostic_humility_plus_specificity_pattern.md.
When in doubt: if the draft could have been written by any SEO/AI consultant in the saturated 2026 inbox = revise. If only Boubacar with HIS research could have written it = ship.
LinkedIn craft reference: When checking or drafting any LinkedIn post, also apply skills/ctq-social/references/linkedin-craft.md — hook patterns, pivot line rules, format norms, CTA types, and creator techniques.
CTQ Targets (what the Council judges against)
Each target is a lens the Council applies. Boubacar states the active target at session start. Default is the full set below when no target is specified.
| Target | What it checks |
|---|---|
| AI Guru / Hiring Signal | Does this show Boubacar as someone an org would hire as an AI leader? Does it signal practitioner depth, not just commentary? |
| Voice Authenticity | Does this sound like Boubacar -- direct, earned, opinionated, zero hedging? Or does it sound like a thought leadership bot? |
| Hook Power | Would this stop a scroll? Judged against the best hooks on LinkedIn/X right now, not just "a good opening line." |
| CTA Quality | Does the ending make someone think "hmm"/"that's me," OR ask for real engagement (a genuine comment-driving question, a follow, the newsletter)? Banned: lazy yes/no + survey questions + weak rhetorical setups. A SPECIFIC question that invites replies is GOOD, not banned. |
| Anti-Professorial | Is Boubacar in the room with you or lecturing from a podium? Knowledge is embedded in scenes, not explained. |
| Viral Worthiness | Would someone screenshot this, share it, or send it to their CEO? Does the last line land as wit, wisdom, or a mirror? |
| Platform Fit | Right length, right rhythm, right energy for LinkedIn or X on that day of the week. Friday = more wit. Monday = sharper edge. |
| Engagement Mechanism (added 2026-05-30) | Does the post carry an explicit engagement hook -- a CTA (follow / The Weekly Signal newsletter / click) or a genuine open question? Per-post ADVISORY (not every post needs one). RUN-LEVEL: flag if >=3 posts in a row carry none. Lean frequent while building the business. See feedback_engagement_cta_cadence_2026_05_30. |
The Five Council Voices
Each voice reviews independently with no knowledge of what the others said.
| Voice | Role | What they look for |
|---|---|---|
| Contrarian | Finds the flaw | What is weak, generic, or AI-sounding. What does not earn its place. |
| First Principles | Strips to the bone | What is this post actually trying to do? Does every sentence serve that job? |
| Expansionist | Finds the missed opportunity | What emotional truth is buried? What human moment is missing? |
| Outsider | Platform read | How does a cold reader experience this? Pacing, rhythm, scroll behavior. |
| Executor | Makes it actionable | Specific line-level fixes. Nothing vague. |
After all five report, the Chairman synthesizes: convergence points, divergence points, final verdict, and one rewrite directive.
The Process -- Minimum Two Passes
Pass 1: Full Council review of the raw draft
Chairman delivers verdict + rewrite directive
Rewrite produced with explanation of every change
Pass 2: Full Council review of the rewrite
Special focus: Hook and CTA audit
Chairman delivers viral verdict (score + final call)
Pass 3+: Run if Boubacar requests changes or if viral score is below 8/10
Never declare a post done after one pass. Two is the minimum. Three is common.
Hook Audit (mandatory in every Pass 2)
The best hooks do one of three things:
- Name something the reader has felt but never said out loud -- creates instant recognition
- Paint a scene from their actual workplace -- makes them picture their own reality
- Make a claim that demands they keep reading -- provocative but earned
Judge every hook against those three. "A good opening line" is not enough. It must stop a scroll.
Red flags in hooks:
- Opens with an abstract noun ("Strategy", "Leadership", "AI")
- States a category error without making it felt
- Could have been written by anyone
CTA Audit (mandatory in every Pass 2)
A strong ending does ONE of these (mix across a run of posts -- do not default to the same kind):
- Hold up a mirror -- reader sees themselves and feels recognized (or exposed)
- End on wit that stings -- a laugh followed by a wince
- Drop a line that is quotable and shareable -- they screenshot it
- Leave a thought they cannot shake -- a statement that provokes
- Real call-to-action -- ask for a follow, point to the newsletter (The Weekly Signal), or a click. Use openly; this is how the audience compounds.
- Genuine engagement question -- a SPECIFIC, open question that invites a real comment. NOT a lazy survey question.
Engagement-mechanism rule (added 2026-05-30): options 5 and 6 are the engagement hooks. Not every post needs one, but while building the business, lean frequent -- the MAJORITY of a batch should carry a CTA or a genuine question. Ending only on mirror/wit (1-4) asks for nothing; fine occasionally, a lost opportunity if it is every post.
Hard rules:
- Banned: lazy yes/no questions + survey questions ("What's your experience with...?") + weak rhetorical setups that telegraph the pitch.
- ALLOWED + encouraged: a specific, provocative open question that drives comments, and any real CTA (follow / newsletter / click). The old "always prefer wit over a question" rule is RETIRED -- it suppressed engagement.
Run-level engagement check (mandatory when scoring a batch -- A/B/C/D/themes)
When scoring more than one post in a session, OR reviewing the scheduled queue, check engagement-hook COVERAGE across the run:
- Tag each post:
engagement = CTA | question | mirror-only. - Flag if >= 3 consecutive posts are
mirror-only(no CTA, no question): "N posts in a row with no engagement hook -- add a CTA or question to the next." - Target during build phase: the majority of any batch carries an engagement mechanism. Tune down later.
This is the cross-post gate single-post CTQ cannot see. Reference: feedback_engagement_cta_cadence_2026_05_30.
Voice Rules (non-negotiable in every pass)
From the BouB Voice Mastery profile:
- No em dashes. No en dashes. No double hyphens. Rewrite the sentence.
- No hedging. "It might be", "one could argue", "perhaps" -- cut all of it.
- No AI red-flag words. Leverage, synergy, tapestry, delve, seamless, cutting-edge, revolutionary, notably, indeed.
- No throat-clearing. "In the realm of", "when it comes to", "it is important to note."
- Sentence variety is mandatory. Short. Long. Short. Fragments are allowed and encouraged.
- Specifics over generics. Real numbers, concrete scenes, named moments beat abstractions every time.
- Direct is respectful. Start with the insight. Never wind up.
- Sentence case is REQUIRED. Boubacar does NOT write in all-lowercase. First word of every sentence capitalized. Proper nouns capitalized (Boubacar, Catalyst Works, Signal Works, agentsHQ, humanatwork.ai = brand name canonical lowercase OK). One occasional lowercase mid-sentence word natural. All-lowercase post = auto-FAIL. Half-lowercase post (< 80% sentence-start uppercase) = auto-FAIL. Rule locked 2026-05-20, enforced via
orchestrator/lint/lowercase_gate.py. Executor voice MUST flag every lowercase-violation as auto-FAIL before declaring Pass 2 complete.
Boubacar's Positioning (Council must know this)
Boubacar Barry is a diagnostic problem-solver using eight lenses equally. He is NOT a TOC consultant. He is NOT a framework vendor. He is someone who has built AI into his own operation first and now brings that to others.
Posts targeting AI leadership roles must signal:
- Practitioner depth (he has built things, not just observed them)
- Strategic clarity (he sees what others miss)
- Calm authority (the framework exists, he is not reacting)
The line "I know because I built one. Mine first." is the model for how to signal practitioner credibility without overclaiming client work.
Platform Declaration (runs before Pass 1)
State the platform before any review begins. Format determines output structure.
| Platform | Format rule |
|---|---|
| Paragraph line breaks. Max 1300 chars for short posts; 3000 for long-form. | |
| X (single post) | Under 280 characters. No trailing hashtags. |
| X (thread) | Numbered tweets (1/, 2/, ...). Each tweet standalone-readable. Hook tweet under 200 chars. |
| Article | No character limit. SCQA structure preferred (Situation → Complication → Question → Answer). |
If platform is not declared by Boubacar, ask once before proceeding.
Output Format for Every Pass
## CTQ Pass [N] -- [Voice Name]
Verdict: [score or label]
[2-4 sentences max. Specific. No praise without evidence. No critique without a fix.]
## Chairman Synthesis
Convergence: [what all voices agreed on -- act on these]
Divergence: [named tensions]
Viral score: [X/10]
Rewrite directive: [one clear instruction]
## Rewrite v[N]
[Full post]
## What changed and why
[Bullet list. Every significant change gets one line of reasoning.]
Cross-Model Adversarial Check (runs after Pass 2 Chairman Synthesis)
Single-model scoring has systematic blind spots — Sonnet misses the same things every run. After the Chairman delivers the Pass 2 viral score, route the final rewrite + the five CTQ targets (Voice Authenticity, Hook Power, CTA Quality, Anti-Professorial, Viral Worthiness) through a second model as adversarial reviewer.
How to run:
Send the final rewrite + this prompt to DeepSeek R1 via OpenRouter (
deepseek/deepseek-r1model):"Score this LinkedIn/X post on these five criteria, 1-3 each. Be adversarial — look for what the previous reviewer missed. Criteria: Hook Power (scroll-stop test), Voice Fidelity (sounds like a specific human not a bot), Diagnosis Clarity (one bold claim committed), AI Slop Absence (no hedge/filler/slop), CTA Landing (mirror/wit/wisdom not a question). Output: criterion name, score 1-3, one-line reason."
Compare scores to Sonnet's Chairman verdict.
If any criterion diverges by ≥2 points: flag it explicitly before declaring done. One of the two models is wrong — surface the disagreement to Boubacar and let him decide.
If all criteria within 1 point: proceed. The two models agree; the post is clean.
When to skip: Story Review posts (different rubric). Only fires on standard CTQ.
When to End the CTQ Session
Stop when ALL of these are true:
- Viral score 9/10 or above from the Chairman
- Hook passes the scroll-stop test
- CTA lands as mirror, wit, or wisdom (not a question)
- Zero dashes of any kind
- Zero AI red-flag words
- Post sounds like Boubacar in the room, not Boubacar on a podium
- Positioning signal is present (practitioner, not commentator)
- Sentence case passes (
orchestrator/lint/lowercase_gate.passes_sentence_casereturns True). All-lowercase or <80% sentence-start uppercase = auto-FAIL, do not declare done.
If Boubacar says "post it" before 9/10 -- that is his call. Respect it and update Notion.
Bookmarkability Rubric (Shann OS -- mandatory before Chairman final verdict)
Score 0, 1, or 2 per row. Bar: 8/12. Below 8 = fix the weakest row, re-score. Do not trash the draft -- fix the row.
| Row | What it checks | Score |
|---|---|---|
| Saves the reader a future task | Does reading this remove something the reader would otherwise have to figure out? | /2 |
| Includes proof | Numbers, screenshot, named example -- not a claim without evidence | /2 |
| Gives a reusable takeaway | Template, checklist, frame, or mental model they can apply without Boubacar in the room | /2 |
| Has a specific audience and job-to-be-done | One person. One situation. Not "leaders" or "professionals." | /2 |
| Can be applied without Boubacar | Does it work if the reader never meets him? | /2 |
| Has a strong visual or screenshottable line | An image, a table, or one line they will screenshot | /2 |
Total: /12. Verdict:
- 10-12: ship
- 8-9: ship (flag the weakest row for next draft)
- 6-7: fix and re-score (name the single row that lifts the score most)
- 0-5: kill or return to brief
Run this rubric at Pass 2, after Hook and CTA audits. Log the score in the CTQ output under Chairman Synthesis.
After Approval
HARD RULE (locked 2026-05-17): "After Approval" means AFTER Boubacar explicitly says "add to Content Board" or equivalent. CTQ pass alone is NOT permission to write to Notion. Show the polished draft in chat; do NOT auto-write to the Content Board on personal-side content (LinkedIn / X / personal newsletter / personal-brand articles). See feedback_content_board_personal_approval_before_write.md.
Workflow once Boubacar approves:
- Boubacar specifies: status + scheduled date (or "set the date yourself" / "let me set it later")
- Create the Notion Content Board record with the status Boubacar specified
- Update the matching platform record (LinkedIn and X are separate records, same draft) — same rule applies, only create if approved
- Once a record sits at Status = Ready + has a Scheduled Date Boubacar set → Blotato / publish pipeline can auto-fire on that date
- After publish lands: Status = Posted, Posted Date = actual posted date
- Move to the next post in the arc
If you wrote to the Content Board without explicit approval (mistake): downgrade Status to "In Review", add violation flag to Source Note, surface in chat for Boubacar to keep + bump / archive / decide.
Flagship Article Workflow (lessons from 2026-05-11 session)
Flagship articles need extra rigor. Short-post mistakes are recoverable in a day. Flagship mistakes age publicly and cross-post to multiple platforms.
Hard rules for flagship articles
- Show the full draft alongside every score report. Never split. Reader can't evaluate "9.5/10" without seeing the text. Single message: draft first, score second.
- Voice scan must include markdown headings. Banned words in
##headings count too. Easy regex miss in v3-v5 of the flagship — caughtactuallyonly on re-read. - Date references soft-anchored. "Two days ago" ages by ship date. Use "a few days ago" / "recently" / event-anchored references. See
boub_voice_masteryfor rule. - Anchor to ONE specific cultural-bridge scene, not multiple. Flagship has space for depth. Use it. Conakry motor-taxi scene + mother+government telecom is one earned anchor, fully drawn. Don't dilute with 2 weaker ones.
- Hard fact check before lock. Country, city, family role, current titles, exact product names. Wrong country in a flagship is reputational. Boubacar = Guinea, Conakry, mother at government telecom company.
- CTA = subtle, not pushy. Calendly link bare. No price in the article (price = pre-qualification in the booking flow itself). Disqualifier-soft close ("if it is not your moment, save the link") preserves trust on cold readers.
- Cross-posting plan logged in Source Note. Flagship goes to LinkedIn Article, X, boubacarbarry.com, catalystworks.consulting. Document the plan on the Notion record so it doesn't get lost.
Friend-over-coffee test (mandatory final pass)
Before declaring a flagship done, read it aloud. Ask: would a smart friend say this over coffee, or does it sound like a consultant explaining a methodology?
Red flags that mean the article drifted into whitepaper:
- Passive voice ("got built," "got pointed at," "is being done")
- Sentences that could appear in any AI consultant's blog
- Stacked "I" statements that flatten to autobiography (cut redundancy, don't replace with passive)
- Section that explains a framework without one human moment inside it
If the friend-over-coffee test fails, the I-count or word count is NOT the problem. The voice is. Roll back, surgical trim only.
The "I" trap (caught 2026-05-11)
When a flagship has 25-30 first-person pronouns and feels heavy, the instinct is to slash them. Don't. Replacing earned "I" with passive voice ("the reviewer got pointed at" instead of "I pointed the reviewer at") makes the article sound corporate and cold. The reader trusts the human, not the construction.
Right move: surgical cut 5-8 redundant stacks. Target ~22 I's for a 1400-word piece. Keep every I that owns an opinion, witnesses a moment, or anchors a scene. Cut the I's that frame, restate, or chain.
See boub_voice_mastery "I-Count Discipline" for full pattern list.
Story Review (replaces standard CTQ for Content Type=Story posts)
Story posts are NOT scored against the standard CTQ rubric. They follow a different review.
Story Review has one job: Protect the raw voice while shaping the post for impact.
Pass 1 -- Story Review:
Ask three questions only:
- Is the opening moment specific enough that the reader can picture it? If not, ask Boubacar for one more detail. Do not invent one.
- Does the post stay in the scene or does it drift into framework/explanation? Cut anything that explains what Boubacar should have felt or learned.
- Does the last line land as a statement the reader will remember? If it ends with a question, rewrite it as a statement.
What NOT to do in Story Review:
- Do not polish the grammar into smoothness -- rough edges are intentional
- Do not add context the reader "needs" -- trust the reader
- Do not add a lesson or a takeaway unless Boubacar put one in the raw input
- Do not run Hook Audit or CTA Audit scoring -- story posts earn attention differently
- Do not fabricate additional details to make the scene richer
Story Review output format:
Story Review Pass 1
Scene clarity: [sharp / needs one detail]
Stays in scene: [yes / drifts at: quote the drifting line]
Last line: [lands / rewrite suggestion]
Draft: [full post -- minimal changes only]
What changed: [one line per change, only if changed]
When to end Story Review:
Scene is specific. Post stays in the moment. Last line is a statement. Done. No viral score. No Chairman synthesis. Boubacar approves and it posts.
Brand Spine Gate (MANDATORY -- runs before Pass 1, after Fabricated Story Gate)
Three diagnostic tests. Any "no" = rewrite before passing to Council.
- Could anyone with Boubacar's niche have written this? (If yes: not earned enough — ground in a specific anchor)
- Does this draw from a win, failure, contrarian position, or value Boubacar has actually lived? (If no: synthesized best practice — flag and anchor it)
- Does this make it obvious what specific problem CW solves and for whom? (If no: add one grounding line)
Reference: skills/boub_voice_mastery/references/brand-spine-audit.md for full values list and earned anchors.
Fabricated Story Gate (MANDATORY -- runs before Pass 1)
Before any CTQ pass begins, scan the draft for fabricated anecdotes attributed to Boubacar.
Red flags:
- Named clients or characters Boubacar has not confirmed ("Marco called me at 2 AM", "I met Sarah at a logistics firm")
- Specific dollar figures tied to a client story with no sourced citation
- "Last quarter I..." or "One of my clients..." followed by a scene Boubacar did not provide
- Hypotheticals framed as lived experience ("Picture this" presented in first person as fact)
Rule: If ANY fabricated story is found, STOP. Do not proceed to Pass 1.
Action:
- Flag the exact sentences that are fabricated
- Ask Boubacar: "Is this a real story? If yes, confirm details. If no, I'll rewrite as an explicit hypothetical or remove it."
- Only proceed once the story is either confirmed real or rewritten as clearly hypothetical ("Imagine a COO who..." not "I met a COO who...")
Why this matters: A false anecdote attributed to Boubacar by name is a reputational liability. One fabricated client story can destroy the practitioner credibility the entire content strategy is built on.
Common Mistakes
| Mistake | Fix |
|---|---|
| Fabricated client story attributed to Boubacar | Stop. Flag. Confirm or rewrite as explicit hypothetical before any other review. |
| Ending with a yes/no question | Replace with a mirror statement or wit that stings |
| Framework explanation in the body | Embed knowledge in a scene, cut the explanation |
| "Decision architecture" and similar consulting jargon | Rewrite in plain English with a specific image |
| Hook is a concept not a scene | Rewrite hook to put the reader in a specific moment |
| Post teaches instead of provokes | Save the lesson for the article. Post creates the itch. |
| Declaring done after one pass | Two passes minimum. Always. |
| Generic ending that anyone could write | Find the one line only Boubacar could write |