Skip to content

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

Β 

History

73 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MeetStream

MeetStream for Claude Code

The fastest way to build meeting intelligence - AI notetakers, real-time sales coaches, transcription pipelines, and Google Calendar–driven recording automation.

Plugin Version Live-Tested MIT License Get API Key


60-second quickstart

# 1. Install the plugin
claude plugin install meetstream-ai/meetstream

# 2. Set your API key (one-time)
export MEETSTREAM_API_KEY=ms_xxxxx

# 3. Verify your account is configured
claude "verify my meetstream account"

# 4. Build something
claude "build me an AI meeting notetaker that emails summaries"

That's it. Claude scaffolds a working FastAPI/Express app with the webhook handler, transcript fetch, LLM summary, and delivery layer wired up.


What you can build

The fastest path from idea to production for every meeting-intelligence use case:

Use case Try in Claude What you get
πŸŽ™οΈ AI Meeting Notetaker "build me an AI notetaker" Full webhook server + transcript fetch + GPT-4 summary + email delivery (Resend / SendGrid / SMTP)
🎯 Real-Time AI Sales Coach "build a real-time AI sales coach" Live transcription + objection detection + WebSocket push to seller's browser
πŸ“Š Conversation Intelligence Platform "build a conversation intelligence tool" Live + post-call transcripts + speaker analytics + searchable archive
πŸ“… Google Calendar Auto-Recording "auto-record every meeting on my Google Calendar" OAuth setup + /calendar/create_calendar + auto-schedule + recurring event handling + post-meeting delivery
πŸ” Scheduled / Recurring Meeting Bot "join every standup automatically" Calendar-driven, hands-free - bot joins 1 min before each meeting, recurring events auto-reschedule
πŸ€– AI Meeting Assistant (MIA) "build an AI agent that joins my meetings" MIA agent config (pipeline/realtime) + hosted bridge + voice/text interaction
πŸ“ž Customer Call Analyzer "analyze every sales call for insights" Transcript β†’ LLM extraction β†’ CRM auto-update β†’ trend dashboards
🌍 Multilingual Meeting Transcriber "transcribe Hindi/Tamil/Telugu meetings" Sarvam provider + Indic language config + translation
🎬 Compliance Meeting Recorder "record meetings with 90-day retention" Long-retention bot + per-participant audio + audit trail
πŸ“ Live Captions Service "build a live captions service" Streaming bot + caption broadcast UI + multilingual support
πŸŽ“ Interview Recorder "record + diarize interview meetings" Per-participant audio tracks + speaker labels + structured transcript

πŸš€ Copy-paste power prompts (build a full app in one shot)

Each of these is a complete, production-quality prompt. Paste any one into Claude Code and you'll get a working, end-to-end app - webhook server, MeetStream integration, AI processing, delivery layer, error handling, all wired up.

1️⃣ API-triggered AI notetaker with email delivery (one prompt)

Build me an API-triggered AI meeting notetaker in Python + FastAPI. Flow: my app POSTs {meeting_link, attendee_emails, triggered_by} to /meetings/start β†’ MeetStream bot joins β†’ meeting ends β†’ fetch transcript via the canonical bot_details.transcript_id flow β†’ generate a structured summary with GPT-4o (executive summary, key decisions, action items with owners, open questions) β†’ email the summary to all attendees + the trigger user via Resend with the transcript attached as transcript.txt. Use deepgram as the transcription provider. Include: idempotent webhook handler (dedupe on {bot_id, bot_event or event, timestamp}), Redis-backed dedup, graceful handling of transcription.failed (retry with a different provider via POST /bots/{id}/transcribe), .env config with .gitignore, README with ngrok setup, a requirements.txt, and a seed.py test script that triggers a sample meeting. Tag every bot with triggered_by in custom_attributes for correlation. Use the recommended automatic_leave defaults (600/600/600/14400/300).

2️⃣ Real-time AI sales coach with browser dashboard (one prompt)

