CFA lessons vs medical lessons

What is different in how we teach, how we write, and how the pipeline produces and checks a lesson.

Prepared 19 Sep 2026 · CFA v3 lesson generator on branch feat/cfa-lesson-v3, app renderer merged to dev (PR #1910) · 2027 CFA curriculum on staging

The one-line version

Medical lessons are a single-call narrative shaped by Bloom's taxonomy and clinical storytelling, checked for shape (sections, word counts, mnemonics). CFA lessons are contract-driven study units keyed to the official Learning Outcome Statements (LOS), written from a sealed source pack, with numbers computed in code, practice generated inside the lesson, and every draft pushed through static, structural, teaching and item-level review gates before it can be published.

1. Teaching methodology

Medical (NEET-PG, USMLE…)CFA v3
Unit of teachingA topic or chapter, written as one long page (6–8 A4 pages).Our existing subject → topic → chapter hierarchy. In the 2027 seed each chapter maps to exactly one official Learning Outcome Statement (LOS), so a chapter lesson teaches one LOS (10–20 minutes). A topic lesson is an overview that links to its chapters, not a second long read.
Organising principleBloom's taxonomy: six sections from Remember → Synthesize, each opened with a clinical vignette, plus a High-Yield Summary.The exam's own outline: the LOS text is the H2, the verb in the LOS (describe, calculate, contrast…) sets what the unit must let the learner do.
Exam framingImplicit. "Why this matters clinically."Explicit and mandatory: On the exam: line per unit, "How the exam tests this module" section per topic, trap callouts (Common error) and a Changed condition section that flips one input to test understanding.
Level registerOne register for all exams.Per level: L1 vocabulary and intuition, L2 case and model choice (item sets), L3 mandate and command-responsive answers (constructed response with minimum and teaching answers).
NumbersFacts and reference ranges from the model's memory.Worked examples bind to fixtures whose values are compiled in code. The writer may only use numbers the fixture produces; the reviewer's numeric claims are recomputed by an arithmetic checker.
PracticeNot in the lesson. Exercises are pulled from the question bank by exam tag afterwards.Generated inside the lesson as JSON in eight formats (MCQ, yes/no, fill-blank, ordered response, cloze dropdown, matrix grid, item set, constructed response), graded in the app with rationales.
Tools of the tradeMnemonics, clinical pearls, red flags.BA II Plus keystroke tables, formula glossaries, revision snapshot (≤150 words) as a separable fast-revision layer.
Subject nuancePer-subject table of Bloom emphasis and image/table counts.Per-subject-family config: allowed practice formats, Mermaid chart types, register lines, calculator use, derived from forum research on what candidates value per subject.

2. Writing

MedicalCFA v3
Source of truthModel knowledge; prompt asks for guideline-based content.A hash-sealed source pack (official 2027 outlines, provider samples) with coverage requirements per LOS. Source-packet language leaking into learner prose is a major finding.
Structure enforcementPrompt instructs H2 sections and word targets; validator scores section presence and variance.Fixed template with named headings (LOS H2 → On the exam → teaching → Worked example → Changed condition → Common error → Calculator → Go deeper → Check yourself → Revision snapshot). Missing or renamed headings are major findings.
LengthTarget total word count with tolerance per section.Word budget per unit from the LOS count; overrun beyond 15% is major. Chapter lessons land near 1,000 words, topic overviews near 2,500.
MathsPlain text or occasional LaTeX.LaTeX inline and display, symbols defined before use, renderer profile pinned (aligned environments, Greek), a static guard for the display-math heading collision.
DiagramsMermaid rendered to images on the server; retrieved clinical images via the vision agent.Mermaid validated on the server with the same version the app renders (11.12.1), type allowlist per subject family, size caps, then rendered live in the app. Deterministic SVG figures from fixture data instead of generated art.
ToneTextbook narrative with emojis and pearls.Tutor register per level, no emojis, tables limited to three columns, no raw HTML, markdown linted (remark) before review.

3. Pipeline

Medical
Plan (Claude Sonnet 4.5) Write whole lesson (1 call) Images + Mermaid in parallel Shape validator (sections, words, mnemonics, media) Store
  • Optimised for speed: one generation call, temperature 0.7.
  • No reviewer model, no numeric verification, no source grounding.
  • Validation scores shape, not correctness.
CFA v3
Context: LOS, family, sources Planner (GPT-5.6 Luna) Plan schema + fixture compile Writer (Luna, max reasoning) Static pass: template, budgets, markdown lint, Mermaid parse, fence schemas Jev structural pass Media: SVG figures, calculator tables Teaching review (Luna) Arithmetic checker Jev item QA + regeneration Evidence bundle
  • Two model families: Luna for planning, writing and teaching review; Jev (TypeSafe AI) for cheap probabilistic structural and item checks.
  • Every gate has a bounded repair with the exact error; failures are checkpointed and resumable.
  • Per lesson: plan, fixtures, practice, calculators, static findings, Jev scores, review, arithmetic, raw outputs and hashes.

What this bought us (benchmark of 20 topics + 40 chapters)

1 LOS
per chapter lesson (the 2027 hierarchy maps each chapter to one LOS); heading is the LOS text verbatim (0 of 50 earlier CFA drafts referenced an LOS)
~1,000
words per chapter lesson, down from a 3,300 median, matching the provider module size candidates prefer
112
practice items generated across 44 lessons in all 8 formats; 86 of 93 Jev-checked items judged to have a single defensible key
57 / 59
drafts carry exam framing; 49 have a trap callout; 58 a revision snapshot; 66 fixture-bound worked examples
70
Mermaid diagrams validated at the app's pinned version; 20 calculator keystroke tables
36 / 59
drafts passed every automated gate (earlier CFA run: 18 of 30); the strict tutor reviewer still requests changes on most, which is the next lever

Counts come from a scan of artifacts/cfa-benchmark/cfa-v3-bench60-final. 36 lessons are published to staging (app and web) for review; 24 remain to be regenerated once OpenAI credits are restored.

What a CFA chapter lesson looks like

## Calculate and interpret the price of a fixed-rate bond          ← LOS text, verbatim
**On the exam:** expect a 3-option calculation with a changed coupon or yield…
<teaching prose, symbols defined, LaTeX>
### Worked example: 10-year 4% bond at 3%                         ← numbers from a compiled fixture
### Changed condition                                             ← one input flips, what changes
### Common error: discounting with the annual rate on a semiannual bond
### Calculator                                                    ← BA II Plus keystrokes table
### Check yourself                                                ← practice JSON, graded in app
## Revision snapshot                                              ← ≤150 words, the fast layer

App side

Next