Originally published at claudeguide.io/claude-api-meeting-notes-summarization
Claude API for Meeting Notes Summarization
To summarize meeting transcripts with the Claude API, send the raw transcript text in the user message with a system prompt that defines the output schema — decisions, action items, blockers, and owner assignments. Claude reads Whisper JSON exports, Zoom/Teams .vtt files, and plain-text transcripts without preprocessing. For a 60-minute meeting (~9,500 tokens), claude-haiku-4-5 returns a structured summary in under 5 seconds at a cost of about $0.011. Sonnet adds meaningful accuracy on multi-speaker technical calls but costs roughly 5x more.
Input Formats: Whisper, Zoom, and Teams Transcripts
Meeting transcripts arrive in three common formats. Claude handles all three natively.
OpenAI Whisper JSON — concatenate segment text fields with speaker labels from diarization. Zoom/Teams .vtt — WebVTT format with SPEAKER_NAME: utterance lines and timestamp ranges. Pass VTT as-is; Claude ignores timestamp markup automatically.
python
import anthropic, json
client = anthropic.Anthropic()
def parse_vtt(vtt_text: str) -
The cookbook includes a complete meeting intelligence agent: ingest Zoom/Teams webhooks, run hierarchical summarization, push action items to Jira, and post digests to Slack — all on the Anthropic Agent SDK with prompt caching enabled. Includes a Haiku/Sonnet routing heuristic based on meeting type and attendee count.
[→ Get the Agent SDK Cookbook — $49](https://shoutfirst.gumroad.com/l/ogxhmy?utm_source=claudeguide&utm_medium=article&utm_campaign=claude-api-meeting-notes-summarization)
*Instant download. 30-day money-back guarantee.*
---
## Accuracy Tuning
Three levers improve extraction quality without switching models:
**Few-shot examples** — Add one or two example snippets with correct JSON to the system prompt. Reduces misclassification of decisions vs. action items on domain-specific vocabulary.
**Two-pass verification** — After extraction, send the transcript plus extracted JSON back to Claude: "Are any items missing or misattributed?" Catches roughly half of Haiku's misses at the cost of one additional cheap call.
**Confidence filtering** — Add a `"confidence": 0.0–1.0` field to the schema and flag items below 0.7 for human review before auto-creating Jira tickets. Reduces false positives in noisy, cross-talk-heavy transcripts.
---
## Frequently Asked Questions
### How do I handle transcripts with no speaker labels?
Pass the transcript alongside a list of known attendee names and ask Claude to attribute each turn (see the `attribute_speakers` example above). For production pipelines, use a diarization service — AssemblyAI, Deepgram, or Whisper + pyannote — to generate labels before summarization. Speaker-labeled transcripts improve assignee accuracy by 15–20 percentage points compared to unlabeled input.
### What is the maximum transcript length I can send in one call?
Both `claude-haiku-4-5` and `claude-sonnet-4-6` support 200K token context. A 60-minute meeting is roughly 8,000–12,000 tokens, so a single call covers meetings up to 8–10 hours. Beyond that, use the hierarchical chunking strategy. See [Claude long context techniques](/claude-long-context-techniques) for additional approaches.
### How do I prevent hallucinated action items?
Include a `"source_quote"` field in the schema. Claude must cite the verbatim sentence that generated each item. Run a post-processing check: search each quote in the original transcript and flag items where no match is found. This makes hallucinations immediately visible before they reach Jira or Notion.
### Can I summarize audio recordings directly?
Not with the Claude API — text input is required. Transcribe audio first with OpenAI Whisper (local or API), AssemblyAI, or Deepgram, then pass the transcript to Claude. Whisper large-v3 on an M4 Mac mini transcribes a 60-minute recording in roughly 3–4 minutes.
### How do I customize the prompt for different meeting types?
Create meeting-type-specific system prompts with tailored schema fields: sales calls need `next_steps`, `objections`, `deal_stage`; standups need `yesterday`, `today`, `blockers`; design reviews need `feedback_items`, `open_questions`. Store prompts in a dict keyed by meeting type and select at runtime based on a calendar tag or meeting title prefix.
---
## Agent SDK Cookbook — Full Meeting Intelligence Agent
**[Agent SDK Cookbook — $49](https://shoutfirst.gumroad.com/l/ogxhmy?utm_source=claudeguide&utm_medium=article&utm_campaign=claude-api-meeting-notes-summarization)**
Beyond one-off scripts: the cookbook's meeting chapter covers a production-grade agent that processes Zoom webhook events, routes to the correct model tier by meeting type, runs two-pass verification, and syncs to Notion, Slack, and Jira with deduplication. All recipes use prompt caching — cutting costs on high-volume pipelines by up to 80%.
[→ Get the Agent SDK Cookbook — $49](https://shoutfirst.gumroad.com/l/ogxhmy?utm_source=claudeguide&utm_medium=article&utm_campaign=claude-api-meeting-notes-summarization)
*Instant download. 30-day money-back guarantee.*
---
## Sources
- [Anthropic — Claude model pricing](https://www.anthropic.com/pricing) — April 2026
- [Anthropic — Messages API reference](https://docs.anthropic.com/en/api/messages) — April 2026
- [OpenAI Whisper](https://github.com/openai/whisper) — speaker diarization reference
- [AssemblyAI speaker diarization docs](https://www.assemblyai.com/docs/speech-to-text/speaker-diarization) — April 2026
Top comments (0)