MarketingOS ← Library  ·  AI-OS cookbook · 10
Customer — grow · your calls already contain the answers

The Voice of Customer Layer

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.

Agentic hire · Customer Insights Analyst 5 fields per call, strict JSON One living page per client Claude Code · markdown vault · a small fast model
What this builds

From transcripts nobody reads to a queryable customer voice

Before

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.

After

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 · Extraction

Per call
  • Decisions — firm only
  • Follow-ups with owners
  • 2–5 theme tags
  • One verbatim key quote
  • Mentioned people

B · Synthesis

Per client
  • One current-truth page
  • The delta-read rule
  • Append-only decision log
  • Flags for contradictions
  • Status: active → terminated

C · Outputs

What it feeds
  • Offer language
  • Product priorities
  • Renewal-risk signals
  • Marketing copy
  • Case-study raw material
The extraction layer

Five fields, extracted from every call

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.

FieldWhat it capturesThe discipline
decisionsFirm, agreed, named decisions"We will do X" only — never "we should consider"
followupsAction items from the callA clear owner every time: who · what · optional due date
themes2–5 kebab-case tags on the call's substancee.g. #pricing · #customer-discovery · #partnership — written into tags so the vault's tag index picks them up
key_quoteOne memorable sentenceVerbatim, speaker-attributed — a real quote, never a paraphrase; empty if nothing memorable
mentioned_peopleNames referenced who weren't in the roomSecond-degree connections worth tracking, linked to people pages
→ The extraction discipline, verbatim from the production prompt

"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."

01Idempotent by frontmatter

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.

02Strict JSON, no prose

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".

03Cheap enough to run on everything

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.

04Written back into the file

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 synthesis layer

One living page per client — current truth, not archive

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.

1

Read the synthesis first

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.

2

Delta-read only what's newer

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%.

3

Update in the same session

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.

4

Page anatomy

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.

5

One writer per truth

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.

What it feeds

Four outputs from the same layer

01Offer language

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.

02Product priorities

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.

03Renewal-risk signals

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.

04Marketing copy

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.

The foundation

Built on cookbook 01 — the Meeting Intelligence Stack

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.

01 · Meeting Intelligence

The foundation
  • Calls land as structured markdown
  • Frontmatter + full transcript
  • One file per meeting

10 · Voice of Customer

This cookbook
  • Extraction: 5 fields per call
  • Synthesis: one page per client
  • Queryable customer voice

09 · Customer Health

Reads both layers
  • Theme + sentiment signals
  • RED / YELLOW / GREEN verdicts
  • Daily board + morning brief
Put it to work

One prompt, three steps

1

Copy the bootstrap promptThe button below puts it on your clipboard.

2

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.

3

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.