Turn every meeting into searchable data. Auto-capture summaries, action items, attendees, and AI insights โ then let your agent prep for the next one.
Total meetings, this week count, open action items, top contacts, top topics
๐
Calendar Events
Upcoming meetings synced from Google Calendar via Make.com โ title, time, attendees, location
Pipeline
From Recording to Intelligence
Meetings flow through an automated pipeline โ from webhook capture to searchable intelligence your agent can query.
๐๏ธ
Fathom Webhook
Meeting ends
โ
๐พ
raw_reports
Store payload
โ
๐
Transform
Extract fields
โ
๐
ops_data
Meeting record
โ
๐ฅ๏ธ
Dashboard
Searchable UI
Data Schema
Meeting Record Fields
Every meeting record stored in ops_data follows this shape. Agents read and write these fields via the OpsCenter API.
๐ data.type: "meeting"
titleMeeting name โ "Weekly Standup with Engineering"
dateISO timestamp โ "2026-02-25T10:00:00Z"
duration_minutesLength in minutes โ used to compute duration_display
duration_displayHuman-readable โ "45m" or "1h 15m"
attendeesArray of names โ ["Alice", "Bob", "Charlie"]
summaryAI-generated markdown summary from Fathom or manual entry
action_itemsArray of {task, assignee, done, playback_url} objects
ai_insightsOne-liner: "45 min meeting with 3 attendees (1 external)"
meeting_typeAuto-classified: 1-on-1, team, sales, external, standup, etc.
sentimentpositive, neutral, or negative
has_external_participantsBoolean โ true if non-company domains detected
external_domainsArray of external email domains โ ["acme.com", "gmail.com"]
fathom_urlLink back to the Fathom recording page
share_urlPublic shareable link for the meeting summary
recording_idUnique Fathom recording ID โ used for deduplication
source"fathom", "manual", or custom source identifier
UI Components
What the Dashboard Shows
๐ KPI Cards + Charts
Total meetings, this week, open action items
Meeting type distribution (donut chart)
Monthly trend (bar chart)
Avg duration, external meeting %
๐ Search + Filters
Full-text search across meeting titles
Filter by meeting type (13 categories)
Date range filters (7d, 30d, 90d, all)
External-only and has-action-items toggles
๐ Meeting Cards
Expandable detail panel per meeting
Markdown-rendered summaries (DOMPurify)
Action items with playback URLs
Attendee initials with color-coded avatars
โก Feature Pipeline
"Send To..." dropdown on each meeting
Queue to Action Items, Proposals, Lead Magnets
Status tracking: queued โ processing โ complete
Error recovery with retry actions
๐ Prerequisites
You need a meeting recording tool that sends webhooks. Supported options:
Meeting Recording:Fathom AI (recommended) ยท Fireflies.ai ยท Otter.ai ยท or any tool that exports transcripts + action items via webhook or API.
Calendar Sync (optional): Google Calendar via Make.com scenario for upcoming meeting prep.
๐ Fathom Auto-Sync is Live
When a Fathom meeting finishes, the webhook fires โ report-webhook edge function receives it โ transforms the payload โ inserts into ops_data automatically. No cron job or manual import needed. The bridge function handles deduplication via recording_id.
Setup Prompt
Build Meeting Intelligence from Scratch
Give this prompt to your AI agent (Claude Code or any agent with ClawBuddy API access) to create the full Meeting Intelligence OpsCenter app โ pages, blocks, seed data, and webhook integration.
meeting-intelligence-setup.md
# Meeting Intelligence โ Complete Setup & API Reference
Build a "Meeting Intelligence" module inside ClawBuddy's OpsCenter. This module tracks all meetings from Fathom AI (or manual entry), stores them as searchable records, shows KPI dashboards, and lets agents query past meetings to prep for upcoming ones.
---
## Step 1: Create the App
```json
{
"request_type": "ops",
"action": "create_app",
"name": "Meeting Intelligence",
"description": "Track meetings, extract insights, and prep for upcoming calls",
"icon": "calendar",
"agent_name": "<agent_name>",
"agent_emoji": "<agent_emoji>"
}
```
Save the returned `app_id` โ you'll use it in every subsequent call.
---
## Step 2: Create Pages (Tabs)
Create 3 pages for the app:
```json
{"request_type": "ops", "action": "create_page", "app_id": "<app_id>", "name": "Dashboard", "sort_order": 1}
```
```json
{"request_type": "ops", "action": "create_page", "app_id": "<app_id>", "name": "Meetings", "sort_order": 2}
```
```json
{"request_type": "ops", "action": "create_page", "app_id": "<app_id>", "name": "Calendar", "sort_order": 3}
```
Save each `page_id`.
---
## Step 3: Create Blocks
**Dashboard page:**
```json
{
"request_type": "ops",
"action": "create_block",
"page_id": "<dashboard_page_id>",
"name": "Overview",
"block_type": "meeting_intel",
"config": {"metrics": ["total_meetings", "this_week", "action_items_open"]}
}
```
**Meetings page:**
```json
{
"request_type": "ops",
"action": "create_block",
"page_id": "<meetings_page_id>",
"name": "Meeting Feed",
"block_type": "feed",
"config": {"sortBy": "date", "sortOrder": "desc"}
}
```
**Calendar page:**
```json
{
"request_type": "ops",
"action": "create_block",
"page_id": "<calendar_page_id>",
"name": "Calendar Events",
"block_type": "calendar",
"config": {}
}
```
Save each `block_id`.
---
## Step 4: Seed Overview Record
Create one overview record that holds aggregate KPIs. Update this whenever meetings are added.
```json
{
"request_type": "ops",
"action": "add_data",
"app_id": "<app_id>",
"block_id": "<overview_block_id>",
"item_type": "record",
"data": {
"type": "overview",
"total_meetings": 0,
"this_week": 0,
"action_items_open": 0,
"avg_duration": 0,
"external_meeting_pct": 0,
"top_contacts": [],
"top_topics": [],
"busiest_day": null,
"last_updated": "2026-01-01T00:00:00Z"
}
}
```
---
## Step 5: Add a Meeting Record
Each meeting is stored as a separate ops_data record:
```json
{
"request_type": "ops",
"action": "add_data",
"app_id": "<app_id>",
"block_id": "<meeting_feed_block_id>",
"item_type": "record",
"data": {
"type": "meeting",
"title": "Sales Call with Acme Corp",
"date": "2026-02-25T15:00:00Z",
"duration_minutes": 45,
"duration_display": "45m",
"attendees": ["John from Acme", "You"],
"summary": "Discussed enterprise plan. They want custom onboarding...",
"action_items": [
{"task": "Send proposal by Friday", "assignee": "You", "done": false},
{"task": "Schedule follow-up demo", "assignee": "John", "done": false}
],
"key_decisions": ["They'll pilot with 10 seats"],
"ai_insights": "45 min meeting with 2 attendees (1 external)",
"meeting_type": "sales",
"sentiment": "positive",
"has_external_participants": true,
"external_domains": ["acme.com"],
"source": "manual",
"source_url": null,
"fathom_url": null,
"share_url": null,
"recording_id": null
}
}
```
---
## Step 6: Query Meetings
**List all meetings:**
```json
{
"request_type": "ops",
"action": "list_data",
"app_id": "<app_id>",
"block_id": "<meeting_feed_block_id>"
}
```
**Search by attendee** (filter client-side from list results):
Filter where `data.attendees` array includes the target name.
**Get upcoming calendar events:**
```json
{
"request_type": "ops",
"action": "list_data",
"app_id": "<app_id>",
"block_id": "<calendar_block_id>"
}
```
---
## Step 7: Connect Fathom Webhook (Automatic)
If using Fathom AI:
1. In Fathom settings, set the webhook URL to:
`https://<your-supabase-ref>.supabase.co/functions/v1/report-webhook`
2. The `report-webhook` edge function:
- Receives the Fathom payload (title, transcript, action_items, recording_id, etc.)
- Stores raw data in `raw_reports` table
- Transforms & inserts into `ops_data` as a meeting record (background task)
- Deduplicates by `recording_id`
3. Fathom payload fields used:
- `title` โ meeting title
- `recording_start_time` / `recording_end_time` โ duration
- `calendar_invitees` โ attendees + external domain detection
- `default_summary.markdown_formatted` โ summary
- `action_items` โ action items with playback URLs
- `url` โ fathom_url
- `share_url` โ shareable link
- `recording_id` โ dedup key
---
## Step 8: Connect Google Calendar (Optional)
1. Create a Make.com scenario that fetches Google Calendar events
2. Store the Make.com API token in Supabase secrets as `MAKE_API_TOKEN`
3. The `calendar-sync` edge function pulls events into the Calendar block
4. Each event becomes a `data.type: "calendar_event"` record
Calendar event shape:
```json
{
"type": "calendar_event",
"title": "1:1 with CEO",
"start": "2026-02-26T14:00:00Z",
"end": "2026-02-26T14:30:00Z",
"attendees": ["CEO Name"],
"location": "Zoom",
"notes": "Prep: Review Q1 numbers"
}
```
---
## Step 9: Feature Pipelines
The Meeting Intelligence dashboard has a "Send To..." dropdown on each meeting card. This queues the meeting for processing by one of three feature pipelines:
| Pipeline | Block Type | What It Does |
|----------|-----------|--------------|
| Action Items | feed | Extracts all action items, creates standalone tracked items |
| Proposals | feed | Generates a client proposal from meeting context |
| Lead Magnets | feed | Converts meeting insights into content pieces |
Each pipeline item tracks status: `queued` โ `processing` โ `needs_input` โ `complete`
The Meeting Intel automation picks up queued items, processes them, and posts results back.
---
## Meeting Types (13 categories)
The frontend auto-classifies and color-codes meetings:
| Type | Color | Description |
|------|-------|-------------|
| 1-on-1 | #60a5fa | Two-person meetings |
| external | #a78bfa | Has non-company attendees |
| sales | #34d399 | Sales calls and demos |
| onboarding | #67e8f9 | New client/employee onboarding |
| content | #f472b6 | Content planning sessions |
| review | #fbbf24 | Code reviews, performance reviews |
| team | #fb923c | Internal team meetings |
| workshop | #f87171 | Training or workshop sessions |
| standup | #818cf8 | Daily standups |
| planning | #2dd4bf | Sprint or project planning |
| all-hands | #e879f9 | Company-wide meetings |
| interview | #a3e635 | Hiring interviews |
| group | #94a3b8 | Multi-person general meetings |
---
## Agent Workflows
**Morning prep:**
1. List today's calendar events
2. For each event, search past meetings with same attendees
3. Generate a prep brief with context from previous conversations
**Post-meeting update:**
1. Wait for Fathom webhook (auto-handled)
2. Update overview KPIs (total count, action items)
3. Alert owner if there are high-priority action items
**Weekly digest:**
1. List all meetings from the past 7 days
2. Summarize key decisions and open action items
3. Identify contacts you haven't met with recently
๐พ Lovable Prompt Lives in LiteKit
The Lovable prompt to build the Meeting Intelligence UI is included in the ClawBuddy LiteKit prompt as TAB 6. It builds as part of the full ClawBuddy app โ same design system, same glass-morphic theme. This page focuses on the backend setup and API reference.
🛠️ Starter vs Production
This prompt creates a V1 scaffold. Production requires wiring real data sources, QA passes, error handling, retry logic, and safety gates. Treat the output as a working prototype โ not a ship-ready system.