01 — CONTEXT: Case Study Kit
Input definitions, validation rules, gap protocol, reference data routing, and what each mode requires.
Mode 1 Inputs — Create
| Input | Required | Example | Used For |
|---|---|---|---|
| Practice owner identification | Yes | "Rob Foncannon, Foncannon CPA Group" | File naming, header content, voice context |
| Profession type | Yes | One of: cpa, ea, cfp, ria, insurance, attorney, general | Disclaimer selection (see 02-terminology) |
| Extraction output OR Interview transcript | Yes (one or the other) | Filled case-study-extraction-template.html (preferred) OR raw Otter/Zoom transcript | Source content for every case study card |
| Client card | Yes if no extraction | Brief context about the practice owner — who they are, their business, where they are with you | Voice and tone calibration |
| Brand colors | Yes | Primary #0ae7ca, Secondary #043a51, Accent #f94a35 | Page styling — pulled from practice owner's website or design system. AOS defaults if not provided. |
| Brand fonts | Yes | Heading: Shippori Mincho B1, Body: Barlow | Page styling — pulled from practice owner's website or design system. AOS defaults if not provided. |
| CTA destination URL | Yes | https://foncannontax.com/preliminary-questionnaire/ | The action button on V1, V2, and the delivery email |
| Number of stories | Yes | 1, 2, 3+ | Determines how many case study cards generate per output |
| Convertri hosting flag | Yes | true or false (ask if not specified) | Triggers Convertri compliance rules (see 02-terminology and 04-quality) |
| Team member name | No | "Cory" | Conditionally generates a team member FAQ card if present |
Validation Rules — Mode 1
- No production without confirmed profession type. Disclaimer selection cascades from this. Ambiguous values block the run.
- No production with
[NOT SET]values in the extraction. If the extraction template has unfilled fields, halt and request completion. - No production without a CTA URL. The output is conversion-focused; without a destination, the page has no job. Ask for it; never invent one.
- No production without a Convertri flag. Default is to ask; never assume. Convertri rules are non-negotiable when applicable, and applying them when not needed unnecessarily restricts the output.
- Brand source must be confirmed. Either the practice owner's website / design system was extracted (preferred), or AOS defaults are explicitly chosen. Never silently apply AOS defaults if the practice owner has their own brand.
- Story count must match extraction content. If the extraction has 2 stories, produce 2 case study cards. Do not pad with invented additional stories. Do not collapse two stories into one.
- Numbers in the case study must match numbers in the extraction. Verbatim. If the extraction says "$58–60K," the output says "$58–60K." If a number isn't sourced in the extraction, it doesn't appear.
- Anonymization posture is confirmed via the table, not invented. V2 transformations follow the Anonymization Table in
02-case-study-terminology.md. New mappings (when a profession or strategy isn't covered) get added to the table during the run and Mode-2'd back into the kit.
Mode 2 Inputs — Improve This Kit
| Input | Required | Source | Used For |
|---|---|---|---|
| Trigger | Yes | One of: QC failure, manual edit to output, missing check, missing terminology, scope drift | Determines which files to update |
| Updated output | If applicable | The hand-corrected V1, V2, or delivery doc | Replaces / supersedes the relevant golden example (03a/03b/03c) |
| QC findings | If applicable | Specific check(s) that failed or should have caught a problem | Updates 04-case-study-quality.md (add check + Common Failure Mode entry) |
| Process changes | If applicable | Steps that were wrong, missing, or in wrong order | Updates 05-case-study-output-skill.md |
| New terminology | If applicable | Words or phrases that need locking | Updates 02-case-study-terminology.md (Terms or Anonymization Table or Forbidden Terms) |
| New profession or jurisdiction | If applicable | New disclaimer requirement | Updates 02-case-study-terminology.md Disclaimer Templates |
Validation Rules — Mode 2
- Always read the current kit files before making changes. Never update blindly.
- Changes propagate. A golden-example change usually requires output skill and quality checklist updates too.
- Never remove a quality check without a documented reason. Quality checks accumulate — each one represents a lesson learned.
- Document what changed and why. Append to each file's
## Change Log(markdown) orcomment block (HTML). - Golden examples are replaced, not edited. When V1 / V2 / delivery improve, the new versions replace 03a / 03b / 03c. Old versions stay accessible via git history, not as kit files.
- Anonymization Table additions require a sanity check. When adding a new mapping (e.g., a new profession archetype), verify it doesn't accidentally identify the featured client. Run the anonymization test before locking the new entry.
Input Priority Hierarchy
When inputs conflict or are ambiguous:
- Practice owner's design system wins for visual/brand decisions. AOS defaults only when nothing is provided.
- Extraction template wins over transcript for structured data (numbers, strategy names, timelines). Transcript wins for voice patterns and direct phrasing the practice owner uses.
- Practice owner's verbal direction wins over any document — they are the authority on their own client's story.
- AOS voice (
business-aos/reference/core/voice.md) wins over any other tonal reference. Banned words apply regardless of what the practice owner's brand allows. - Convertri compliance wins over visual flexibility when Convertri is the host. CSS variables, mailto links, and separate scripts are forbidden — non-negotiable.
- The anonymization test wins over any V1/V2 mapping. If the test fails, anonymize further even if no current mapping covers it (and Mode-2 the new mapping back into the table).
Reference Data Routing
The kit pulls from business-aos/reference/ per the Offer Page kit precedent. Load what each step needs.
Core (load before writing any copy)
| File | What It Provides | Informs |
|---|---|---|
business-aos/reference/core/voice.md | Brand vocabulary, tone, cadence, forbidden phrases | Every section — highest-priority copy reference |
business-aos/reference/core/audience.md | Who buys, language patterns, pain points | Header, Intro, CTA framing |
Brand QC (mandatory gate before delivery)
| File | What It Provides | Informs |
|---|---|---|
business-aos/reference/brand/copy-qc.md | 11 AI-pattern checks (P1/P2/P3 severity) | Step 4 in 05-output-skill.md Production Workflow — mandatory before validation |
Visual fallback (load only when no practice-owner design system provided)
| File | What It Provides | When Used |
|---|---|---|
business-aos/reference/brand/visual-style.md | AOS design system — colors, typography, layout | Fallback only |
Historical reference (read once for context, not per run)
| File | What It Provides |
|---|---|
business-aos/reference/proof/case-studies/sync-tax-arc.md | Advisor-internal narrative arc style. Not the format this kit produces, but useful for understanding how Kathryn frames engagement narratives at the advisor level. |
advisory-os-vault/content/business/marketing/campaigns/proof-gap/proof-gap-briefing-script-v3.md | Upstream methodology — the four trigger questions, the Three Layers, what owners skip. |
advisory-os-vault/content/business/marketing/brand/advisoryos-homepage-2026-04-24-snapshot.html | Authority OS positioning — where case studies fit in the OS architecture. |
Content Filtering — V1 vs. V2 (Audience Boundary)
This kit transforms one extraction into two parallel deliverables with different audiences:
| Element | V1 (Named — Approval Required) | V2 (Anonymized — Publishable) |
|---|---|---|
| Title | [CLIENT NAME] — [Story Title] | [Story Title] (no name placeholder) |
| Industry | Specific (e.g., "Real Estate Professional") | Archetype (e.g., "High-Performing Sales Professional") |
| Strategy names | Specific (e.g., "S-Corporation Conversion") | Generic (e.g., "Entity Restructuring") |
| Locations | Included | Removed |
| Family/business names | Included | Removed |
| Future plans | Specific | Generic |
| Disclaimer | Profession-specific, no anonymization note | Profession-specific, includes anonymization note |
| Approval block | HTML comment with checklist for client approval | Not present |
V1 outputs are pre-publication artifacts. They go to the practice owner for review and to the featured client for approval. Only after written approval does V1 publish.
V2 outputs are publishable on day one. The anonymization test (Could the featured client identify themselves?) is the gate — V2 ships only when the answer is no.
Both versions are produced from the same extraction in the same run. They are not two separate runs. The Anonymization Table in 02-case-study-terminology.md is the canonical mapping between the two.
Gap Protocol
A gap is a required input that is missing or unverified. Gaps are flagged, never filled with assumptions.
Blocking gaps (production halts):
- Profession type not specified (cannot select disclaimer)
- Extraction has
[NOT SET]values (cannot produce sourced narrative) - CTA URL missing (cannot produce conversion path)
- Convertri hosting flag missing (cannot select compliance rules)
- Brand source missing AND no AOS-default explicit choice (cannot style the page)
- Numbers in the extraction don't reconcile (e.g., savings amount conflicts with results table) — halt and confirm before producing
Non-blocking gaps (proceed with flag):
- Team member name not provided → omit team member FAQ; flag in delivery doc
- Story count >3 → produce all but flag length warning (long pages reduce conversion)
- Industry archetype not in Anonymization Table → propose a new mapping during the run; flag for Mode-2 add to the table
Surfacing gaps:
When a gap is detected, the kit must:
- Identify which file or section cannot be fully produced
- State the missing input specifically
- Suggest where to get it (practice owner / extraction template / AOS defaults)
- Halt the affected section until resolved (for blocking) or proceed with
[GAP: reason]inline annotation (for non-blocking)
Pre-Build Validation Gate
Before writing any output file, verify all of the following are true:
- Profession type set to a valid value
- Extraction is complete (no
[NOT SET]) OR transcript is provided with all data needed - CTA URL provided
- Convertri flag set explicitly
- Brand source confirmed (practice-owner system extracted OR AOS-default chosen)
- Story count matches extraction
- Numbers reconcile across extraction sections
- Disclaimer template selected (matches profession type)
If any of the eight is false, halt. Surface the gap. Do not start production.
Change Log
2026-04-27: Initial build via kit-builder Mode 1. Inputs and validation rules derived from case-study-agent.md (Proof Engine project) and the V1/V2 Foncannon goldens. Gap protocol and pre-build gate adapted from kit-blueprint and kit-project-plan precedent. Reference data routing modeled on kit-offer-page.