Two passes over the calls you already record: an extraction layer that turns every transcript into decisions, themes, follow-ups and one verbatim quote — and a synthesis layer that keeps one living current-truth page per client. Offer language, product priorities and renewal signals become queryable.
Hundreds of hours of customer calls sit in the recorder archive. The exact words customers use for their pain, the themes that keep recurring, the decisions made on every call — all of it exists, none of it is queryable. Every "what does this client actually think?" means re-listening, or re-deriving the answer from ten transcripts.
Every call carries five extracted fields in machine-readable frontmatter plus a summary block. Every client has one living page that answers "what's the current state?" in a single read. Questions start at 80% answered instead of 0% — grep the themes, quote the quotes, read one page instead of ten transcripts.
A small fast model sweeps the vault: one file per meeting in, the same file out — frontmatter extended, a summary block appended. The field definitions below are the production system's discipline, not aspiration.
| Field | What it captures | The discipline |
|---|---|---|
decisions | Firm, agreed, named decisions | "We will do X" only — never "we should consider" |
followups | Action items from the call | A clear owner every time: who · what · optional due date |
themes | 2–5 kebab-case tags on the call's substance | e.g. #pricing · #customer-discovery · #partnership — written into tags so the vault's tag index picks them up |
key_quote | One memorable sentence | Verbatim, speaker-attributed — a real quote, never a paraphrase; empty if nothing memorable |
mentioned_people | Names referenced who weren't in the room | Second-degree connections worth tracking, linked to people pages |
"Be precise. No filler. If a section has no content, return an empty array — don't manufacture decisions or followups that didn't happen. … Output ONLY valid JSON, no prose."
Every enriched file gets stamped: ai_extracted: true, ai_extracted_at, ai_model. Re-runs skip stamped files and only touch new calls; a force flag re-enriches cleanly — the old summary block is stripped, never duplicated. Scoped runs by client folder or limit for testing, plus a dry-run mode.
The model returns one JSON object against a fixed schema; anything else fails loudly instead of polluting the vault. Empty arrays beat manufactured insight — the layer stays trustworthy because it is allowed to say "nothing here".
A small fast model at roughly $1 in / $5 out per million tokens, transcripts capped near 15k tokens, concurrency-limited workers, a live cost counter. An entire call corpus enriches for single-digit dollars — so you never have to choose which calls deserve it.
Frontmatter carries the stamps plus the theme tags; the body gets an appended AI-summary section — decisions, open follow-ups, themes, mentioned people, and the key quote as a blockquote. The transcript stays untouched below it. One file remains the whole truth about one call.
The vault is an archive: chronological transcripts. A wiki answers questions. The synthesis layer is that wiki — one AI-maintained page per client or entity, plus an index with a status for each: active · winding-down · dormant · terminated. Dormant and terminated entities flip to a post-mortem plus re-engagement hooks.
On any question about a client, the page is the starting point — never the raw transcripts. Each page carries a last_updated stamp and a source window in its frontmatter, so you always know how fresh the truth is.
Then check only for calls newer than last_updated and integrate the difference. This is the compounding move: each question starts at 80% instead of being re-derived from ten transcripts at 0%.
After reading a new call, the page gets updated immediately — not "later". Current truth is edited in place (it's mutable by design). Decisions are appended to the decision log with source links — history is never rewritten. Contradictions go into a flags section instead of being silently resolved.
Frontmatter (entity, last_updated, source window) → current truth → active projects → parked / declined → open questions → what you owe them → decision log (append-only) → flags & contradictions → standing resources.
The synthesis folder is owned by the AI session that maintains it; the automated pipelines never write there, and the synthesis never writes into pipeline-owned folders. No write conflicts, no silent overwrites — every folder has exactly one writer.
Customers describe their pain better than any copywriter. The key-quote field collects their verbatim, speaker-attributed sentences — offers and sales pages written from them sound like the reader, because they are the reader.
Theme tags are a ranked backlog signal. When the same kebab-case theme recurs across accounts in a month, that's the roadmap talking — grep the tags, count, sort. No survey will tell you faster.
Sentiment and theme drift show up in the enriched layer before they show up in revenue: delivery themes giving way to contract-and-expectation themes is a churn tell. This layer is exactly what the Customer Health board (cookbook 09) reads for its theme and sentiment signals.
Key quotes become hooks, testimonial seeds and webinar slides. Decisions and follow-ups become case-study raw material — with dates and source links already attached.
Everything on this page assumes calls already land as markdown: one file per meeting with frontmatter (date, attendees, source link) and a full transcript. That's the Meeting Intelligence Stack — cookbook 01: recorder → database → vault. If your calls aren't structured yet, build that first — the voice-of-customer layer is a pure read-and-annotate pass on top of it.
Copy the bootstrap promptThe button below puts it on your clipboard.
Paste it into Claude CodeIn the project where your meeting vault lives — with cookbook 01 in place, so calls already land as markdown with transcripts.
Answer its questionsIt builds the extraction sweep first, then the synthesis pages for your active clients with the delta-read rule wired in.
No download needed — this cookbook is the method; you build it on your own call corpus.