Overview
Turns a transcript into a faithful summary, a clean decisions list, and action items with owners and due dates.
Stays grounded in what was actually said — decisions and action items trace back to the transcript.
Attributes ownership only when it's clear, and flags ambiguous ones for confirmation instead of guessing.
Defensive: never invents a decision, owner, or commitment, and keeps merely-discussed items out of the decisions list.
AgentAz™ specification
A lightweight, design-time governance spec for security review. It documents what this agent is authorized to do — and why — and pairs with whatever policy engine you already run. It does not enforce anything at runtime.
Machine-readable contract (agentaz.json), validated against the open AgentAz™ JSON Schema — bundled for offline use and published at a permanent URL:
{
"$schema": "./agentaz.schema.json",
"version": "2.0.0",
"last_reviewed": "2026-06-24",
"agent_id": "meeting-summary-agent",
"trust_level": "A2",
"dna_pattern": "Synthesis",
"worst_case_action": "Produces an inaccurate summary for participant review. Cannot send, assign, or schedule.",
"authority_boundary": "Summarizes transcripts and extracts stated action items; send/assign tools absent; no invented owners.",
"tags": [
"meeting-intelligence",
"summary",
"read-only",
"human-review"
],
"tool_boundary": {
"allowed_tools": [
"read_transcript",
"summarize",
"extract_action_items",
"flag_ambiguous"
],
"execution_tools_absent": true
},
"output_boundary": {
"format": "structured_json",
"never_emits": [
"send",
"assign_task",
"schedule"
]
},
"cost_boundary": {
"max_usd_per_trace_loop": 0.2,
"alert_threshold_usd": 0.14
},
"loop_boundary": {
"max_reasoning_turns": 8
},
"human_handoff": {
"triggers": [
"unclear_ownership",
"ambiguous_item"
],
"destination": "meeting_owner"
},
"audit": {
"append_only": true,
"logs": [
"summary",
"action_items"
]
}
}New to this? Read the AgentAz specification guide — Trust Levels, DNA patterns, and how it complements your runtime.
AgentAz™ is open source under Apache-2.0 — schema (frozen v1.0.0) and source on GitHub.
Governance matrix
A scannable summary of this blueprint's governance coverage, derived from its AgentAz™ specification. It documents the boundaries that already ship — not new functionality.
| Agent goal | Bounded by the authority spec above |
|---|---|
| Trust Level | A2 — Recommend |
| Tool access | Least privilege — execution tools absent (read-only) |
| Context handling | Grounded in provided inputs; cites or flags rather than guessing |
| Memory strategy | Task-scoped; no persistent cross-session memory |
| Human approval | Required on unclear ownership, ambiguous item → meeting owner |
| Audit trail | Append-only log (summary, action items) |
| Cost & loop bounds | ≤ $0.2 per loop · ≤ 8 reasoning turns |
| Recovery / escalation | Escalates to meeting owner |
Agent component mapping
A framework-neutral view of how this blueprint maps to standard agent-architecture components (the vocabulary common to ADK-style frameworks). It describes structure for clarity — not an official integration or certified compatibility.
| Agent | Primary reasoner — Recommend authority (A2) |
|---|---|
| Tools | read transcript, summarize, extract action items, flag ambiguous — execution tools absent (read-only) |
| Memory | Task-scoped working context; no persistent cross-session memory |
| Guardrails | Worst-case classified (A2); no execution tools; ≤ $0.2/loop · ≤ 8 turns |
| Evaluator | Confidence and authority-boundary checks; low-confidence or out-of-bounds results are flagged, not actioned |
| Handoff | Escalates to meeting owner on unclear ownership, ambiguous item |
Failure modes
Specific ways this blueprint can fail, and how it is designed to detect, contain, and recover from each — the boundaries that make it safe to run, stated plainly.
Invents an action item or owner not stated in the meeting.
- Detection
- Items are grounded in the transcript and unclear ownership is flagged.
- Mitigation
- It never invents owners or commitments; it summarizes only.
- Recovery
- Participants confirm and correct.
Misattributes a decision to the wrong person.
- Detection
- Speaker attribution is grounded in the transcript.
- Mitigation
- Ambiguous attribution is flagged.
- Recovery
- Participants correct it.
Buries a key decision in the summary noise.
- Detection
- Decisions are extracted distinctly from discussion.
- Mitigation
- It separates decisions from chatter.
- Recovery
- Participants review the full summary.
Evaluation
Faithfulness of decisions and action items is primary — an invented owner or misattributed decision is the failure.
| Action-item faithfulness | Share of extracted action items grounded in the transcript. |
|---|---|
| Owner-attribution accuracy | Share of items and decisions attributed to the correct person. |
| Fabrication rate | Frequency of invented items or owners — should be near zero. |
| Decision recall | Of decisions made, the share captured distinctly from discussion. |
| Latency | Time to summarize. |
Recommended approach. Use meetings with reference summaries and labeled action items and owners; measure faithfulness, attribution accuracy, and decision recall against the transcript. Participants confirm — it never assigns or notifies.
When to use
Use it when
- You run meetings and want reliable notes, decisions, and action items without manual write-up.
- You have transcripts (or recordings you can transcribe) to work from.
- You want owners and due dates captured accurately, with ambiguous ones flagged.
- You need a faithful record that distinguishes real decisions from open discussion.
Avoid it when
- You have no transcript and want notes invented from a topic — it won't fabricate.
- You expect it to assign owners by guessing when the meeting didn't make them clear.
- You need legally authoritative minutes without human review.
- You can't keep meeting content appropriately confidential.
System prompt
You are a Meeting Summary & Action Item Agent. From a meeting transcript, you produce a faithful summary, the decisions actually made, action items with owners and due dates, and open questions. You are judged on faithfulness — and on never inventing a decision, owner, action, or commitment the transcript doesn't support.
== CORE PRINCIPLES ==
1. Grounded in the transcript. Every decision, action item, and key point must trace to something actually said. If it wasn't said, it doesn't go in. When useful, cite or quote the supporting line.
2. Decisions vs. discussion. Only list as a DECISION something the group actually agreed/concluded. Things debated but not resolved go under open questions — not decisions.
3. Attribute carefully. Assign an action item's owner only when the transcript makes it clear. If ownership is ambiguous ("someone should…"), mark it unassigned and flag it for confirmation rather than guessing a name.
== HARD RULES (NON-NEGOTIABLE) ==
- NO FABRICATION: Never invent decisions, action items, owners, due dates, numbers, or commitments. Omit what isn't supported.
- NO MISATTRIBUTION: Don't assign a statement or task to a person unless the transcript clearly supports it. Unclear = unassigned + flag.
- DON'T INFER COMMITMENTS: A passing "we could…" or "maybe I'll…" is not a firm action item. Capture firm commitments; mark tentative ones as tentative.
- FLAG UNCERTAINTY: Where the transcript is unclear, garbled, or contradictory, say so rather than smoothing it into false confidence.
- CONFIDENTIALITY/PII: Treat the transcript as confidential; keep it in scope; redact personal data where present.
== METHOD ==
- Read the transcript; segment by topic. Extract decisions (only agreed ones), action items (owner + due if stated, else flag), and open questions.
- Attribute owners only on clear evidence. Note tentative vs firm. Produce a concise, faithful summary.
== OUTPUT FORMAT (return ONE JSON object) ==
{
"summary": "<concise, faithful overview>",
"decisions": [ { "decision": "<what was agreed>", "evidence": "<short quote/paraphrase from transcript>" } ],
"action_items": [ { "task": "<action>", "owner": "<name or 'unassigned'>", "due": "<date or 'not specified'>", "firmness": "firm|tentative", "needs_confirmation": <bool> } ],
"open_questions": ["<discussed but unresolved>"],
"attribution_flags": ["<ambiguous ownership or unclear points to confirm>"],
"confidence": "high|medium|low",
"caveats": ["<transcript quality / unclear sections>"]
}
Never list a debated-but-unresolved item as a decision. Never assign an owner you can't support — mark it unassigned and flag it.Simulate run
Try the agent with a sample task. This is a frontend-only preview that shows how the kit would plan and execute — no API calls, nothing leaves your browser.
Frontend preview only — no data leaves your browser. Tip: press ⌘/Ctrl + Enter to run.
Setup guide
Install and connect your source
Install the agent and connect it to your meeting/transcription source.
pipx install meeting-summary-agent meeting-summary-agent connect --source zoom,otter meeting-summary-agent doctor
Configure faithfulness guardrails
Keep the no-fabrication and attribution posture explicit.
cp .env.example .env ANTHROPIC_API_KEY=sk-ant-... REQUIRE_EVIDENCE_FOR_DECISIONS=true GUESS_OWNERS=false REDACT_PII=true
Set output template
Define the notes structure your team expects.
# notes.yml
sections: [summary, decisions, action_items, open_questions]
action_items: { fields: [task, owner, due, firmness] }
flag_unassigned: trueDry-run on a transcript
Generate notes and review decisions, owners, and flags.
meeting-summary-agent run --transcript ./sample.vtt --explain # prints decisions+evidence, action items+owners, open questions, flags
Wire into your flow
Auto-process finished meetings and post notes to your docs/channel for review.
# meeting-end webhook -> generate notes -> post to #notes (for human confirmation)
Architecture
Tools required
Workflow
1. Intake the transcript
Load the transcript with speaker/timestamp data under confidential access.
2. Segment by topic
Break the conversation into topics so extractions stay traceable.
3. Extract real decisions
Capture only items the group agreed on, with supporting evidence; keep debates in open questions.
4. Capture action items
Pull firm commitments with owner and due date where clear; mark tentative ones and flag ambiguous ownership.
5. Check faithfulness
Verify every decision and action item against the transcript; drop or flag anything unsupported.
6. Summarize & list open questions
Write a concise faithful summary and list unresolved topics and attribution flags.
7. Redact & deliver
Redact PII and deliver structured notes for review, keeping content confidential.
Examples
Clear meeting → faithful summary, decisions, owned action items
A well-run meeting with explicit agreements and assignments. The agent captures them cleanly with evidence.
Input
Transcript excerpt: 'Maria: Let's ship the beta on the 15th. — Team: agreed. — Maria: Raj, can you finalize the release notes by the 12th? — Raj: yes, I'll have them done.'
Output
{
"summary": "The team agreed to ship the beta on the 15th and assigned release-note finalization to Raj by the 12th.",
"decisions": [ { "decision": "Ship the beta on the 15th", "evidence": "Maria proposed the 15th; team responded 'agreed'" } ],
"action_items": [ { "task": "Finalize the release notes", "owner": "Raj", "due": "the 12th", "firmness": "firm", "needs_confirmation": false } ],
"open_questions": [],
"attribution_flags": [],
"confidence": "high",
"caveats": []
}Note: Everything traces to the transcript: a clearly agreed decision (with evidence) and a firm, explicitly-owned action item with a due date. This is the clean case — the value is that the structure is faithful, not embellished.
Ambiguous ownership → action item left unassigned and flagged
An action is clearly needed but nobody explicitly took it. The agent refuses to guess an owner.
Input
Transcript: 'Someone needs to follow up with the vendor about the pricing before next week.' (No one explicitly volunteers.)
Output
{
"summary": "The team identified that a vendor pricing follow-up is needed before next week, but no owner was assigned during the meeting.",
"decisions": [],
"action_items": [ { "task": "Follow up with the vendor about pricing", "owner": "unassigned", "due": "before next week", "firmness": "firm", "needs_confirmation": true } ],
"open_questions": ["Who will own the vendor pricing follow-up?"],
"attribution_flags": ["Action item 'vendor pricing follow-up' has no clear owner — confirm before distributing"],
"confidence": "high",
"caveats": []
}Note: The action is real, but ownership was never assigned — so the agent captures the task with owner='unassigned', flags it for confirmation, and adds an open question. Guessing a name here would create a false record and a dropped ball. Honest 'unassigned' beats a confident wrong owner.
Discussed but not agreed → kept OUT of decisions
A topic was debated without resolution. The agent resists logging it as a decision and files it under open questions.
Input
Transcript: 'Alex: We should probably switch to the new vendor. — Sam: I'm not sure, the migration cost worries me. — Maria: Let's table it and revisit next week.'
Output
{
"summary": "The team discussed switching to a new vendor but did not decide; migration cost was raised as a concern and the topic was tabled to next week.",
"decisions": [],
"action_items": [ { "task": "Revisit the vendor-switch decision", "owner": "unassigned", "due": "next week", "firmness": "firm", "needs_confirmation": true } ],
"open_questions": ["Should we switch to the new vendor? (migration cost unresolved — tabled to next week)"],
"attribution_flags": [],
"confidence": "high",
"caveats": []
}Note: The defining faithfulness case: it's tempting to record 'decided to switch vendors,' but the transcript shows the opposite — it was debated and explicitly tabled. The agent logs zero decisions, puts the question under open questions, and only captures the real action (revisit next week). It reports what happened, not a tidier version of it.
Implementation notes
- Require transcript evidence for every decision and action item; an unsupported note is worse than a missing one because teams act on it.
- Only list agreed conclusions as decisions — debated-but-unresolved topics belong in open questions, or you manufacture consensus that didn't happen.
- Never guess owners: mark ambiguous ownership unassigned and flag it, so nothing silently falls through with a wrong name attached.
- Distinguish firm commitments from tentative 'maybes'; over-capturing tentative asides as action items erodes trust in the notes.
- Surface transcript-quality caveats and unclear sections instead of smoothing them into false confidence.
- Keep transcripts confidential and redact PII; meeting content is sensitive and shouldn't leak into shared notes.
- Decision/discussion separation and attribution is what the strong model is for; a cheaper model can segment and draft the summary.
Variations
Basic
Summary & action extractor
Produces a faithful summary, decisions, and action items from a single transcript, with ambiguous owners flagged. On demand.
Advanced
Evidence-grounded notes
Adds decision-vs-discussion separation, evidence citations, firm/tentative tagging, attribution flags, and PII redaction.
Enterprise
Meeting intelligence at scale
Adds automatic post-meeting processing, action-item tracking into task systems, cross-meeting follow-up, confidentiality controls, and integration with docs and calendars.
Download the Agent Blueprint
Export
This blueprint and the AgentAz™ specification live in the central AgentKits registry — open source under Apache-2.0 (code & schema) and CC‑BY‑4.0 (text).
Frequently asked questions
No — that's its core constraint. Every decision and action item must trace to something actually said in the transcript; anything unsupported is omitted, and unclear points are flagged rather than invented.
Only items the group actually agreed on or concluded are listed as decisions, with supporting evidence. Topics that were debated but left unresolved go under open questions, so it never manufactures consensus.
It marks the owner as 'unassigned' and flags the item for confirmation instead of guessing a name, and it adds an open question so the ownership gap is visible.
It captures firm commitments and marks tentative ones as tentative, rather than turning passing asides into hard action items that clutter the notes and erode trust.
Yes. It treats the transcript as confidential, keeps it in scope, and redacts personal data from the output.
It produces a faithful, evidence-grounded draft that's an excellent starting point, but for legally authoritative minutes a human should review and confirm — especially decisions and owners.