05 — OUTPUT SKILL: 1:1 Recap Workflow
Scope
Produces: Gmail draft (recap email) + .md file (full personal notes) + Gmail draft (prep email for next session) Consumer: Kathryn (sends the email, keeps the .md as private reference) Lifecycle: Runs after every paid 1:1 session that isn't AOS DFY or TPC mastermind group
Required Inputs
- Session transcript —
.txtor.vtt. Blocking — do not proceed without it. - Member reference data —
cyp/tpc/members/[name]/[name]-reference-data.md. Blocking — read first. - Cohort reference data (TPC members) —
cyp/tpc/tpc-reference-data.md. Blocking — locked cadence vocabulary lives here. - Prior recap email — Gmail sent folder or session repo. Voice reference.
- Member file —
cyp/tpc/members/[name]/[name].md. Engagement context.
RULE 0 — build from the transcript, never from memory (ported from the AOS recap-email gate, 6/17)
Every reporting line in the recap email must trace to a moment in the transcript (or to Kathryn's explicit confirmation). You may NOT write a sentence from what you "expect" happened, from build files, from the prior recap, or from a CPM. Keep the transcript open and pin each claim to it as you write. This is the failure that produced overstated recaps — "SharePoint turned on" when it was gated behind client IT; "you're over the hump" stated as a win — and it is the thing the claim gate (Step 5B) exists to stop.
The ledger (Step 5) already enforces this for commitments and decisions. Step 5.6 + Step 5B extend the same discipline to wins and status claims — the category that was previously ungated, and where overstating lives.
Step 0 — Mode 2: learn from what was actually SENT (do this FIRST)
Kathryn edits almost every recap before sending — the draft is not the final. Input #4 already pulls the prior sent recap as a voice reference; this step makes it learn from it.
- Pull the most recent recap Kathryn actually sent to this member/client from Gmail Sent (by their address; newest; note its session date).
- Pull the prior draft for that session (the prior Gmail draft to Kathryn).
- Diff sent vs. draft. Ignore wording/synonym tweaks (noise). Note any structural change — a section removed, an obligation softened to an offer, jargon stripped, the close changed, a personal line cut.
- If a structural change looks like a repeatable pattern (not a one-off taste tweak), run kit Mode 2 — update the golden-example pointer to the sent version + the relevant output-skill instruction. If unsure it will recur, don't harden it into a rule — flag it for confirmation next run.
- If no prior sent recap exists, or nothing structural changed, move on — don't invent a lesson.
This replaces the old "did Kathryn change anything by hand?" self-report (file 00, Mode 2): the kit now reads what landed instead of asking.
Structural principle
This kit treats writing as a two-phase act: extract first, compose second. Steps 1–5 produce structured artifacts (transcript notes, calendar facts, the Commitments / Decisions / Specifics Ledger). Steps 6–8 compose prose that draws only from those artifacts. Every assertion in the email must trace to a row in the ledger or a value in reference data — never to model judgment at the sentence level.
When errors surface in QC (Step 7), the fix is upstream: a missing ledger row, a stale reference data entry, a wrong cadence vocabulary lookup. Don't patch the prose; fix the input that produced the prose.
Step 0.5 — Triage: does this call earn the cascade? (REQUIRED — first gate)
Before running anything else, classify the session. Not every 1:1 earns the full cascade — running heavy machinery on a thin call costs Kathryn more time than it saves. (Failure this gate exists to stop: Meryl 6/19 — a 30-minute, cut-short check-in produced 10 artifacts and an hour of rework on a note she could have written in two minutes.)
Skim the transcript and classify:
- Substantive — the call produced decisions, commitments, builds, action items, or a real working agenda → run the full cascade (Steps 1–14 + files 06–10).
- Thin — a check-in, a cut-short call, a reschedule, mostly personal, or no decisions/commitments → STOP after producing two things:
- A short note to the member — the reschedule and any direct answers actually given, in the member's voice. No section headers, no agenda, no manufactured structure.
- A one-line board touch on the TPC Member Pipeline card (Last touch + any signal note). Then a 3-line
.mdstub (date · what it was · next session) and stop. No CPM, no claims gate over an empty ledger, no lessons, no cascade report.
- Unsure → ask Kathryn which path. One question up front beats an hour of rework.
The test for every output, every step: would this save Kathryn time versus writing it herself? If not, don't produce it.
Step 1: Read Reference Data
Before anything else. Every team member's correct name. Every tool. Every transcript override. Cohort reference data is part of this read — load locked cadence vocabulary (e.g., for TPC: Monday = Momentum Monday, Thursday = co-working) and forbidden-term table (file 02) into working memory. Keep open mentally for the whole run.
Also at Step 1 — detect the engagement sub-type and load the stance invariant (file 01). Which of the three is this: a TPC member 1:1, a team-and-one (member + their staff in the room), or a one-off advisory consult? Detect from the attendees + where the member lives (cyp/tpc/members/ = TPC member). Load file 01's stance invariant: Kathryn does no between-session build work in this kit; a member's build / tooling / infrastructure need routes to the signal (file 07) or a note — never a Kathryn deliverable. The stance is identical for all three sub-types and governs every composition step; the sub-type only changes the recap's shape (see file 01's shape table).
Step 2: Read the Transcript
If the transcript came from Otter (or any non-local source), save it to cyp/tpc/transcripts/ first — the claim gate (Step 5B) reads a file, not a chat.
Cover to cover. Note (don't yet structure):
- Wins / progress since last session
- Topics covered (skip pure check-ins)
- Things said about future actions (will-do, might-do, was-asked-to)
- Dates mentioned
- Personal details surfaced (trips, family, milestones — verbatim)
- Gaps (ambiguous dates, hedged commitments, audio garble)
Cross-check every proper noun against reference data as you read.
The structured extraction happens in Step 5 (Ledger). For now: read with attention, surface things to verify.
Step 3: Check Calendar for Next Session (REQUIRED — blocking)
This is a fact-source step, not a compliance check. The calendar tells you when the next session is, on what day, and the cadence pattern. That information feeds the close (Step 6), the prep email send date (Step 12), and the calendar event creation (Step 13). Without it, those downstream artifacts fabricate or fail.
Use mcpclaudeaiGoogleCalendarlistevents with fullText: "[FirstName]" and a date range starting from today + 90 days forward. Pull:
- Date and time of the next 1:1
- Recurrence pattern (cadence — feeds the
.mdand any cadence references) - Any booking notes the client wrote (sometimes the client puts agenda preferences in the event description)
Write these facts into your working notes for the run. They're inputs to Step 5 (Ledger) under the "Calendar / next-session facts" category.
Step 4: Read the Prior Recap
If one exists in Gmail or sessions/. Match the voice — opening style, level of warmth, sentence cadence, close pattern. The new recap should feel like the next email in the sequence.
Step 5: Build the Commitments / Decisions / Specifics Ledger (REQUIRED — blocking)
The ledger is the structural protection that prevents the kit's most common failure: stating undecided things as decided, fabricating commitments, and inventing closing-line specifics. Every assertion in the email must trace to a ledger row.
Write the ledger directly into the working .md (it lives there permanently — useful audit trail). Five categories:
5.1 Commitments
Things that were said about future action. Tag each row's confidence explicitly:
| Statement | Speaker | Transcript line/timestamp | Confidence |
|---|
Confidence values:
explicit— "I will do X by Y" (or close equivalent: "I'll send that Friday"). Routes to the email's Action Items section.hedged— "Yeah, I think so" / "Probably" / "I'll try to" / "If I get to it." Routes to Proposed Agenda for Next Meeting, NOT Action Items.inferred— model assumption with no supporting line. Drop the row — does not appear anywhere in the email.
Recommendations Kathryn made that the client didn't accept (e.g., "you should X" → silence or "huh, interesting") are tagged hedged. Kathryn's recommendation is not the client's commitment.
Live-and-executable screen (REQUIRED for every explicit member commitment before it earns a spot in the email). A commitment can be verbally explicit in the transcript and still NOT belong in the member's Action Items. After tagging explicit, screen each member commitment against two gates — it must pass BOTH:
- Still outstanding? Did something in the session (or Kathryn's own follow-through) already close it? If Kathryn sent the invite, made the booking, or handled it on her end, the member's "I need to do X" is moot — drop it from the email (note in
.mdas done). - Known-how? Was the member actually shown how to do it, or do they already know? If the session never covered the how (e.g., "invite Natalie to Claude" when inviting was never walked through), assigning it sets the member up to flounder on a step they weren't equipped for. Drop it from the email — it belongs in the next session's hands-on work (and the
.md/agenda), not as written homework.
A member commitment that fails either gate is real in the transcript but is not a valid Action Item. Member action items are welcome — they just have to be live and executable. This is the extension of the Citation Test: explicit is necessary but not sufficient; the item must also be outstanding AND something the member can actually do.
5.2 Decisions
Things stated as resolved during the call:
| Statement | Type | Transcript line | Status |
|---|
Status values:
made— explicitly resolved in the session ("we'll go with Drake," "May 13 works"). Can be stated as fact in the email.discussed— talked through, not resolved. Routes to "What We Covered" only — never stated as a decision.recommendation_open— Kathryn or someone proposed; client didn't decide. Routes to Proposed Agenda or dropped.
If a sentence in the draft asserts that something was decided, the corresponding row must be tagged made. If discussed or recommendation_open, the prose must say "we discussed" or "we talked through" — never "we decided."
5.3 Closing-eligible specifics
Things from the transcript that are factually verifiable AND personal-specific — eligible to anchor the warm close. Examples: "show this weekend," "surgery Monday," "finish strong" (a phrase from the call), "good luck with [specific thing]."
| Specific | Transcript line | Notes |
|---|
This list is allowed to be empty. If empty, Step 6's close defaults to the locked sign-off (Talk soon, Kathryn) only — no warm close line. Never generate a close from outside this list. Closes like "safe travels" or "enjoy the weekend" without a transcript-rooted source are fabrications.
5.4 New proper nouns / engagement context surfaced this session
Anything in the transcript that's NOT in the current member or cohort reference data:
| Item | Type (name / tool / role / engagement field) | Source line | Action |
|---|
This list is the input to Step 11 (apply to reference data). It also means Step 6's draft uses the new names correctly because they're in the working set.
5.5 Calendar / next-session facts
Pulled from Step 3:
| Fact | Value |
|---|---|
| Next session date | [YYYY-MM-DD] |
| Next session time | [HH:MM TZ] |
| Recurrence pattern | [e.g., monthly Wed 10am ET] |
| Next session purpose/type | [regular 1:1 / makeup-catch-up / staff onboarding / kickoff — what is this session actually FOR] |
| Booking note | [if any, verbatim] |
These feed the close (only the next session date is a candidate cadence reference), the prep email send date, and Step 13's calendar events.
Capture the next session's PURPOSE, not just its date. The next session is not always a forward-planning 1:1 — it may be a makeup/catch-up (work that slid), a staff onboarding, or a kickoff. The Proposed Agenda (Step 6) must match what the session actually is. A makeup session's agenda is the thing being made up — not an aspirational roadmap. Read the calendar event's title/description for the purpose; if ambiguous, infer from the transcript (what did they agree the next session would do).
Ledger discipline:
- Don't make rows up. If you can't cite a transcript line, the row doesn't exist.
- A statement that doesn't fit a category doesn't need to go in the ledger. Categories are "things that produce email content," not "everything in the transcript."
- The ledger is permanent. It stays in the
.mdfor audit. Future runs may reference it.
5.6 Reporting-line claims (quotes-first — feeds the gate)
Before composing any prose, convert every fact-asserting reporting line the cascade will produce — in ANY artifact, not just the email — into a typed claim. The ledger is the single gated source: the recap email, the .md, the CPM, the drafted action items, and the agenda are all projections of it. So each Wins bullet, each What We Covered line, each Action Item, each Proposed Agenda item, AND each fact a downstream artifact will assert (a CPM constraint's evidence, a draft's content) becomes a claim here. Write them to cyp/tpc/members/[name]/sessions/[name]-claims-[YYYY-MM-DD].json:
{
"artifact": "[name] recap email [YYYY-MM-DD]",
"transcript": "../../../transcripts/[transcript file].txt",
"claims": [
{"id": "win1", "type": "fact", "text": "[the claim as it will read]", "evidence": "[VERBATIM transcript quote, >=4 words]"},
{"id": "cov1", "type": "advisor-confirmed", "text": "...", "evidence": "Kathryn affirms; transcript silent"},
{"id": "agenda1", "type": "judgment", "text": "[proposed next step]", "evidence": ""}
]
}
Claim types (same as the AOS gate):
fact— reports what happened → needs a verbatim transcript quote (>=4 words). Every Wins bullet and every status claim ("X is on / set up / live / done") is a fact.advisor-confirmed— Kathryn affirms it but the transcript is garbled or silent → accepted, rests on her word. Use sparingly; never to launder a fact you simply can't find.judgment— a recommendation, strategy, or proposed agenda item → exempt, but must be labeled.
This maps onto the ledger you already built: ledger 5.1 explicit and 5.2 made rows become fact claims (carry their transcript line as the evidence quote); proposed-agenda items become judgment.
Step 5B: Run the Claim Gate at the SOURCE (fail-closed — BLOCKING)
This gate sits at the source — the ledger — and protects the WHOLE cascade, not just the email (6/16 spec R4: gate the extraction every artifact draws from). BLOCKED stops everything — no artifact (email, .md, CPM, drafts, agenda) composes until it prints CLEAR. Fabrication does damage the moment it enters any artifact Kathryn relies on, not only when something is sent (Rob 6/17: the SharePoint overstatement had already propagated into the CPM, open-actions, and a drafted deliverable before it was caught in the recap).
Run the same gate the AOS cascade uses:
- Windows:
py cyp/tpc/qc/verify_claims.py cyp/tpc/members/[name]/sessions/[name]-claims-[date].json "cyp/tpc/transcripts/[transcript].txt" - Linux / cloud:
python3 cyp/tpc/qc/verify_claims.py ...
⚠️ On Windows, bare python/python3 is a dead stub — use py. If it errors instead of printing CLEAR or BLOCKED, the gate did NOT run, and a gate that didn't run is not a pass. Fix the invocation and re-run.
If it prints BLOCKED, fix or cut the failing lines — a fact whose quote isn't in the transcript is either mis-cited or overstated. Do not draft (Step 6) until it prints CLEAR.
The gate certifies sourcing, not interpretation — it catches fabrication, not overstatement of degree. The win-rule in Step 6 and Kathryn's review cover interpretation.
Single gated source → the ripple. Every artifact traces to gated ledger rows, so correcting a ledger row and regenerating propagates the fix to every artifact that drew from it. This is the mechanism behind Kathryn's operating loop: when she edits the recap and says "go check it out," trace each edit to its ledger row(s), update the ledger, and regenerate every downstream artifact that drew from those rows — not just the email (see Step 8's correction/ripple path).
Step 5C — Confirm load-bearing facts before drafting client copy (REQUIRED when the email hinges on a fact you're unsure of)
If the email's content depends on a fact about the member's setup or situation that the transcript doesn't fully nail down — which tool/account/plan they're on, what they've already set up, what they've decided — surface those 2–3 facts to Kathryn and confirm before drafting. Drafting polished client copy on an assumed fact and correcting it afterward is the multi-redraft failure (Meryl 6/19: the AI-account line churned business → consumer → opted-out → Plus → no-Team across four redrafts). Confirm once, draft once.
Step 6: Draft the Email
The draft is a select-from-ledger operation, not a generate-from-transcript operation. Every line in the email maps to ledger content or reference data.
The email is a client-facing projection of the record — not a copy of it. The full record (the .md, the complete ledger, everything discussed and what it relates to) stays exhaustive; that's where completeness lives. The email carries only what was explicitly relevant to the conversation — no backstory, no internal threads, no program/cohort context, no how-to. Filtering content out of the email does not mean deleting it; it stays in the .md. Keep the record complete; send the client the relevant slice.
Subject
Meeting recap - [M-DD-YYYY]
Composition rules
- Format flexes to the call, not the template. A thin call gets a short note (greeting + 2–4 sentences + sign-off), NOT forced Wins / What We Covered / Proposed Agenda headers. Section headers exist to hold content the call actually produced; an empty or manufactured section is worse than no section. This is upstream of the claim gate — the gate checks whether a line is sourced, never whether a section should exist.
- Wins & Progress — facts from transcript + ledger 5.2 (
madedecisions only), each one a PASS or advisor-confirmed claim from Step 5B. A win = completed AND evidenced. An attempted-but-blocked or dependency-gated thing (a connector that needs client IT, a step that didn't finish, a glitchy auth) is NEVER a win — route it to What We Covered or the agenda, stated as what's in motion or what's needed. Status verbs ("turned on," "set up," "live," "done") must each trace to a PASS/advisor-confirmed claim; if the only support is that it was attempted, qualify the verb ("started," "walked through") - What We Covered — discussion topics; ledger 5.2
discussedrows belong here, not in any decision-stated section. Name the topic, not the keystrokes. Cut procedural/training minutiae (e.g., "don't download until final; convert .md to .docx; click the paper icon") — that's how-to detail the member doesn't need in a record. One line per topic at the level of what was covered, not how to do it. - [FirstName]'s Action Items — ledger 5.1
explicitcommitments by client only, that passed the live-and-executable screen (still outstanding AND known-how — see Step 5.1). Member action items are welcome; they just have to be live and doable. If none pass, omit the section entirely. - Kathryn's Action Items — ledger 5.1
explicitKathryn commitments only. If empty, omit the section entirely. - Stance invariant (hard — file 01, always on). No line may imply Kathryn does between-session build work. Banned framing: "we'll work on this together," "I'll bring you a recommendation/build," "I'll set up X for you," or a Kathryn Action Item that is the member's own tooling / infrastructure / build. A member's build-need is not a Kathryn deliverable — it routes to the signal (file 07, TPC) or a note (consult), never to Kathryn's Action Items or the agenda as Kathryn-owned. This is the Rob 6/17 violation ("we'll work through the cleanest path" on his SharePoint setup) encoded so it can't recur.
- Proposed Agenda for Next Meeting — scoped to what the next session actually IS (ledger 5.5 purpose), and member-track only. Two filters:
- Session-scope filter. A makeup/catch-up session's agenda is the thing being made up — not a forward roadmap. A staff-onboarding session's agenda is the onboarding. Don't over-promise: list the immediate next step(s) that fit this session's purpose, not everything teed up for the quarter.
- Member-track vs program-track filter. Cohort/program-level builds — things Kathryn rolls out to the whole group (new cascades, retreat themes, platform integrations) — are NOT this member's personal agenda. They belong in the group channel. At most, a single "coming to the group" line in What We Covered as context — never promised as the member's next-session agenda. Pull only member-track items (this member's own practice work) into the agenda.
- Source: ledger 5.1
hedgedrows + ledger 5.2discussed/recommendation_openrows + open threads — after both filters. - Close — select one item from ledger 5.3, OR if empty, no close line (locked sign-off only). No progress-verdict closes. Lines that grade the member's competence or trajectory ("you're over the hump," "you'll be able to run this independently," "you're really getting it") are assessment language — cut them. The warm close is factual about their situation (golden 3/11: "you and the team are in a great spot"), never a verdict on how the member is doing. When in doubt, a neutral service close ("Let me know if you have any questions") beats an assessment.
No section is composed from "what feels right." Every section has a defined source in the ledger or reference data. If the source is empty, the section is empty.
Non-duplication rule (hard) — Wins and What We Covered may never say the same thing (ported from the AOS recap-email skill, where it's a hard rule). Wins & Progress = what moved forward (completed outcomes). What We Covered = what was discussed without a finished outcome. If a topic produced an outcome, the outcome goes in Wins and the topic is not repeated in Covered. For a hands-on session most topics become wins — that correctly shrinks What We Covered to the few things discussed-but-not-done (a 2-line Covered is fine; a Covered that restates the Wins is a failure). The claim gate (Step 5B) does NOT catch this — it certifies sourcing, not composition. Read the finished email as the recipient and compare Wins vs. Covered by eye before drafting the Gmail draft.
Multi-recipient & shared-transcript recaps (from Rob 6/17 Mode 2):
- Opener: lead with a factual line, not a state-summary/assessment. Kathryn cut "you're both working from one source of truth" and led with the recap line plus a logistics note: "Here's the meeting recap from [date]. The Otter transcript with screenshots was already shared with you." If the session transcript/materials were shared with the client, say so there; never open with a "you're now in X state" read (same discipline as no-progress-verdict).
- Agenda header names the next-session owner when the recap goes to more than one person but the next 1:1 is one person's: "Proposed Agenda for Next Meeting with [Name]."
- Recipients: all in-room participants on To, with display names (Kathryn kept Rob + Natalie). Confirms the multi-attendee → all-on-To rule for a TPC onboarding recap.
Body Format
Rich text (HTML via htmlBody). Section headers bold. Lists as real / — never hyphens or markdown. Gmail auto-adds Kathryn's signature block.
Body template
Hi [FirstName],
[OPENING — one sentence drawn from a ledger 5.2 `made` row, a ledger 5.1 `explicit` win, or a transcript-rooted observation. Never a presumed framing.]
Here's the meeting recap from [M-DD-YYYY].
**Wins & Progress**
• [Win — factual]
• [...]
**What We Covered**
1. [Topic] — [key point, one line]
2. [...]
[OPTIONAL — only when ledger 5.1 has explicit commitments]
**[FirstName]'s Action Items**
• [explicit commitment]
**Kathryn's Action Items**
• [explicit Kathryn commitment]
**Proposed Agenda for Next Meeting**
• [hedged item / discussed thread / open recommendation]
• [...]
[CLOSE — select from ledger 5.3, OR omit entirely if 5.3 is empty]
Talk soon,
Kathryn
Cadence references
If any line in the email references a recurring program day (Monday, Thursday, "next group call," etc.), verify against the cohort reference data terminology table (or file 02 Cadence Vocabulary by Program) before writing. For TPC: Monday = Momentum Monday (group), Thursday = co-working. Never write a combination that conflates them.
Step 7: Run Gate 2 QC
Run the full Gate 2 checklist from 04-1on1-recap-quality.md. The checklist is now input-traceability-focused: every assertion in the email is verified to trace to a ledger row or reference data value. If a sentence has no source, it goes back to Step 5 or Step 6.
Step 8: Create the Gmail Draft (LOCKED PATH)
This step is the only path to a Gmail recap draft. Re-drafts during corrections must come back through this step — do not edit the draft in conversation, regenerate via this exact invocation.
Call mcpclaudeaiGmailcreate_draft with both htmlBody (primary) and body (plain-text fallback). Plain text alone is a blocking failure (file 04 #9).
htmlBody skeleton
<p>Hi [FirstName],</p>
<p>[Opening sentence.]</p>
<p>Here's the meeting recap from [M-DD-YYYY].</p>
<p><b>Wins & Progress</b></p>
<ul>
<li>[Win]</li>
</ul>
<p><b>What We Covered</b></p>
<ol>
<li>[Topic — key point]</li>
</ol>
<p><b>[FirstName]'s Action Items</b></p>
<ul>
<li>[Explicit commitment]</li>
</ul>
<p><b>Kathryn's Action Items</b></p>
<ul>
<li>[Explicit Kathryn commitment]</li>
</ul>
<p><b>Proposed Agenda for Next Meeting</b></p>
<ul>
<li>[Topic]</li>
</ul>
<p>[Close line, or omit this paragraph entirely.]</p>
<p>Talk soon,<br>Kathryn</p>
Section blocks corresponding to empty ledger sections are omitted entirely (don't leave empty ).
Correction path + the ripple (Mode 2 / operating loop)
Ask before re-drafting. If Kathryn says a draft is wrong without saying exactly what, ask what specifically is off — don't re-draft on a guess. Repeated guess-drafts (Meryl 6/19) burn her time and pile up duplicate drafts (Gmail has no edit/delete). One precise question, then one fix.
If Kathryn flags an error, OR signals "I updated the recap — go check it out" (the operating-loop trigger):
- Read her edited/sent recap; diff vs. the draft (ignore wording/synonym noise).
- Trace each change to its ledger row (or reference data, or file 02 vocabulary).
- Fix the upstream artifact — the ledger row, the reference data entry.
- Regenerate every artifact that drew from the changed row — not just the email. The recap,
.md, CPM, drafts, and agenda are all projections of the ledger; a ledger edit ripples to all of them. Re-run the affected composition steps via their locked paths. Never hand-edit prose in conversation (it loses rich-text formatting and bypasses the ledger discipline that stops the error recurring). - When the ripple is complete, book the review session on Kathryn's calendar for the full reconciled package (file 10) — the event existing means all the updating is done.
Target: the client's email address (per reference data).
Step 9: Draft Kathryn's Action Items (Light)
The ledger already separates commitments from prep items, so this step is brief. Write three lists into the .md:
Explicit Kathryn commitments
Already in the email (from ledger 5.1 explicit Kathryn rows). Mirror them in the .md under Action Items → Kathryn's items.
Kathryn's Prep (between sessions, not committed to the client)
Things Kathryn should do before the next session — prep work, research, materials to gather. Categorize each:
- Actionable now — within 3 business days, no external dependency
- Future-dated — tied to a specific deadline before next session
- Reactive — depends on the client acting first (no calendar event)
These go in the .md under Kathryn's Prep, NOT in the email. They feed Step 13 (calendar booking).
Agenda items (NOT prep)
Things to ask about in the next session — the client's responsibility, not Kathryn's. These come from ledger 5.1 hedged rows and ledger 5.2 discussed/recommendation_open rows. They go in the Draft Agenda → Proposed Agenda section. No calendar event.
Step 10: Write the Personal .md Recap
Filename: [firstname]-1on1-[YYYY-MM-DD].md Location: cyp/tpc/members/[name]/sessions/
The .md includes:
- The ledger (verbatim, from Step 5 — permanent record)
- Summary, What We Discussed (full detail including things not in the email)
- My Takeaways
- Action Items (from ledger)
- Connections to Follow Up
- Quotes Worth Remembering
- Kathryn's Prep
- Draft Agenda — Next Session
- Calendar Events Created (populated in Step 13)
- Notes for Next Time
Step 11: Apply Ledger 5.4 to Reference Data (REQUIRED — blocking)
The "new proper nouns / engagement context surfaced" list from ledger 5.4 is the input to this step. For each row:
- New team member → add to Team Roster with role + notes + source session
- New tool/software → add to Tools & Software with correct spelling + transcript misspellings
- New client name → add to Key Proper Nouns
- Engagement context (renewal date, cadence change, email, role change) → update Engagement section. Renewal dates verify against calendar's recurring "Client Renewals" event.
Append a row to the Update Log. Format: YYYY-MM-DD | What changed | /recap-1on1 cascade.
If a field surfaced but key info is missing (e.g., last name unknown), add with [TBD] and note in Open Items. Don't make data up.
Why blocking: subsequent cascade steps read this reference data. Stale data corrupts CPM, drafts, lessons. The ledger 5.4 list is the structural mechanism that prevents this — but only if it's applied.
Step 12: Draft the Prep Email
Create a Gmail draft addressed to the client, to be sent 2 business days before the next session (date from ledger 5.5).
The prep email:
- Opens with something personal only if ledger 5.3 has a relevant entry (otherwise no personal opener)
- References what the next session is about (ledger 5.5 booking note or the proposed agenda)
- Lists the action items from this session as "things to have ready or at least have thought about"
- Closes with low-pressure framing
- Voice: same as recap email
- Short (20-second read)
- Sign-off:
Talk soon, Kathryn
Subject: [Day]'s session - what to bring (e.g., "Wednesday's session - what to bring"). Day name comes from ledger 5.5.
Use the same locked path as Step 8 (htmlBody + body).
Step 13: Book Calendar Follow-Ups
Two standard events per run:
1. Prep event — 1–2 business days before next session.
- Title:
[Client first name]: [Next session date] session prep + send prep email - Contents: Prep tasks from Step 9, prep email send reminder, link to
.md
2. Agenda event — 30 min before next session starts.
- Title:
[Client first name] 1:1 — agenda + notes - Contents: Draft agenda, open action items, watch-fors, link to
.md
Both Kathryn-only (no attendees). The session event itself (with the client) stays separate so internal framing notes don't leak.
For prep items with external deadlines before the prep event date, create additional short events at the appropriate dates. Reactive items get no event (note in .md only).
Add a ## Calendar Events Created section to the .md.
Step 14: Auto-advance to file 06 (Update Member CPM)
After Steps 1–13, do not stop and present. Auto-advance to /update-member-cpm (file 06).
Full cascade chain: /recap-1on1 → /update-member-cpm → /draft-1on1-actions → /update-open-actions → /extract-lessons-learned → /cascade-report-1on1
The cascade report (file 10) is the right moment to stop and present.
Delivery Checklist
- [ ] Reference data read first (member + cohort, including locked cadence vocabulary)
- [ ] Transcript was the source
- [ ] Calendar checked (Step 3) — next session date, recurrence, booking note in working notes
- [ ] Prior recap voice matched (if one exists)
- [ ] Ledger built (Step 5) — all 5 categories populated or explicitly empty
- [ ] Reporting-line claims written (Step 5.6) + claim gate run (Step 5B) — printed CLEAR, not BLOCKED, not errored
- [ ] Every Wins bullet is completed AND evidenced — no attempted/gated items in Wins
- [ ] Email composed by selecting from ledger (Step 6) — every assertion traces to a row
- [ ] Cadence references verified against file 02 / cohort reference data
- [ ] Gate 2 QC passed (Step 7)
- [ ] Gmail draft created via locked path (Step 8) —
htmlBody+bodyboth passed - [ ]
.mdwritten with ledger included (Step 10) - [ ] Reference data updated from ledger 5.4 (Step 11)
- [ ] Prep email Gmail draft created (Step 12) via locked path
- [ ] Calendar follow-ups created (Step 13)
- [ ]
Calendar Events Createdsection in.md
After Every Run: Mode 2
If Kathryn edited the email before sending → trace the edit back to the upstream artifact (ledger row, reference data, vocabulary). Fix the upstream artifact, then update the kit if the failure was structural (e.g., a missing ledger category) — not by adding a row to file 04.
If QC missed something → ask first whether the failure could have been prevented upstream (a missing ledger category, a stale reference data entry, a missing vocabulary entry). Add to file 04 only if the failure genuinely belongs at the post-draft stage.
If the kit needs a new step → update this file. Update file 00's cascade chain if the step list changed.
Change log convention: Append ## Change Log at the bottom of any modified file. Format: YYYY-MM-DD: [what changed and why].
Change Log
- 2026-06-19 (Meryl 6/19 — triage + facts-confirm + format-flex, structural): Added Step 0.5 Triage (thin/cut-short call → short note + one board touch, skip the full cascade), Step 5C (confirm load-bearing facts with Kathryn before drafting client copy), a format-flexes-to-the-call rule in Step 6 (no manufactured sections; thin call = note), and ask-before-re-drafting in the Step 8 correction path. Reason: the Meryl 6/19 cascade ran the full 10-artifact machinery on a 30-min cut-short check-in, manufactured an agenda/structure the call didn't contain, churned the AI-account line across four redrafts, and cost Kathryn an hour on a note she'd have written in two minutes. The operative test now governs every step: an output that costs more to fix than to write has failed.
- 2026-06-18 (Phase 1 Build A — gate at the source): The claim gate now protects the whole cascade, not just the email. Step 5.6 broadened — every fact-asserting line in ANY artifact (email,
.md, CPM, drafts, agenda) becomes a claim, because the ledger is the single gated source and every artifact is a projection of it. Step 5B reframed as the source gate: BLOCKED stops everything until CLEAR (6/16 spec R4). Added the ripple: correcting a ledger row regenerates every artifact that drew from it — the mechanism behind Kathryn's operating loop (recap edit → "go check it out" → ripple → review session booked). Step 8 correction path extended to the ripple. Reason: the Rob 6/17 boundary/overstatement leak proliferated into the CPM, open-actions, and a drafted deliverable BEFORE Kathryn caught it in the recap; gating only the email let the internal artifacts drift. One source, gated once, feeds all. - 2026-06-17 (Rob 6/17 — Mode 2 from Kathryn's draft edits, before send): Captured her hand-edits to the recap. (1) Opener — she cut the state-summary opener ("you're both working from one source of truth") and led with the recap line + a logistics note ("The Otter transcript with screenshots was already shared with you"); rule encoded in Step 6 (factual/logistics opener, never a state assessment; note shared materials). (2) Agenda header names the next-session owner for a multi-recipient recap ("Proposed Agenda for Next Meeting with Rob"). (3) Recipients — kept both in-room participants on To (Rob + Natalie). Taste/structure edits, not fabrication — no gate change. The boundary correction (Rob is TPC not AOS; no between-session Kathryn builds) is logged separately in the member files + memory
feedback-tpc-members-not-aos-no-between-session-builds. - 2026-06-17 (Rob 6/17 cascade — port the AOS recap-email claim gate): Added RULE 0 (build from transcript, never memory), Step 5.6 (reporting-line claims, quotes-first, typed
fact/advisor-confirmed/judgmentwith verbatim evidence — extends the ledger's citation discipline to the previously-ungated Wins/status category), Step 5B (runcyp/tpc/qc/verifyclaims.pyfail-closed before drafting — BLOCKED until CLEAR), and the Step 6 win-rule ("a win = completed AND evidenced; an attempted-but-blocked or gated thing is never a win"). Reason: overstating recurred — the 6/17 "SharePoint search turned on" (gated behind client IT) and the cut 6/10 "over the hump" verdict — because the ledger gated commitments/decisions but never wins/status. Rather than stack another file 04 row, ported the deterministic gate Kathryn proved on NA (aos-client-na, 6/17) so both cascades run the SAME mechanism. The connector check (file 04, 6/17 Pass 2) is now subsumed by the gate + win-rule and stays only as a human-review interpretation note. Script:cyp/tpc/qc/verifyclaims.py(byte-identical to NA's). - 2026-06-10 (Rob 6/10 cascade — Kathryn's edits to the sent recap): Five composition disciplines added from Kathryn's hand-edits. Framing (load-bearing): the fix is artifact-routing, not "be less thorough." The completeness the cascade produces is correct and necessary — it belongs in the internal record (the
.md/ledger, kept exhaustive). The recap email is a client-facing projection that carries only what was explicitly relevant to the conversation. The disciplines below filter the EMAIL; they never thin the.md. (Added the projection principle to Step 6 opening so this can't be misread.) The five: (1) Live-and-executable screen on member commitments (Step 5.1) —explicitis necessary but not sufficient; the item must ALSO be still-outstanding (not already handled by Kathryn, e.g., she sent the invite) AND known-how (the session actually taught the member how). Rob's "invite Natalie" failed both (Kathryn had sent the onboarding invite; inviting Natalie was never walked through). Member action items are welcome — they just have to be live and doable. (2) Next-session purpose captured in ledger 5.5, not just date — the next session may be a makeup/catch-up or staff onboarding, and the agenda must match what it actually IS. (3) Proposed Agenda session-scope + member-track filters (Step 6) — a makeup session's agenda is the thing being made up, not a roadmap; and program/cohort-level builds (cascades rolled out to everyone, retreat themes) are NOT the member's personal agenda — Kathryn cut my 4-item agenda to 1 (the immediate 6/17 onboarding) and tagged program items "in TPC builds." (4) No procedural minutiae in What We Covered — name the topic, not the keystrokes; Kathryn cut the "living documents / don't download / convert to .docx" line. (5) No progress-verdict closes — Kathryn cut "you're over the setup hump… you'll be able to run this independently" (assessment of his competence/trajectory, and "over the hump" implies he'd been behind) and replaced it with a neutral "Let me know if you have any questions!" Also word-level: don't over-specify counts ("two more"→"more"), "previous" not "old," renewal link goes in a separate email. Golden file 03 refreshed with the sent version. Reason: structural composition gaps, not post-draft checks — encoded in Steps 5–6 where they prevent recurrence on the next member's recap. - 2026-04-29 (structural pass): Inserted Step 3 (Calendar Lookup, was Step 10). Inserted Step 5 (Commitments / Decisions / Specifics Ledger — new structural protection). Step 6 (Draft) reframed as select-from-ledger, not generate-from-transcript. Step 8 (Gmail draft) locked as the only path to drafts including corrections (htmlBody + body required, conversation-edits forbidden). Step 11 (was Step 9) simplified — applies ledger 5.4 list rather than re-scanning transcript. Reason: 8 errors across Rob 4/29 cascade across 3 QC passes traced to "writing without an extraction phase" — model decided what was committed/decided/closing-eligible at the sentence level. Ledger separates extraction from composition. 7 of 12 file 04 blocking failures collapse into structural references (Citation Test → ledger discipline; cadence conflation → file 02 vocabulary; fabricated close → ledger 5.3; etc.).