Build me a real-time AI sales coaching tool in Python + FastAPI + vanilla JS. Flow: sales rep clicks "Start Coaching" in a web UI β†’ enters meeting link β†’ MeetStream bot joins with meetstream_streaming (no external provider key needed) + live_transcription_required.webhook_url β†’ live chunks stream to FastAPI β†’ debounced LLM (GPT-4o-mini) detects objections / buying signals / talk-time imbalance every end_of_turn=true β†’ push coach cards to the rep's browser via WebSocket β†’ render as colored cards (objection=red, signal=green, monologue=orange). Include: stateless transcript_id lookup via bot_details.transcript_id, XSS-safe rendering with textContent (not innerHTML), bot.error handling (surface as warning card), graceful WebSocket reconnect, and a "Stop Coaching" button that calls /bots/{id}/remove_bot. Provide a single-file coach.html UI plus the full backend.

3️⃣ Google Calendar auto-recording with summary delivery (one prompt)

Build me a Google Calendar auto-recording system on MeetStream in Python + FastAPI. Flow: connect my Google Calendar via OAuth (use the helper script in the calendar-automation skill) β†’ enable /calendar/auto-schedule/enable with a default_bot_config using deepgram β†’ MeetStream auto-joins every upcoming meeting 1 min before start β†’ webhook on transcription.processed β†’ fetch transcript via canonical bot_details.transcript_id flow β†’ generate AI summary β†’ email me via Resend AND save to Notion via the Notion API. Include: full OAuth helper script (with http://localhost:8080 redirect), connect.py (one-time call to /calendar/create_calendar with google_ prefixed fields), enable.py (auto-schedule), webhook.py (FastAPI server with idempotent handler), delivery.py (Resend + Notion clients), and a disable.sh script that uses DELETE /calendar/disconnect for safe cleanup. Handle recurring events by setting recurring_event: true so each occurrence reschedules automatically.

4️⃣ CRM auto-enricher (HubSpot) for sales calls (one prompt)

Build me a HubSpot CRM auto-enricher in Node.js + Express + TypeScript. Flow: every sales call recorded via MeetStream β†’ on transcription.processed webhook β†’ fetch transcript via canonical bot_details.transcript_id flow β†’ run two LLM extractions in parallel (Claude 3.5 Sonnet): (a) extract action items with owners, (b) extract competitor mentions / pricing objections / next-step commitments β†’ upsert a HubSpot "Meeting Activity" record with the summary + action items β†’ if the meeting was on a known deal record (correlated via custom_attributes.deal_id), update the deal's next_step and last_meeting_summary properties. Include: idempotent webhook handler with dedup, retry-on-429 for HubSpot writes, structured error logging, env-based config, .env.example, README, and a seed.ts script that creates a test bot tagged with a test deal_id to verify the whole pipeline end-to-end.

5️⃣ Interview recorder with per-participant audio for HR/recruiting (one prompt)

Build me an interview recorder for a recruiting SaaS in Python + Django. Flow: recruiter creates an interview record in our Django app with candidate_email, interviewer_emails, meeting_link, position_id β†’ on save, send a MeetStream bot with audio_separate_streams: true (per-participant audio for clean candidate-only transcripts later) + deepgram post-call provider + custom_attributes.interview_id={record.pk} β†’ on bot.done, fetch the per-participant audio streams via /bots/{id}/get_audio_streams (10-min URLs - download immediately to S3) + fetch the full transcript via canonical flow β†’ generate a structured interview report (candidate strengths/concerns/skills mentioned/red flags) using Claude 3.5 Sonnet β†’ save report + audio S3 URLs to a InterviewRecording model β†’ email the recruiter when complete. Include: Django models, signal handlers, Celery tasks for the long-running download/processing work, and explicit handling of the 10-minute URL TTL (always re-fetch on access, never store the URLs).

6️⃣ Multi-tenant notetaker SaaS - each user connects their own calendar (one prompt)

Build me a multi-tenant notetaker SaaS in Next.js 14 (App Router) + Postgres + Prisma. Flow: user signs up β†’ connects their own Google Calendar via per-user OAuth (each user has their own refresh token, all stored encrypted in Postgres) β†’ my app calls /calendar/create_calendar with that user's credentials β†’ enable auto-scheduling β†’ webhooks fire for every meeting β†’ I fetch transcript via canonical flow β†’ AI summary β†’ email to that specific user via Resend. Include: full Next.js App Router setup, Prisma schema for User, CalendarConnection, Meeting, Summary, Google OAuth route handlers, encrypted secret storage helper using AWS KMS (or local sealedbox for dev), one webhook endpoint that routes by custom_attributes.tenant_id, idempotent processing with Postgres-backed dedup table, billing-ready Stripe Checkout integration (free tier: 10 meetings/mo, pro: $20/mo unlimited), and a clean React dashboard showing the user's last 10 summarized meetings.

7️⃣ Compliance meeting recorder with 90-day retention + audit log (one prompt)

Build me a compliance-grade meeting recorder for regulated industries (healthcare/legal/finance) in Python + FastAPI. Flow: every recorded meeting MUST have recording_config.retention.hours: 2160 (90 days), audio_separate_streams: true (for legal evidentiary separation), explicit consent flag in custom_attributes.consent_obtained_at (ISO timestamp + obtained_by user_id) β†’ on bot.inmeeting webhook, write an audit log entry to an append-only Postgres audit_log table (never UPDATE, only INSERT) β†’ on bot.stopped, mark the session complete β†’ on transcription.processed, fetch + encrypt the transcript at rest (AES-256-GCM with KMS-managed keys) before storing β†’ on data_deletion webhook, write a deletion audit entry. Include: full SQLAlchemy models, KMS encryption helpers, a /audit/{meeting_id} admin endpoint that returns the full timeline of bot status + processing + delete events, IP allowlist middleware for admin routes, structured JSON logging compatible with Datadog/Splunk, and a README section documenting the compliance posture for legal/security review.

8️⃣ AI Meeting Assistant (MIA) - voice-interactive bot that participates in the meeting (one prompt)

Build me a voice-interactive AI assistant that joins meetings and participates conversationally. Use MeetStream's MIA (Meeting Infrastructure Agent). Flow: I run a script to create a pipeline-mode MIA agent config via POST /api/v1/mia (OpenAI gpt-4.1 LLM + ElevenLabs voice + Deepgram nova-3 streaming transcriber + first_message: "Hi everyone, I'm Acme AI joining to help with this meeting. Just say 'Hey Acme' to address me.") β†’ save the returned agent_config_id β†’ my Next.js dashboard has a "Send AI to Meeting" button that creates a bot by passing just the agent_config_id (MeetStream hosts the agent bridge) β†’ wake word ["hey acme"] with 30s timeout β†’ the agent responds to questions, takes notes when asked, summarizes on demand β†’ post-meeting summary delivered via email. Include: the agent-config creation script, the bot-creation handler, a webhook server that catches bot.error (streaming-provider auth issue β†’ surface to user, don't fail silently), and a settings UI to edit the agent's system prompt without redeploying.

9️⃣ Live captions service for accessibility (one prompt)

Build me a real-time live captions broadcaster for accessibility (hearing-impaired users) in Python + FastAPI + Server-Sent Events. Flow: meeting organizer triggers POST /captions/start with a meeting link β†’ MeetStream bot joins with meetstream_streaming + live_transcription_required.webhook_url β†’ live chunks POSTed to my server β†’ I rebroadcast via SSE to any connected client at GET /captions/{session_id} β†’ clients render large, readable captions in their browser with speaker names and a scrolling history. Include: SSE handler that broadcasts to all connected clients per session, a clean accessibility-friendly HTML page (high-contrast, large font, ARIA labels), graceful disconnect handling, automatic 5-minute idle cleanup, and a nginx.conf snippet showing how to proxy SSE with proper buffering settings. No LLM processing - captions are passthrough only, raw transcript chunks rendered live.

πŸ”Ÿ Customer call analyzer with weekly insights dashboard (one prompt)

Build me a customer call analyzer + insights dashboard in Python + FastAPI + Postgres + React. Flow: every customer call recorded via MeetStream (tagged with custom_attributes.customer_id, custom_attributes.call_type in {discovery, demo, follow-up, churn}) β†’ on transcription.processed β†’ fetch transcript β†’ extract structured insights with Claude (sentiment, top topics, pricing objections mentioned, feature requests, competitive mentions, customer health signals like {happy, frustrated, churning}) β†’ store in Postgres with proper indexing β†’ React dashboard shows: per-customer call history, week-over-week sentiment trend, top 10 feature requests across all customers, churn risk leaderboard, competitor mention frequency. Include: full Postgres schema, indexes optimized for the dashboard queries, daily aggregation cron, React + Tanstack Query dashboard, role-based access (sales reps see their own customers, managers see all), and CSV export for any view.


πŸ’‘ First time? Each of these power prompts assumes you have a MeetStream API key set. If you don't, run "set up MeetStream" first - it walks you through signup at https://app.meetstream.ai and key creation in 60 seconds.


Why this plugin

Most API plugins This plugin
Endpoint correctness ❌ Common hallucinations (wrong paths, wrong fields) βœ… Every endpoint live-tested against api.meetstream.ai
Webhook lifecycle ❌ Generic claims ("you'll get an event") βœ… All 12 events documented with full payloads, status codes, two-path semantics
Provider failure modes ❌ Vague "configure your API key" βœ… Live-captured error messages + exact fix for each
Use cases ❌ Read the docs, write your own glue βœ… Verb-named skills scaffold the whole app (notetaker, sales-coach, etc.)
Account health check ❌ None βœ… verify-account skill probes every provider before you start
Subagent for failures ❌ None βœ… meetstream-debugger triages bot failures without flooding main context

What's inside

skills/
β”œβ”€β”€ meetstream/             ← Core skill: API reference, lifecycle, decision tree
β”œβ”€β”€ notetaker/              ← Scaffold a complete AI meeting notetaker
β”œβ”€β”€ sales-coach/            ← Scaffold a real-time AI sales coach with browser UI
β”œβ”€β”€ calendar-automation/    ← Google Calendar OAuth + auto-record every meeting
β”œβ”€β”€ verify-account/         ← Probe which providers are configured in your account
└── test-bot/               ← Send a test bot + watch webhooks live

agents/
└── meetstream-debugger     ← Subagent for diagnosing bot failures

Live-tested correctness

Every endpoint, field name, response shape, and webhook event in this plugin has been verified by sending real bots to a real Google Meet and capturing real API responses. No hallucinations.

Specifically verified live:

  • βœ… create_bot returns HTTP 201 Created
  • βœ… bot_details.transcript_id is the canonical stateless fetch path (not in any webhook payload)
  • βœ… Streaming providers produce no post-call transcription.processed event - lifecycle ends at audio.processed
  • βœ… bot.error fires mid-meeting for streaming-provider auth issues (bot keeps recording)
  • βœ… recording_permission_denied_timeout range is 60–300 seconds
  • βœ… in_call_recording_timeout minimum is 600 seconds
  • βœ… POST /bots/{id}/transcribe overwrites bot_details.transcript_id and fires exactly one webhook (no bot.done follow-up)

Installation

Claude Code (CLI)

# Add the marketplace + install
/plugin marketplace add meetstream-ai/claude-plugin
/plugin install meetstream@meetstream-ai

Then in any project:

"verify my meetstream account"
"build me an AI meeting notetaker"
"build a real-time AI sales coach"
"set up Google Calendar auto-recording for my meetings"
"connect Google Calendar to MeetStream"

Cursor / Windsurf / VS Code (Claude extension)

Settings β†’ Plugins β†’ Add marketplace meetstream-ai/claude-plugin β†’ Install meetstream β†’ Reload.

Update to the latest version

claude plugin update meetstream-ai/meetstream

Configuration

Set once in your shell:

export MEETSTREAM_API_KEY=ms_xxxxx   # get one at https://app.meetstream.ai/api-keys

Optional for local webhook development:

export PUBLIC_URL=https://your-ngrok-url.ngrok-free.app

Supported meeting platforms

Platform Setup Live video Per-participant audio
Google Meet None βœ… βœ…
Microsoft Teams None βœ… ❌
Zoom Zoom app required ❌ βœ…

The canonical post-call transcript flow

create_bot (with post-call provider + callback_url)
  ↓
bot.joining β†’ bot.inmeeting β†’ bot.recording
  ↓
[meeting runs]
  ↓
bot.leaving β†’ bot.stopped β†’ manifest.completed β†’ audio.processed
  ↓
transcription.processed ← webhook fires when transcript is ready
  ↓
GET /bots/{bot_id}/detail β†’ read bot_details.transcript_id
  ↓
GET /transcript/{transcript_id}/get_transcript β†’ top-level array of segments
  ↓
bot.done ← terminal event

The plugin's skills walk you through every variant of this flow (live, post-call, hybrid, MIA agent, calendar auto-scheduled) with complete code.


Links


Built by MeetStream Β· Made for Claude Code

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors