Productivity · Meeting AI · v2

Meeting to
Action

"Normalize messy transcripts, detect meeting type, extract structured data, track commitments across weeks, and ship a weekly digest — one tool."

$ python main.py batch \
  --dir ./transcripts/ --digest

# Normalizing 3 transcripts (Zoom format)…
# Processing: standup_mon.txt standup_wed.txt standup_fri.txt

Batch complete: 3/3 succeeded

Commitment check:
[MISSED] Bob — Deploy runbook (due May 14, 1 meeting elapsed)

Weekly Digest
Meetings: 3 · Action items: 11 · Decisions: 6
Open items by owner: Alice (3), Bob (2), Charlie (2)
Escalated risks: 2 (critical)

Four steps.
Zero ambiguity.

Messy transcript in. Structured accountability out — across every meeting this week.

01
Normalize
Strips Zoom, Teams, and Meet timestamps. Cleans speaker labels. Detects source format automatically
02
Classify
Claude identifies meeting type — standup, retrospective, exec review, incident review — with a confidence score
03
Extract
Decisions, action items with owners and deadlines, open questions, risk flags, and a type-aware follow-up email
04
Track
Cross-meeting commitment tracker flags missed items by severity. Weekly digest aggregates open items by owner across all sessions

Built for
accountability.

Every feature targets the gap between a meeting happening and work actually getting done.

01
Transcript Normalization
Strips Zoom [00:02:14], Teams -->, Meet (00:02) timestamps. Normalises email addresses and ALL_CAPS speaker labels. Reports source format and speaker count
02
Meeting Type Detection
Classifies each meeting as standup, retrospective, exec_review, sprint_planning, incident_review, 1-on-1, and more — with a confidence score. Type shapes the follow-up format
03
Batch Processing
Process an entire directory of transcripts in one command: python main.py batch --dir ./transcripts/. Failures are isolated — one bad file never stops the rest
04
Commitment Tracker
Compares action items across meetings. Flags missed commitments with severity (critical / moderate / low), counts meetings elapsed, and surfaces the highest-risk owner
05
Weekly Digest
Rule-based aggregation: open items by owner, escalated risks (deduplicated across sessions), carry-forward items. Single LLM call generates a ready-to-send digest email
06
Notion Integration
Push structured meeting output directly to a Notion database. Set NOTION_API_KEY and NOTION_DATABASE_ID, then pass --push-notion to any extraction command

Chaos in.
Structure out.

Input — raw Zoom transcript
[00:01:12] ALICE_CHEN_EXT: Morning.
Redis still at 450ms — auth is
blocked.
[00:01:45] BOB_PATEL: I'll own the
fix by Wednesday.
[00:02:10] ALICE_CHEN_EXT: Deploy
needs Priya's sign-off. Flag it.
[00:02:30] BOB_PATEL: Should we
pull in the infra team?
[00:02:44] ALICE_CHEN_EXT: Not yet,
let's see how Bob's fix lands first.
Output — normalized + extracted
{
  "meeting_type": "standup",
  "meeting_type_confidence": 0.94,
  "action_items": [{
    "task":     "Fix Redis latency",
    "owner":    "Bob Patel",
    "deadline": "Wednesday EOD",
    "priority": "high"
  }],
  "risk_flags": [{
    "description": "Deploy blocked on
     Priya's approval",
    "severity": "critical"
  }],
  "formatted_follow_up": "🔴 Blockers\n
   - Deploy pending Priya sign-off\n
   🔄 In Progress\n- Redis fix (Bob)\n
   ✅ Done\n- Sprint kickoff"
}
Output schema fields
meeting_type
meeting_type_confidence
decisions[]
action_items[].task
action_items[].owner
action_items[].deadline
action_items[].priority
open_questions[]
risk_flags[].severity
formatted_follow_up
summary

Five more tools.
Same standard.

Each tool is a standalone CLI + REST API. Each one solves a real problem with Claude.