Real-time AI meeting assistant with live transcription, sentiment analysis, cue cards, and post-meeting summaries — powered by VideoDB.
Explore the docs »
View Demo
·
Download
·
Report Bug
Sales-Copilot.mp4
- Apple Silicon: sales-copilot-1.0.0-arm64.dmg
- Apple Intel: sales-copilot-1.0.0.dmg
Currently available for macOS — Windows and Linux support coming soon
If you downloaded the pre-built app from the links above:
-
Mount the DMG and drag Call.md to your Applications folder
-
Remove quarantine attributes to allow the app to run:
xattr -cr /Applications/Meeting\ Copilot.app -
Launch the app from Applications or Spotlight
-
Grant system permissions when prompted (Microphone and Screen Recording are required)
Call.md records your meetings and provides real-time insights while you talk. It captures screen, microphone, and system audio through VideoDB's capture SDK, runs dual-channel transcription (your mic vs. other participants' system audio), and feeds the conversation into a parallel analysis pipeline that produces sentiment scores, cue cards, nudges, talk ratio monitoring, and playbook tracking — all updated live during the meeting. When the meeting ends, it generates a structured summary with action items, objections, and risk assessment.
- Screen & Audio Recording - Capture screen, microphone, and system audio simultaneously
- Real-time Transcription - Live speech-to-text powered by VideoDB
- Recording History - Browse and review past recordings with full transcripts
- Cue Cards - Context-aware prompts and talking points based on conversation
- Sentiment Analysis - Track participant sentiment throughout the meeting
- Conversation Metrics - Monitor talk ratio, speaking pace, questions asked, and more
- Playbook Tracking - Ensure you cover all discussion items with progress tracking
- Nudges - Timely reminders based on conversation context (e.g., "You haven't covered budget")
- Meeting Summary - AI-generated summary with key points, action items, objections, and risks
- Bookmarking - Mark important moments during meetings for easy reference
- MCP Agent Support - Connect MCP servers and let the app auto-trigger tool calls from conversation context
- MCP Result Cards - Inline tool outputs (including links) shown live during meetings
- Modern UI - Built with React, Tailwind CSS, and shadcn/ui
- Type-safe API - End-to-end type safety with tRPC
- Local Database - SQLite with Drizzle ORM for offline-first storage
- Secure Webhooks - Cloudflare tunnel for receiving real-time transcription events
The copilot pipeline processes conversation in real-time through several parallel analyzers:
- Dual-channel transcription — Mic is labeled as "you", system audio as other participants. This separation powers all downstream analysis.
- Sentiment analysis — Tracks participant sentiment using pattern-based detection and optional LLM analysis. Sentiment is scored per transcript segment and trended over time.
- Talk ratio monitoring — Calculates the balance between your speaking time and others. Alerts when ratio drifts outside the ideal 40-60% range.
- Cue card engine — Detects objection types (pricing, competition, timing, authority) from participant speech and surfaces matching response suggestions in real-time.
- Nudge engine — Generates contextual alerts: monologue warnings when you've been talking too long, sentiment dip alerts when participant tone drops, and ratio alerts when conversation is one-sided.
- Playbook tracker — Tracks which discussion items from your playbook have been covered, showing completion percentage and highlighting gaps.
- Post-meeting summary — When the meeting ends, runs parallel extraction of action items, objections raised, competitive mentions, risks identified, and next steps.
- Electron 34 - Desktop application shell
- TypeScript 5.8 - Full type coverage
- React 19 - Modern UI framework
- Tailwind CSS - Utility-first styling with Geist font
- shadcn/ui - High-quality component primitives
- tRPC 11 - Type-safe API layer
- Hono - Fast HTTP server for webhooks
- Drizzle ORM - Type-safe database operations
- Zustand - Lightweight state management
- Vite - Fast frontend bundling
- VideoDB SDK - Screen recording and transcription (includes OpenAI-compatible API for LLM calls)
- Operating System: macOS 12+ (for screen recording features)
- Node.js: 18 or higher
- npm: 10 or higher
- VideoDB API Key: Sign up at console.videodb.io
-
Clone the repository:
git clone https://github.com/video-db/call-md.git cd call-md -
Install dependencies:
npm install
-
Rebuild native modules for Electron:
npm run rebuild
-
Start development mode:
npm run dev
-
Register with your VideoDB API key when the app opens
Open Settings → MCP Servers in the app.
- Click Add Server
- Choose transport:
- stdio (local command-based MCP server)
- http (remote MCP endpoint)
- Fill required fields (command/args/env or URL/headers)
- Save and click Connect
- MCP agent runs automatically during active meetings when trigger keywords are detected in transcript context.
- You can customize trigger keywords from the MCP settings panel.
- Tool outputs appear in the MCP Results panel during the call.
- Multiple MCP server connections
- Aggregated tool discovery across connected servers
- Auto-triggered tool execution from call context
- Live MCP result rendering (cards, markdown, links, structured fields)
- Result actions like pin/dismiss while in-meeting
| Command | Description |
|---|---|
npm run dev |
Start development mode (main + renderer) |
npm run build |
Build for production |
npm run typecheck |
Run TypeScript type checking |
npm run lint |
Run ESLint |
npm run rebuild |
Rebuild native modules for Electron |
npm run db:generate |
Generate database migration files |
npm run db:migrate |
Apply database migrations |
src/
├── main/ # Electron Main Process
│ ├── db/ # Database layer (Drizzle + SQLite)
│ ├── ipc/ # IPC handlers
│ ├── lib/ # Utilities (logger, paths, permissions)
│ ├── server/ # HTTP server (Hono + tRPC)
│ │ ├── routes/ # Webhook routes
│ │ └── trpc/ # tRPC router and procedures
│ └── services/ # Business logic
│ ├── copilot/ # AI copilot services
│ │ ├── context-manager.service.ts
│ │ ├── conversation-metrics.service.ts
│ │ ├── cue-card-engine.service.ts
│ │ ├── nudge-engine.service.ts
│ │ ├── playbook-tracker.service.ts
│ │ ├── sales-copilot.service.ts
│ │ ├── sentiment-analyzer.service.ts
│ │ ├── summary-generator.service.ts
│ │ └── transcript-buffer.service.ts
│ ├── mcp/ # MCP orchestration and tool execution services
│ ├── llm.service.ts
│ ├── tunnel.service.ts
│ └── videodb.service.ts
├── preload/ # Preload scripts (IPC bridge)
├── renderer/ # React Frontend
│ ├── api/ # tRPC client
│ ├── components/ # UI components
│ │ ├── auth/ # Authentication modal
│ │ ├── copilot/ # Copilot UI components
│ │ ├── history/ # Recording history views
│ │ ├── layout/ # App layout (sidebar, titlebar)
│ │ ├── mcp/ # MCP results/status components
│ │ ├── recording/ # Recording controls
│ │ ├── settings/ # Settings editors
│ │ ├── transcription/ # Live transcription panel
│ │ └── ui/ # shadcn/ui components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utilities
│ └── stores/ # Zustand state stores (session, copilot, mcp)
└── shared/ # Shared types & schemas
├── schemas/ # Zod validation schemas
└── types/ # TypeScript types
The app exposes IPC APIs through the preload script:
window.electronAPI.mcp.*- MCP server and tool operationswindow.electronAPI.mcpOn.*- MCP event subscriptions
The app requires the following permissions:
- Microphone - For voice recording
- Screen Recording - For screen capture
Grant these in System Preferences > Privacy & Security.
- Verify VideoDB API key is registered (enter via registration modal on first launch)
- Check microphone and screen recording permissions in System Settings
- Try
npm run rebuildto rebuild native modules
- Ensure both mic and system audio are enabled in recording settings
- Check that the Cloudflare tunnel is active (shown in recording status)
- Wait 5-10 seconds for first transcripts to appear
- Verify that transcription is working first
- Check that at least 2-3 transcript segments exist
- Some features (cue cards, nudges) require specific conversation patterns
- Delete
node_modulesand reinstall:rm -rf node_modules && npm install - Rebuild native modules:
npm run rebuild - Check Node.js version:
node --version(requires 18+) - Review logs in
~/Library/Application Support/call-md/logs/
- Cloudflare tunnel auto-creates on recording start
- Check internet connectivity
- Restart the recording to reinitialize tunnel
Application data is stored in:
~/Library/Application Support/call-md/
├── data/
│ └── call-md.db # SQLite database
└── logs/
└── app-YYYY-MM-DD.log # Daily log files
- Docs: docs.videodb.io
- Issues: GitHub Issues
- Discord: Join community
- Console: Get API key
Made with ❤️ by the VideoDB team
