Skip to content

video-db/call.md

Repository files navigation

Electron Node React TypeScript License Stargazers Issues Website


Call.md Logo

Call.md

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


Demo

Sales-Copilot.mp4

Download

Currently available for macOS — Windows and Linux support coming soon


Installation (Pre-built App)

If you downloaded the pre-built app from the links above:

  1. Mount the DMG and drag Call.md to your Applications folder

  2. Remove quarantine attributes to allow the app to run:

    xattr -cr /Applications/Meeting\ Copilot.app
  3. Launch the app from Applications or Spotlight

  4. Grant system permissions when prompted (Microphone and Screen Recording are required)


Overview

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.

Features

Recording & Transcription

  • 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

AI Assistant

  • 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

Technical

  • 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

Architecture

Call.md Architecture

How the Copilot Works

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.

Tech Stack

  • 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)

Prerequisites

  • 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

Getting Started

  1. Clone the repository:

    git clone https://github.com/video-db/call-md.git
    cd call-md
  2. Install dependencies:

    npm install
  3. Rebuild native modules for Electron:

    npm run rebuild
  4. Start development mode:

    npm run dev
  5. Register with your VideoDB API key when the app opens

MCP Server Setup

Where to Configure

Open Settings → MCP Servers in the app.

How to Add a Server

  1. Click Add Server
  2. Choose transport:
    • stdio (local command-based MCP server)
    • http (remote MCP endpoint)
  3. Fill required fields (command/args/env or URL/headers)
  4. Save and click Connect

Triggering Behavior

  • 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.

Capabilities

  • 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

Development

Available Scripts

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

Project Structure

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

IPC API

The app exposes IPC APIs through the preload script:

  • window.electronAPI.mcp.* - MCP server and tool operations
  • window.electronAPI.mcpOn.* - MCP event subscriptions

Permissions (macOS)

The app requires the following permissions:

  • Microphone - For voice recording
  • Screen Recording - For screen capture

Grant these in System Preferences > Privacy & Security.

Troubleshooting

Recording not starting

  • 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 rebuild to rebuild native modules

Transcription not appearing

  • 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

Copilot features not updating

  • Verify that transcription is working first
  • Check that at least 2-3 transcript segments exist
  • Some features (cue cards, nudges) require specific conversation patterns

Build/Installation issues

  • Delete node_modules and 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/

Webhook delivery fails

  • Cloudflare tunnel auto-creates on recording start
  • Check internet connectivity
  • Restart the recording to reinitialize tunnel

Data Storage

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

Community & Support


Made with ❤️ by the VideoDB team


About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages