AI Meeting Notes to Action Items
Automatically extract action items, decisions, and follow-ups from meeting notes or transcripts.
Workflow Steps
- 1
Transcriber Agent converts audio to text (if needed)
- 2
Summarizer Agent creates a concise meeting summary
- 3
Action Extractor Agent identifies action items with owners and deadlines
- 4
Decision Logger Agent captures key decisions and rationale
- 5
Follow-up Scheduler Agent creates calendar events for deadlines
- 6
Notifier Agent sends summaries and action items to participants
Download
Documentation
AI Meeting Notes to Action Items
Overview
This workflow automatically transforms raw meeting notes or transcripts into structured action items, decisions, and follow-ups. It eliminates the tedious manual process of reviewing meeting recordings and extracting actionable information, saving hours of administrative work per week.
Difficulty
Easy ā Requires basic setup of Claude API and one or two integrations.
Tools Required
| Tool | Purpose |
|---|---|
| Claude | Core AI for summarization and extraction |
| Notion MCP | Store meeting notes and action items |
| Google Calendar | Schedule follow-up reminders |
| Slack | Notify team members of action items |
| Filesystem MCP | Read meeting transcript files |
Workflow Steps
Step 1: Transcribe (Optional)
If you have audio recordings, use a transcription service to convert them to text:
# Using OpenAI Whisper
from openai import OpenAI
client = OpenAI()
audio_file = open("meeting.mp3", "rb")
transcript = client.audio.transcriptions.create(
model="whisper-1",
file=audio_file
)
text = transcript.text
Or use Claude's built-in audio processing if available.
Step 2: Summarize the Meeting
import anthropic
client = anthropic.Anthropic()
summary = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1000,
messages=[
{"role": "user", "content": f"""
Summarize the following meeting transcript in a structured format:
{transcript}
Include:
1. Main topics discussed
2. Key decisions made
3. Action items mentioned
4. Next steps
"""}
]
)
Step 3: Extract Action Items
action_items = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=2000,
messages=[
{"role": "user", "content": f"""
Extract all action items from this meeting transcript.
For each action item, identify:
- The task description
- The owner (who is responsible)
- The deadline (if mentioned)
- Priority (high/medium/low)
- Related decisions or context
Transcript:
{transcript}
Return as a JSON array.
"""}
]
)
Step 4: Log Decisions
decisions = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1500,
messages=[
{"role": "user", "content": f"""
Extract all decisions made in this meeting.
For each decision, identify:
- What was decided
- Who made the decision
- The rationale
- Any dissenting opinions
Transcript:
{transcript}
Return as a structured format.
"""}
]
)
Step 5: Schedule Follow-ups
# Create calendar events for action item deadlines
from googleapiclient.discovery import build
calendar = build('calendar', 'v3', credentials=creds)
for item in action_items:
if item.get('deadline'):
event = {
'summary': f"Follow-up: {item['task']}",
'description': f"Action item from meeting on {meeting_date}\nOwner: {item['owner']}",
'start': {'dateTime': item['deadline'], 'timeZone': 'UTC'},
'end': {'dateTime': item['deadline'], 'timeZone': 'UTC'},
'reminders': {'useDefault': False, 'overrides': [{'method': 'email', 'minutes': 1440}]}
}
calendar.events().insert(calendarId='primary', body=event).execute()
Step 6: Notify Participants
# Send summary to team via Slack
import requests
slack_webhook = "https://hooks.slack.com/services/..."
summary_message = f"""
š **Meeting Summary - {meeting_date}**
**Action Items:**
{format_action_items(action_items)}
**Key Decisions:**
{format_decisions(decisions)}
Full notes: {notion_link}
"""
requests.post(slack_webhook, json={'text': summary_message})
Example Usage
Input: Meeting Transcript
Meeting: Product Roadmap Review
Date: 2026-05-20
Participants: Alice (PM), Bob (Eng), Carol (Design)
Alice: Let's review the Q2 roadmap. We need to prioritize the new checkout flow.
Bob: The checkout redesign is blocked on the payment API migration.
Carol: I've completed the wireframes for the new checkout. They're in Figma.
Alice: Great. Bob, can you start the payment API migration by end of May?
Bob: I can have a plan ready by Friday, but the actual migration will take 2 weeks.
Carol: I'll share the final designs by Thursday.
Alice: Okay. Let's schedule a follow-up for June 1st to review progress.
Output: Structured Action Items
[
{
"task": "Create payment API migration plan",
"owner": "Bob",
"deadline": "2026-05-23",
"priority": "high",
"context": "Checkout redesign is blocked on payment API migration"
},
{
"task": "Share final checkout wireframes",
"owner": "Carol",
"deadline": "2026-05-22",
"priority": "medium",
"context": "Wireframes already completed, need to share final versions"
},
{
"task": "Begin payment API migration",
"owner": "Bob",
"deadline": "2026-05-31",
"priority": "high",
"context": "Estimated 2 weeks for migration"
},
{
"task": "Schedule follow-up meeting",
"owner": "Alice",
"deadline": "2026-06-01",
"priority": "medium",
"context": "Review progress on payment migration and checkout redesign"
}
]
Pros
- ā Saves hours of manual note-taking and follow-up
- ā Ensures no action items are missed
- ā Automatic deadline tracking and reminders
- ā Creates searchable meeting history
- ā Works with any meeting format (audio, video, text)
Cons
- ā Requires transcription for audio meetings
- ā May miss nuanced context in complex discussions
- ā Needs integration setup for full automation
- ā Accuracy depends on transcription quality
When to Use
- Regular team meetings: Weekly standups, sprint planning, retrospectives
- Client meetings: Capture requirements and follow-ups
- Interviews: Extract key points and next steps
- Brainstorming sessions: Document ideas and action items
- Any meeting with action items: If you need to track follow-ups
