04 — QUALITY: Case Study Kit
Pass threshold: 90 / 100 on the weighted scorecard, AND all binary gates pass. When to run: After every Mode 1 production, before delivering the three files. Run on each artifact (V1 HTML, V2 HTML, delivery MD) and on the kit's coherence as a set.
Gate 1 — Binary Pre-Build Gate (must pass before scoring begins)
These are blocking. If any fails, halt; do not score the artifacts.
| # | Check | Pass If |
|---|---|---|
| 1 | Profession type set to a valid value | One of: cpa, ea, cfp, ria, insurance, attorney, general |
| 2 | Extraction has zero [NOT SET] values | Every required field has a sourced value |
| 3 | CTA destination URL provided | Non-empty, valid URL |
| 4 | Convertri hosting flag set explicitly | true or false, not blank |
| 5 | Brand source confirmed | Practice owner's design system extracted, OR AOS defaults explicitly chosen |
| 6 | Story count matches extraction content | If extraction has N stories, output has N cards |
| 7 | All numbers reconcile across extraction sections | Savings amount in card header matches Results Grid; no contradiction |
| 8 | Disclaimer template selected | Matches profession type per 02-case-study-terminology.md |
If any of Gate 1 fails: surface the gap, halt production, do not score, do not deliver.
Gate 2 — Convertri Compliance (binary pass/fail, applies when Convertri = true)
Convertri violations break the page on their hosting platform — these are not "lose 3 points" issues; they are blocking.
| # | Check | Pass If |
|---|---|---|
| 9 | Zero var(-- instances in V1 HTML | Every color and design token is hardcoded as a hex value |
| 10 | Zero var(-- instances in V2 HTML | Same |
| 11 | Zero mailto: links in V1 or V2 | Only the configured CTA URL is used |
| 12 | Zero separate blocks in V1 or V2 | All JavaScript inlined onto element handlers |
| 13 | Explicit text-align on all content elements | No reliance on browser defaults |
| 14 | Gold scrollbar present (when AOS-default brand is used) | ::-webkit-scrollbar styles match the AOS gold spec |
If Convertri = true and any of Gate 2 fails: surface the violations, halt delivery, do not score, do not present to Kathryn.
If Convertri = false: Gate 2 is skipped entirely — CSS variables, mailto, separate scripts all permitted.
Gate 3 — V2 Anonymization Test (binary pass/fail, applies to every V2 always)
Could the featured client identify themselves in this V2?
If yes, V2 fails — anonymize further. Not "could a stranger identify them." The test is whether the featured client themselves would recognize the case as theirs.
For each story in V2:
| # | Check | Pass If |
|---|---|---|
| 15 | Title contains no [CLIENT NAME] placeholder and no actual client name | Generic descriptive title only |
| 16 | Industry tag is an archetype, not the actual industry | Per Anonymization Table mapping |
| 17 | Strategy tags are generic, not branded/specific | Per Anonymization Table mapping |
| 18 | No city, state, or location names | Removed entirely |
| 19 | No company / franchise / family member names | Removed entirely |
| 20 | "What's Next" contains no signature plans (e.g., specific business succession, named acquisitions) | Generic forward-looking language |
| 21 | Numbers preserved verbatim (anonymization does not weaken results) | Same dollar figures, same timelines as extraction |
| 22 | The featured client themselves would not recognize this as their case | Subjective gate — applied with care; if uncertain, anonymize further |
If any of Gate 3 fails for any story in V2: V2 fails, halt delivery. V1 may still be valid; the kit has the option to deliver only V1 + delivery doc with a note that V2 needs another anonymization pass.
Gate 4 — Weighted Scorecard (100 points, 90+ to pass)
Run only after Gates 1–3 have passed. Score each artifact (V1, V2, delivery) plus the set as a whole.
Section Completeness (15 points)
| # | Check | Points |
|---|---|---|
| 23 | All required sections present in correct order: Header → Intro → Case Cards (Card Header / Situation / What We Did + Strategies / Results / What's Next) → CTA → Disclaimer | 5 |
| 24 | Every case card contains all four body sections (Situation / What We Did / Results / What's Next) — no missing sections | 4 |
| 25 | Card Header contains title, industry tag, savings badge — for every story | 3 |
| 26 | Results Grid contains 2–3 Result Items per story (not zero, not 4+) | 2 |
| 27 | Strategy Tags present in every "What We Did" section | 1 |
Content Quality (25 points)
| # | Check | Points |
|---|---|---|
| 28 | Active voice throughout ("We restructured" — not "the business was restructured") | 4 |
| 29 | Zero fabricated quotes attributed to the featured client | 5 |
| 30 | Zero forbidden words from 02-case-study-terminology.md: leverage, synergy, unlock, empower, game-changer, journey, coaching, mindset, crush it | 4 |
| 31 | Zero hedging language: might, could, would likely, may | 3 |
| 32 | Zero vague verbs without specifics: streamlined, optimized, transformed used without concrete action behind them | 3 |
| 33 | Zero forward-looking guarantees: "will save you," "guaranteed" | 3 |
| 34 | "Projected" / "estimated" used appropriately for forward-looking figures | 3 |
Source Traceability (15 points)
| # | Check | Points |
|---|---|---|
| 35 | Every dollar figure in V1 and V2 is traceable to the extraction (verbatim or as approved range) | 5 |
| 36 | Every timeline in V1 and V2 is traceable to the extraction | 4 |
| 37 | Every strategy named in V1 and V2 was actually deployed (not invented) | 3 |
| 38 | The Situation paragraphs match the extraction's narrative — no embellishment | 3 |
V1-Specific (10 points — applies to V1 HTML only)
| # | Check | Points |
|---|---|---|
| 39 | [CLIENT NAME] placeholders present in every story title | 3 |
| 40 | Specific industries retained per extraction | 2 |
| 41 | Specific strategy names used per extraction | 2 |
| 42 | HTML approval-required comment block at top of with all four checklist items | 3 |
V2-Specific (10 points — applies to V2 HTML only; passing Gate 3 is required first)
| # | Check | Points |
|---|---|---|
| 43 | Every entry from the Anonymization Table that applies to this extraction has been swapped | 3 |
| 44 | New mappings (when applicable) added to the table during the run, ready for Mode 2 | 2 |
| 45 | Industry archetypes are credible — specific enough to be useful, generic enough to not identify | 3 |
| 46 | No HTML approval comment block (V2 doesn't need one) | 2 |
Disclaimer + Profession Compliance (5 points)
| # | Check | Points |
|---|---|---|
| 47 | Disclaimer text matches profession type exactly per 02-case-study-terminology.md | 3 |
| 48 | V2 disclaimer includes the "anonymized" phrase; V1 disclaimer omits it (per spec) | 2 |
Visual / Format (10 points)
| # | Check | Points |
|---|---|---|
| 49 | Brand colors (primary / secondary / accent) match the practice owner's design system OR AOS defaults if explicitly chosen | 3 |
| 50 | Brand fonts (heading / body) match the design system OR AOS defaults | 2 |
| 51 | Card hover effect: translateY(-8px) + box-shadow elevation | 1 |
| 52 | Responsive: @media (max-width: 768px) rules present and effective | 2 |
| 53 | Savings Badge uses brand-accent gradient, not arbitrary color | 2 |
Delivery Doc Structure (10 points — applies to the MD file)
| # | Check | Points |
|---|---|---|
| 54 | Email body present with subject line, body, signoff | 3 |
| 55 | "A Note on Case Studies vs. Testimonials" section present | 1 |
| 56 | V2 inline content (full case studies in markdown) | 2 |
| 57 | V1 inline content (full case studies in markdown) with [CLIENT NAME] placeholders intact | 2 |
| 58 | "Before Publishing Version 1" approval checklist present | 1 |
| 59 | Email does NOT pitch Advisory OS, NOT include pricing, NOT offer a standalone build | 1 |
External QC Dependency (mandatory after Gate 4)
Run business-aos/reference/brand/copy-qc.md against every prose paragraph in V1 / V2 / delivery email body. Fix all P1 and P2 violations. P3 violations may pass with documented rationale.
This is not part of the 100-point score — it's a separate mandatory pass before delivering to Kathryn.
Scoring
- Gate 1 fails → halt, no score, no delivery, surface the gap
- Gate 2 fails (Convertri = true) → halt, no score, no delivery, surface the violations
- Gate 3 fails → V2 must be re-anonymized; V1 may still deliver if it scored 90+ on Gate 4
- Gate 4 < 90 → identify the failed checks, fix the artifact, re-score
- Gate 4 ≥ 90, Copy-QC P1/P2 clean → deliverable. Present to Kathryn.
Common Failure Modes
| Failure | What Happens | How to Fix |
|---|---|---|
| Fabricated quote in a case study card | Reads as testimonial, not case study. Featured client never said it. Risk of misrepresentation. | Remove the quote. Re-narrate the moment in third-person prose. If the extraction has a real quote worth using, place it in the delivery email body — not in a case study card. |
| V2 leaks an identifying detail (city, family name, signature plan) | Featured client recognizes themselves; V2 fails Gate 3. | Run anonymization scan against the Anonymization Table + a custom check for any proper noun or specific situation in the extraction. Replace or remove. Re-run Gate 3. |
| V1 published without client approval | Compliance / relationship risk for the practice owner. | The HTML approval comment block must be present in V1 — if missing, V1 was treated as publishable when it wasn't. Ensure Gate 4 check #42 catches this every run. |
| Disclaimer mismatch (V1 has "anonymized" phrase, V2 doesn't, or wrong profession template) | Compliance risk + signals sloppy work to a regulated-profession audience. | Re-derive disclaimer from profession type using 02-case-study-terminology.md Disclaimer Templates. V1 omits the anonymization phrase; V2 includes it. |
| CSS variables present when Convertri = true | Page breaks on Convertri (variables don't resolve in their build). | Replace every var(--name) with the literal hex/value. Re-run Gate 2. |
| Vague verbs without specifics ("streamlined," "optimized") | Stays at the Surface layer (per The Proof Gap briefing). Reader doesn't see the real story. | Replace with the specific action: "restructured the business as an S-Corp," "filed five years of back returns," "took over bookkeeping mid-year." See 02-case-study-terminology.md Forbidden Terms. |
| Hedging language ("might," "could," "may") | Kills Hormozi specificity. The case study reads tentative when the actual outcome was concrete. | Grep for hedge words. Replace with what actually happened. For forward-looking, use "projected" or "estimated." |
| Numbers don't match extraction | Trust violation — and risk of misstating client outcomes. | Reconcile every number against the extraction before Gate 1 #7. If the extraction has a range, use the range; never narrow to a point estimate. |
| Brand colors don't match practice owner's design system | Page looks foreign on the practice owner's site. AOS-defaulted when the practice owner had their own brand. | Re-extract from the practice owner's website / design system. AOS defaults are fallback only — never the silent default. |
| Email pitches AOS / mentions pricing / offers a standalone build | Violates the explicit content rule. Damages the conversation the delivery email is supposed to open. | Re-write the email to: connect to the practice owner's language, mention V1/V2 versions, open the door — and stop. No pricing, no proposal language, no separate build offer. |
| Story count doesn't match extraction (kit padded or collapsed) | Featured stories misrepresented. Padded stories invent outcomes. | Gate 1 #6 should catch this. If it didn't, fix the gate logic in Mode 2 and re-run. |
| Anonymization Table missing a needed mapping | New profession or strategy archetype encountered, not yet in the kit. | Add the new mapping to the table during this run, use it for V2, and Mode-2 it back into 02-case-study-terminology.md. Document in this file's Common Failure Modes if the missing mapping caused a Gate 3 failure. |
Change Log
2026-04-27: Initial build via kit-builder Mode 1. Four-gate structure (binary pre-build / binary Convertri / binary anonymization test / weighted 100-point) chosen because the case study kit has multiple non-negotiable compliance gates that should not be overridable by high score elsewhere. External Copy-QC dependency carried over from kit-offer-page precedent.