Skip to content

pspesivt/bobiq-ce

Repository files navigation

Schrodinger

Multi-tenant meeting recording platform: CLI + MCP server + Cloud Functions.

What It Does

  • Record meetings via Recall.ai bots (Zoom, Meet, Teams)
  • Transcribe recordings with Google Speech-to-Text v2 (speaker diarization)
  • Generate AI meeting notes using Gemini with hybrid RAG context from previous meetings
  • Query meetings via natural language through MCP tools or CLI — adaptive depth, multi-turn conversations

Architecture

shrod CLI ──────────────┐
MCP server (18 tools) ──┤──▶ GCS (multi-tenant storage)
Cloud Functions ────────┘      │
  │                            ├── recordings/YYYY/MM/DD/
  │                            ├── embeddings index
  │                            ├── knowledge base
  ▼                            └── conversations
Recall.ai ◀──▶ Webhook pipeline
  • CLI (shrod) — 9 commands for bot management, transcription, notes, import
  • MCP server — 18 tools, stdio (dev) and HTTP/Cloud Run (production) transports
  • Cloud Functions — webhook-driven automation pipeline
  • Storage — GCS with per-tenant isolation
  • AI — Gemini for transcription formatting, notes generation, RAG, and Q&A

CLI Commands

Command Description
shrod send <url> Send a recording bot to a meeting
shrod download Download all Recall.ai recordings to GCS
shrod transcribe Trigger STT v2 transcription for recordings
shrod format Format transcript JSON to readable text with Gemini
shrod notes [path] Generate AI meeting notes (single or --backfill all)
shrod delete <path...> Delete recordings from GCS and embeddings index
shrod reindex Rebuild embeddings index, backfill topics into frontmatter
shrod bot-config <file> Update bot configuration in GCS
shrod import-fireflies Batch import meetings from Fireflies.ai

All commands support --tenant <id>, --dry-run, --verbose, and --json where applicable. Default tenant is myco.

MCP Server

18 tools accessible from Claude Desktop, Claude Code, Cursor, or any MCP client.

Tools: list_recordings, get_transcript, get_metadata, get_download_url, create_upload_url, process_upload, generate_notes, list_knowledge_base, get_knowledge_base_doc, add_knowledge_base_doc, remove_knowledge_base_doc, ingest_knowledge_base, import_recording, list_protocols, ask, list_conversations, get_conversation, update_bot_image

Local dev (stdio):

npm run mcp

Deploy to Cloud Run:

bash scripts/deploy-mcp.sh

Client config (HTTP mode):

{
  "mcpServers": {
    "schrodinger": {
      "type": "streamable-http",
      "url": "https://schrodinger-mcp-xxxxx.run.app/mcp",
      "headers": { "Authorization": "Bearer sk_tenant_..." }
    }
  }
}

In stdio mode, pass tenant as a tool parameter. In HTTP mode, tenant is derived from the API key.

Cloud Functions

Function Trigger Purpose
handleRecallWebhook HTTP Recall.ai webhook — triggers download + transcription pipeline
handleCalendarOAuth HTTP Google OAuth callback for Calendar V2 integration
processNewRecordings Cloud Scheduler (4h) Catch missed recordings
generateNotesOnTranscript Eventarc (GCS finalize) Auto-generate notes when transcript.txt lands

Setup

npm install
npm link

Environment Variables

Variable Required Purpose
RECALL_API_KEY CLI/Functions Recall.ai API key
GCS_BUCKET_NAME All GCS bucket name
GCP_PROJECT STT/Functions GCP project ID
GEMINI_API_KEY Formatting/Notes Gemini API key
GCS_CREDENTIALS_FILE No Path to service account JSON
MCP_TRANSPORT No http for Cloud Run (default: stdio)

See docs/ for detailed setup guides.

Project Structure

src/
  index.js                  CLI entrypoint (CJS)
  core/
    bot-config.mjs          Bot config CRUD (GCS-first, filesystem fallback)
    chat.mjs                Meeting Q&A with adaptive depth + multi-turn
    notes.mjs               Notes generation pipeline (shared by MCP + CLI)
    protocols.mjs           Protocol loader + template renderer (GCS-backed)
    rag.mjs                 RAG: indexing, retrieval, knowledge base
    reindex.mjs             Rebuild embeddings index + backfill topics
    stt.mjs                 Google STT v2 BatchRecognize
    import.mjs              Import recordings from external sources
  mcp/
    server.mjs              MCP server (18 tools, dual stdio/HTTP transport)
  transcript/
    recall-downloader.js    Download recordings from Recall.ai to GCS
    transcript-formatter.js Format transcript JSON with Gemini
  utils/
    config.js               Environment config, tenant registry
    gcs.js                  GCS client factory
    embeddings.js           Embedding generation, similarity scoring
  commands/                 CLI command implementations
assets/
  protocols/                Meeting notes protocol templates
  tenants.example.json      Tenant registry seed template
functions/
  index.js                  Cloud Functions (webhook, OAuth, scheduler, notes trigger)
scripts/                    Deploy, infra, migration scripts
docs/                       Documentation

Documentation

License

MIT

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors