# Document structure and drafting rules

Target: approximately 10 pages (roughly 4,800 to 5,500 words) at default settings. Budgets
are ceilings, enforced by the builder; under-budget is always acceptable and is the correct
behavior when evidence is thin. The document gets shorter as evidence gets thinner, never
padded. Padding candidate-specific sections with generic leadership prose is a
build-breaking defect: general frameworks may interpret evidence, never substitute for it.

## Section order and budgets

The builder (`scripts/build_narrative_content.py`) enforces this order and assembles the
automatic elements (tables, labels, verbatim blocks) itself. The drafter supplies only the
narrative fields listed.

| # | Section | Budget (words) | Drafter supplies |
|---|---------|----------------|------------------|
| 1 | Cover | n/a | Nothing (meta only: candidate as title, role and organization as subheading, fixed tagline and draft label, date) |
| 2 | Working draft and confidentiality page | n/a | Nothing (how-to-use note naming the AI origin, circulation line, validity statement, source inventory table without tier codes, and the "How this document was produced" statement with the highlighted AI-mistakes caution directly under it: all automatic) |
| 3 | Assessment basis | 250 | `assessment_basis` paragraphs (criteria origin, evidence base in one breath, coverage in one line) |
| 4 | Executive summary | 350 | `executive_summary` paragraphs (2 to 3): headline pattern, strongest convergent themes, principal watch-outs, key open questions. No verdict |
| 5 | Leadership profile in context | 500 | `profile_in_context` paragraphs, anchored to the Gate 3 mandate |
| 6 | Evidence against the success criteria | min(400, 2200/N) per criterion | `criteria[]`: status (must match computed) plus paragraphs per criterion. The criteria-at-a-glance visual (status chips plus per-source direction strip, with legend) is automatic |
| 7 | Strengths and differentiators | 450 | `strengths` paragraphs or emphasis items: what distinguishes this leader relative to the executive population, tied to the mandate |
| 8 | Development areas and watch-outs | 450 | `development` paragraphs or emphasis items, including derailer hypotheses and the conditions under which pressure behaviors are likely |
| 9 | Motivation and role fit dynamics | 300 | `motivation` paragraphs, only if interview or reference material supports it; otherwise `motivation_omitted_note` (one line) |
| 10 | Onboarding and conditions for success | 400 | `onboarding` paragraphs: first 90 days, support structures, how the hiring CEO or board gets the best from this leader |
| 11 | Open questions for the committee | 250 | `open_questions` list: probes, including every Insufficient Evidence gap and every hypothesis worth testing |
| 12 | Methodology and evidence map | 400 plus table | `methodology` paragraphs (limitations, anything source-specific). Typology summary, evidence map (independent sources, observed behavior yes or no; no tier codes), protected-characteristics note, register note: automatic |
| 13 | About Deeper Signals | fixed | Nothing (verbatim from `data/verbatim_blocks.json`) |
| 14 | Disclaimer | fixed | Nothing (verbatim, always the final block) |

The builder fails the build when a section exceeds its budget by more than 15 percent and
warns above 100 percent, when a narrative status disagrees with the computed status, when
an em or en dash appears, and when the retired [ASSESSOR REVIEW: ...] marker syntax
appears anywhere (v1.1: cautions belong in the prose).

## Voice and register

- Executive register, no jargon in the body. Instrument names, construct names, validity
  coefficients, and score formats live in the methodology section only; body copy uses lay
  translations ("a work-based personality assessment," "the leader's own account").
- The document is written in a voice the assessor can adopt as their own: measured,
  specific, neither advocate nor critic. First person plural sparingly if at all.
- Attribution is woven into prose ("in the reference interviews...", "the personality data
  suggest...", "in her own account..."), not footnoted. The full trail lives in the
  register and the coverage table.
- Fact, observation, self-report, inference, and hypothesis stay distinguishable in the
  prose. A hypothesis is always named as one.
- Context anchoring throughout: connect evidence to the Gate 3 mandate wherever it
  genuinely bears, especially in the profile, the criterion blocks, strengths, and
  development.
- Divergence is interpreted (as hypothesis), never just listed.
- British or American spelling follows the user's materials; when unclear, ask at Gate 4
  or default to the organization's own spelling in the role documents.

## Interpretation cautions in prose

Inline [ASSESSOR REVIEW: ...] markers were retired in v1.1. Draft status is carried by the
cover tagline, the per-page footer, the how-to-use note, and the disclaimer. Where an
interpretation genuinely needs the assessor's confirmation (every Mixed Evidence reading,
every derailer hypothesis, the motivation section when it rests on the candidate's own
account), write the caution into the narrative itself, in the assessor's working language,
for example: "a reading for the assessor to test against their own interview impressions"
or "a hypothesis from self-report, not an observed fact". The builder rejects the retired
marker syntax so it cannot reappear.

## Formatting rules (enforced)

- No em dashes or en dashes anywhere; commas, parentheses, or periods instead.
- No italics except statistical symbols.
- No orphaned headings; keep-with-next and widow/orphan control come from the generator.
- Compact layout; one callout per page at most; heading hierarchy h1 then h2, deeper
  levels rare.
- Date format on the cover: "Month DD, YYYY".

## Build pipeline

```bash
# 1. Validate the register, compute statuses and coverage (also the Stage 2 playback)
python3 scripts/validate_register.py register.json register_computed.json

# 2. Draft narrative.json (see the fixture for the exact shape), then build content.json
python3 scripts/build_narrative_content.py register_computed.json narrative.json content.json

# 3. QA scan the final text (banned language, dashes, italics, protected terms, markers)
python3 scripts/qa_scan.py content.json

# 4. Generate and finish the document
node booklet/scripts/generate_booklet.js content.json /mnt/user-data/outputs/<name>_leadership_narrative_draft.docx booklet/assets
python3 booklet/scripts/embed_fonts.py /mnt/user-data/outputs/<name>_leadership_narrative_draft.docx booklet/assets/fonts
```

Always embed fonts: the document is external-facing by definition. Then render to PDF,
inspect every page for a heading stranded at a page bottom, oversized white space, an
orphaned line, or a split short table row, and fix and re-render until clean. Confirm the
AI-generated draft label is on the cover, the AI-generated footer appears on every body
page, the production statement and AI-mistakes caution sit under the source inventory,
the AI-generated draft notice opens the executive summary, the glance visual renders
with its legend and no tier codes appear anywhere, and the disclaimer is the final
block. Deliver the .docx, restate in one line that this is a draft requiring
assessor review before circulation, and mention once that the evidence register is
available on request.
