Meeting Intelligence: Never Miss an Action Item Again
Every meeting transcribed. Every action item captured. Every follow-up delivered. Automatically.
The average knowledge worker attends 25.6 meetings per week. In each one, action items are spoken aloud, discussed, modified, and then — lost. Someone was supposed to take notes. Someone was supposed to follow up. Nobody did.
ORAC's Meeting Intelligence pipeline eliminates this failure mode entirely. It pulls VTT transcripts directly from Microsoft Teams via the Graph API, processes them through structured note generation, extracts action items with assigned owners, and delivers everything to the right Teams channels — without a single human touching the workflow.
The Problem
Meeting follow-up is the most common operational failure in knowledge work:
- 62% of action items from meetings are never completed (Harvard Business Review)
- Average time to distribute meeting notes: 4.2 hours (when they happen at all)
- Cost of duplicate meetings: $37 billion annually across U.S. enterprises (Atlassian)
- Root cause: Manual processes depend on the most unreliable system available — human memory
How It Works
Step 1: Transcript Extraction
After every Teams meeting, ORAC fetches the VTT transcript using the organizer's onlineMeetings API with delegated token refresh. The system handles the real-world complexity that breaks simpler approaches:
- Recurring series deduplication: Recurring meetings share one
onlineMeetingId. ORAC deduplicates by content hash andcreatedDateTimefilter. - External organizer fallback: When the organizer is external to your tenant, the transcript fetch returns 404. ORAC falls back to participant-based retrieval.
- Blocks and OOO handling: Calendar blocks and out-of-office entries have no online meeting object. The pipeline skips these cleanly.
- CsApplicationAccessPolicy: Per-user application access policy configured for Graph API transcript retrieval.
Step 2: Structured Note Generation
Raw transcripts are processed into two standardized formats:
MN-ORAC (Meeting Notes — ORAC format): Comprehensive structured notes including:
- Meeting metadata (date, time, participants, duration)
- Topic-segmented discussion summary
- Decision log with context
- Action items with owner attribution
- Key quotes and data points mentioned
- Follow-up meeting scheduling notes
MN-DEV (Meeting Notes — Developer format): Technical meeting notes with:
- Scrubbing conventions applied for clean external sharing
- Technical decisions with rationale
- Code/architecture references extracted
- Sprint-relevant items highlighted
- Blockers and dependencies identified
Step 3: Action Item Extraction
Action items are extracted with structured metadata:
{
"action": "Prepare Q2 financial summary for board",
"owner": "David Boggess",
"mentioned_by": "Tammy Moore",
"due_date": "2026-05-28",
"context": "Discussed during budget review segment",
"priority": "HIGH",
"velocity_ticket": "TICKET-1234"
}
Each action item is automatically created as a Velocity ticket (ORAC's project management system) with HIGHEST priority, SELECTED status, and due date — ensuring it appears in the daily briefing.
Step 4: Channel Delivery
Processed output is delivered to designated Teams channels:
| Channel | Content | Timing |
|---|---|---|
| Meetings | Full structured notes (MN-ORAC format) | Within 15 minutes of meeting end |
| Action-Items | Extracted action items with owners | Immediate after processing |
| Daily-Briefing | Aggregated daily summary of all meetings | 6:00 AM ET weekdays |
Processing state is visible through Teams reactions:
- A "soon" reaction when ORAC starts processing a meeting
- A checkmark reaction when processing completes
Key Features
Automated Pipeline Execution
The meeting pipeline runs on schedule and on demand:
python3 meeting-pipeline.py --run --since 7
Processes all meetings from the last 7 days that haven't been processed yet. Idempotent — running it twice produces no duplicates.
Intelligent Participant Handling
The pipeline knows your organization. Mentions are trimmed to relevant stakeholders. External participants are identified and noted. Solo-chat meetings (self-notes) never mention other users.
Multi-Meeting Correlation
When the same topic appears across multiple meetings in a week, ORAC correlates the discussions and surfaces the progression:
"The API migration was discussed in Monday's standup (decision: proceed with v3), Wednesday's architecture review (concern: backward compatibility), and Thursday's sprint planning (allocated to Sprint 47)."
Historical Search
All processed transcripts and notes are embedded in pgvector (embeddings and growing). Natural language search across your entire meeting history:
"What did we decide about the database migration timeline?" "When did we last discuss the Signature deal structure?" "Find all meetings where security compliance was discussed"
Configurable Scrubbing
MN-DEV format applies configurable scrubbing rules for external sharing — removing sensitive financial details, internal codenames, and personal information while preserving technical substance.
Architecture
Microsoft Teams (Graph API)
|
v
+--------+----------+
| Transcript Fetch |
| - VTT extraction |
| - Dedup (hash) |
| - Fallback logic |
+--------+----------+
|
v
+--------+----------+
| Note Generation |
| - MN-ORAC format |
| - MN-DEV format |
| - LLM processing |
| (claude -p) |
+--------+----------+
|
+----+----+
| |
v v
+---+---+ +---+---+
|Action | |Notes |
|Items | |Embed |
|Extract| |pgvec |
+---+---+ +---+---+
| |
v v
+---+---------+---+
| Delivery Layer |
| - Teams channels|
| - Velocity tix |
| - Daily brief |
+-----------------+
Integration Requirements
| Requirement | Detail |
|---|---|
| Microsoft 365 | Teams + Graph API access |
| Azure AD App Registration | With OnlineMeetings.Read.All permission |
| CsApplicationAccessPolicy | Configured per-user for transcript access |
| ORAC Platform | Running instance with Teams MCP server |
Call to Action
Your team had 47 meetings last week. How many action items were actually tracked?