AgentKits

Meeting Summary & Action Item Agent

Production Blueprint
0New

Includes Agent Blueprint + Implementation Guide

Takes a meeting transcript into something a team can actually rely on: a faithful summary, the decisions that were truly made, and action items with the right owner and due date — without inventing any of it. It stays grounded in the transcript, attributes ownership only when it's clear, and keeps things that were merely discussed out of the decisions list. It is defensive by design: it never fabricates a decision, owner, or commitment the transcript doesn't support, flags ambiguous ownership instead of guessing, separates decisions from open discussion, and keeps confidential content in scope.

meetingstranscriptionaction-itemssummaryproductivityautonomous-agentmeeting-notesdecisionsagentazagent-governancetrust-levelproduction-readiness
StackClaude, LangGraph, OpenAI
DifficultyIntermediate
Setup40 min
Version2.0.0 · 2026-06-21

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.

Trust Level ?A2 — Recommend
DNA PatternSynthesis (Extract → Synthesize → Verify)
Worst-Case ActionProduces an inaccurate summary or a wrong action item that participants review and correct. It cannot send, assign, schedule, or take any action — those tools are absent from its registry.
Authority BoundaryReads a transcript, summarizes it, and extracts action items with owners and due dates where stated, flagging ambiguous ownership. Participants confirm. It never sends, assigns, or schedules, and it never invents owners or commitments.
Verification TestProvide a transcript with unclear ownership → confirm the agent flags it rather than inventing an owner; confirm no send/assign tool exists.
Production Readiness6/6 dimensions passing. Tool isolation: send/assign/schedule tools absent. Human gates: participants confirm. Confidence escalation: ambiguous items flagged. Cost ceiling: bounded per meeting. Audit trail: summary and items logged. Escalation path: unclear ownership flagged.
Last Reviewed2026-06-24

Machine-readable contract (agentaz.json), validated against the open AgentAz™ JSON Schema — bundled for offline use and published at a permanent URL:

agentaz.json
{
  "$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 goalBounded by the authority spec above
Trust LevelA2 — Recommend
Tool accessLeast privilege — execution tools absent (read-only)
Context handlingGrounded in provided inputs; cites or flags rather than guessing
Memory strategyTask-scoped; no persistent cross-session memory
Human approvalRequired on unclear ownership, ambiguous item → meeting owner
Audit trailAppend-only log (summary, action items)
Cost & loop bounds≤ $0.2 per loop · ≤ 8 reasoning turns
Recovery / escalationEscalates 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.

AgentPrimary reasoner — Recommend authority (A2)
Toolsread transcript, summarize, extract action items, flag ambiguous — execution tools absent (read-only)
MemoryTask-scoped working context; no persistent cross-session memory
GuardrailsWorst-case classified (A2); no execution tools; ≤ $0.2/loop · ≤ 8 turns
EvaluatorConfidence and authority-boundary checks; low-confidence or out-of-bounds results are flagged, not actioned
HandoffEscalates 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 faithfulnessShare of extracted action items grounded in the transcript.
Owner-attribution accuracyShare of items and decisions attributed to the correct person.
Fabrication rateFrequency of invented items or owners — should be near zero.
Decision recallOf decisions made, the share captured distinctly from discussion.
LatencyTime 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

system-prompt.md
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.
Was this useful?

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.

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

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

shell
# notes.yml
sections: [summary, decisions, action_items, open_questions]
action_items: { fields: [task, owner, due, firmness] }
flag_unassigned: true

Dry-run on a transcript

Generate notes and review decisions, owners, and flags.

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

shell
# meeting-end webhook -> generate notes -> post to #notes (for human confirmation)

Architecture

Tools required

get_transcriptRetrieve the meeting transcript with speaker labels and timestamps where available.
segment_topicsSegment the transcript into coherent topic sections for organized extraction.
extract_decisionsIdentify decisions the group actually agreed on, with supporting transcript evidence.
extract_action_itemsPull firm action items, capturing owner and due date only where clearly stated.
attribute_speakerAttribute statements/tasks to a speaker only on clear evidence; otherwise mark unassigned.
flag_open_questionsCapture topics that were discussed but left unresolved.
summarizeProduce a concise, faithful overview grounded in the transcript.
redact_piiDetect and redact personal data from the notes and output.

Workflow

  1. 1. Intake the transcript

    Load the transcript with speaker/timestamp data under confidential access.

  2. 2. Segment by topic

    Break the conversation into topics so extractions stay traceable.

  3. 3. Extract real decisions

    Capture only items the group agreed on, with supporting evidence; keep debates in open questions.

  4. 4. Capture action items

    Pull firm commitments with owner and due date where clear; mark tentative ones and flag ambiguous ownership.

  5. 5. Check faithfulness

    Verify every decision and action item against the transcript; drop or flag anything unsupported.

  6. 6. Summarize & list open questions

    Write a concise faithful summary and list unresolved topics and attribution flags.

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

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

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

input
Transcript: 'Someone needs to follow up with the vendor about the pricing before next week.' (No one explicitly volunteers.)

Output

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

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

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

The complete blueprint, zipped — including a runnable run.py you can execute with one API key (Anthropic or OpenAI).

Download Blueprint (.zip)
README.mdsystem-prompt.mdsetup-guide.mdtools.jsonworkflow.mdexamples.md.env.examplekit.jsonrun.pyLICENSENOTICEstarters/

Export

Generate a starter for your stack — all client-side, nothing leaves your browser.

ZIP

Starters use mock tools — swap in your integrations to deploy.

View the source on GitHub

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