The fastest way to build meeting intelligence - AI notetakers, real-time sales coaches, transcription pipelines, and Google Calendarβdriven recording automation.
# 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.
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 |
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.
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 canonicalbot_details.transcript_idflow β 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 astranscript.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 oftranscription.failed(retry with a different provider viaPOST /bots/{id}/transcribe),.envconfig with.gitignore, README withngroksetup, arequirements.txt, and aseed.pytest script that triggers a sample meeting. Tag every bot withtriggered_byincustom_attributesfor correlation. Use the recommendedautomatic_leavedefaults (600/600/600/14400/300).
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 everyend_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 viabot_details.transcript_id, XSS-safe rendering withtextContent(notinnerHTML),bot.errorhandling (surface as warning card), graceful WebSocket reconnect, and a "Stop Coaching" button that calls/bots/{id}/remove_bot. Provide a single-filecoach.htmlUI plus the full backend.
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-automationskill) β enable/calendar/auto-schedule/enablewith a default_bot_config using deepgram β MeetStream auto-joins every upcoming meeting 1 min before start β webhook ontranscription.processedβ fetch transcript via canonicalbot_details.transcript_idflow β generate AI summary β email me via Resend AND save to Notion via the Notion API. Include: full OAuth helper script (withhttp://localhost:8080redirect),connect.py(one-time call to/calendar/create_calendarwithgoogle_prefixed fields),enable.py(auto-schedule),webhook.py(FastAPI server with idempotent handler),delivery.py(Resend + Notion clients), and adisable.shscript that usesDELETE /calendar/disconnectfor safe cleanup. Handle recurring events by settingrecurring_event: trueso each occurrence reschedules automatically.
Build me a HubSpot CRM auto-enricher in Node.js + Express + TypeScript. Flow: every sales call recorded via MeetStream β on
transcription.processedwebhook β fetch transcript via canonicalbot_details.transcript_idflow β 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 viacustom_attributes.deal_id), update the deal'snext_stepandlast_meeting_summaryproperties. Include: idempotent webhook handler with dedup, retry-on-429 for HubSpot writes, structured error logging, env-based config,.env.example, README, and aseed.tsscript that creates a test bot tagged with a testdeal_idto verify the whole pipeline end-to-end.
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 withaudio_separate_streams: true(per-participant audio for clean candidate-only transcripts later) + deepgram post-call provider +custom_attributes.interview_id={record.pk}β onbot.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 aInterviewRecordingmodel β 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).
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_calendarwith 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 forUser,CalendarConnection,Meeting,Summary, Google OAuth route handlers, encrypted secret storage helper using AWS KMS (or local sealedbox for dev), one webhook endpoint that routes bycustom_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.
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 incustom_attributes.consent_obtained_at(ISO timestamp + obtained_by user_id) β onbot.inmeetingwebhook, write an audit log entry to an append-only Postgresaudit_logtable (never UPDATE, only INSERT) β onbot.stopped, mark the session complete β ontranscription.processed, fetch + encrypt the transcript at rest (AES-256-GCM with KMS-managed keys) before storing β ondata_deletionwebhook, 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 returnedagent_config_idβ my Next.js dashboard has a "Send AI to Meeting" button that creates a bot by passing just theagent_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 catchesbot.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.
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/startwith a meeting link β MeetStream bot joins withmeetstream_streaming+live_transcription_required.webhook_urlβ live chunks POSTed to my server β I rebroadcast via SSE to any connected client atGET /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 anginx.confsnippet showing how to proxy SSE with proper buffering settings. No LLM processing - captions are passthrough only, raw transcript chunks rendered live.
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_typein {discovery, demo, follow-up, churn}) β ontranscription.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.
| 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 |
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
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_botreturns HTTP 201 Created - β
bot_details.transcript_idis the canonical stateless fetch path (not in any webhook payload) - β
Streaming providers produce no post-call
transcription.processedevent - lifecycle ends ataudio.processed - β
bot.errorfires mid-meeting for streaming-provider auth issues (bot keeps recording) - β
recording_permission_denied_timeoutrange is 60β300 seconds - β
in_call_recording_timeoutminimum is 600 seconds - β
POST /bots/{id}/transcribeoverwritesbot_details.transcript_idand fires exactly one webhook (nobot.donefollow-up)
# Add the marketplace + install
/plugin marketplace add meetstream-ai/claude-plugin
/plugin install meetstream@meetstream-aiThen 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"
Settings β Plugins β Add marketplace meetstream-ai/claude-plugin β Install meetstream β Reload.
claude plugin update meetstream-ai/meetstreamSet once in your shell:
export MEETSTREAM_API_KEY=ms_xxxxx # get one at https://app.meetstream.ai/api-keysOptional for local webhook development:
export PUBLIC_URL=https://your-ngrok-url.ngrok-free.app| Platform | Setup | Live video | Per-participant audio |
|---|---|---|---|
| Google Meet | None | β | β |
| Microsoft Teams | None | β | β |
| Zoom | Zoom app required | β | β |
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.
- π meetstream.ai - product
- π docs.meetstream.ai - full API reference
- ποΈ app.meetstream.ai - dashboard + API keys
- π github.com/meetstream-ai/claude-plugin - this repo
- π¬ hello@meetstream.ai - support
Built by MeetStream Β· Made for Claude Code