CallLens
CallLens
LangGraph を活用したオープンソースの会話インテリジェンス&行動評価ツール。
通話をアップロードするだけで、CallLens が文字起こし、会話の再構築、決定的なコミュニケーションメトリクスの計測、設定可能なルーブリックに基づく意味的行動の評価、裏付けとなるエビデンスの検証を行い、説明可能な会話インテリジェンスを生成します。
CallLens は、生の会話(録音または文字起こし)を構造化された、エビデンスに裏付けられた行動インテリジェンスに変換します。話者分離された文字起こし、発話時間とペースのメトリクス、長期的なセンチメント、トピック、機会・リスクの検出、担当者別の分析など、すべて宣言的でバージョン管理されたルーブリックに基づいてスコアリングされます。
すべての意味的スコアはエビデンスに裏付けられています。 単なる Discovery: 8/10 ではありません。代わりに:
Discovery: 8.7/10
Confidence: 0.91
Evidence:
04:32 Representative asks customer about their current operational bottleneck.
05:17 Representative asks about business impact.
07:02 Customer explains delivery delays.
Missing behavior:
Representative never established urgency or implementation timeframe.ユーザーがタイムスタンプをクリックすると、オーディオプレーヤーがその正確な瞬間にジャンプします。
存在理由
ほとんどの通話スコアリングツールは、(a) トランスクリプト全体を LLM に送信して数値を要求するか、(b) キーワードをカウントするかのどちらかです。CallLens はどちらも行いません:
多段階スコアリング — 候補エビデンス抽出 → 決定的検証 → ルーブリックスコアリング → 整合性チェック → 信頼度ゲート → 制限付き再判定。単一の「このトランスクリプトをスコアリングして」というプロンプトは一切ありません。
可能な限り決定的、必要な場合のみ意味的 — 発話時間、wpm、割り込み、ターン、沈黙は純粋な Python で処理。LLM は推論(センチメント、トピック、意図、行動、コーチング)にのみ使用されます。
プロバイダー分離 — 音声抽象化レイヤー(現在は ElevenLabs)と LLM 抽象化レイヤー(OpenAI / Anthropic / OpenAI 互換の任意のエンドポイント)により、特定のベンダーに固定されることはありません。
設計による監査可能性 — すべての分析で、モデル、プロンプト、ルーブリック、パイプラインのバージョンが記録されます。
Related MCP server: sales-chat-quality
アーキテクチャ
flowchart TD
A[Audio / Transcript] --> B[Ingestion]
B --> C[ElevenLabs STT + Diarization]
C --> D[Transcript Normalization]
D --> E[LangGraph]
E --> F[Deterministic Metrics]
E --> G[Semantic Analysis]
G --> H[Sentiment]
G --> I[Topics]
G --> J[Intents]
F --> K[Evidence Verification]
H --> K
I --> K
J --> K
K --> L[Confidence Gate]
L -->|sufficient| M[Report]
L -->|insufficient| N[Bounded Re-score]
N --> Kdocs/ARCHITECTURE.md、docs/LANGGRAPH.md、docs/DATA_MODEL.md を参照してください。
クイックスタート
Docker(推奨)
cp .env.example .env
docker compose upAPI + OpenAPI ドキュメント: http://localhost:8000/docs
ダッシュボード: http://localhost:3000
試すのに API キーは不要です。ELEVENLABS_API_KEY がない場合、音声プロバイダーと推論 LLM は決定的なオフラインモックにフォールバックするため、完全なパイプライン(文字起こし → メトリクス → エビデンスに裏付けられたルーブリックスコアリング → コーチング)がエンドツーエンドで実行されます。
ローカル(Python)
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
# Analyze a transcript (offline, deterministic)
calllens analyze sample.txt
# Start the API server
calllens server
# Run the evaluation harness
calllens eval runフロントエンド
cd apps/web
npm install
NEXT_PUBLIC_API_URL=http://localhost:8000 npm run devCLI
calllens analyze call.mp3
calllens analyze call.mp3 --rubric consultative_sales --output report.json
calllens rubric list
calllens rubric validate ./my_rubric.yaml
calllens eval run
calllens serverPython SDK
import asyncio
from calllens import CallLens
async def main():
async with CallLens(base_url="http://localhost:8000") as client:
call = await client.calls.upload("sales-call.mp3")
await call.analyze(rubric="consultative_sales")
report = await call.report()
print(report["overall_score"], report["confidence"])
asyncio.run(main())REST API(サブセット)
POST /api/v1/calls upload a recording or transcript
GET /api/v1/calls
GET /api/v1/calls/{id}
POST /api/v1/calls/{id}/analyze
GET /api/v1/calls/{id}/analysis the evidence-backed CallReport
GET /api/v1/calls/{id}/transcript
DELETE /api/v1/calls/{id} privacy/retention deletion
POST /api/v1/rubrics register a declarative rubric
GET /api/v1/rubrics
POST /api/v1/rubrics/validate
GET /api/v1/reps/{id}/analytics
POST /api/v1/evals/run対話型ドキュメントは /docs にあります。
ルーブリック
ルーブリックは宣言的でバージョン管理された YAML ドキュメントです。エンジン自体は汎用的で、セールスは最初にバンドルされたルーブリックにすぎません。カスタマーサポート、採用、債権回収、保険、不動産、カスタマーサクセス、面接、AI 音声エージェントなど、独自のルーブリックを持ち込むことができます。
name: consultative_sales
version: "1.0"
dimensions:
rapport:
label: Rapport
weight: 0.08
discovery:
label: Problem Discovery
weight: 0.16ディメンションの重みは合計で 1.0 になる必要があります。rubrics/ と docs/custom-rubrics を参照してください。
プロバイダー
レイヤー | プロバイダー | 設定 |
音声(STT/TTS) | ElevenLabs Scribe v2 |
|
推論 LLM | OpenAI |
|
推論 LLM | Anthropic |
|
推論 LLM | OpenAI 互換の任意のエンドポイント |
|
推論 LLM | オフラインモック(デフォルト) |
|
すべてのテストと CI はモックに対して実行されます — 有料の API 呼び出しはありません。
例: 実際のプロバイダーによるライブ分析
.env に両方のプロバイダーを設定し、実際の録音を分析します:
# .env — speech + reasoning
ELEVENLABS_API_KEY=sk_...
ELEVENLABS_STT_MODEL=scribe_v2
# Any OpenAI-compatible endpoint, e.g. Melious (https://api.melious.ai/v1)
LLM_PROVIDER=compatible
COMPATIBLE_BASE_URL=https://api.melious.ai/v1
COMPATIBLE_API_KEY=sk-mel-...
LLM_MODEL=gpt-oss-120b次に、録音に対して完全なパイプラインを実行します。事前に録音された通話ファイル(MP3/WAV)である必要がありますが、手元に録音がない場合は合成することもできます:
# Option A — you have a recording: transcribe + analyze it live
# (Scribe v2 STT → metrics → evidence-backed scoring → coaching)
calllens analyze call.mp3 --rubric consultative_sales --output report.json
# Option B — no recording? Synthesize a two-speaker sample call with ElevenLabs TTS
python examples/generate_sample_call.py # → sample_call.mp3
calllens analyze sample_call.mp3 --rubric consultative_sales --output report.json
# Both write the evidence-backed report (scores + timestamped evidence + coaching)
# to report.json; omit --output to print it to stdout.
compatibleエンドポイントは OpenAI JSON スキーマの構造化出力 (response_format: {type: "json_schema"}) をサポートしている必要があります。パイプラインのstructured_completionはこれに依存しています。すべてのゲートウェイのすべてのモデルが対応しているわけではありません。例えば、Melious 上のgpt-oss-120bは 動作しますが、他のいくつか(Melious 上の GLM、Kimi、DeepSeek v4)は スキーマモードを拒否します。モデルを採用する前に、小さな構造化呼び出しでプローブしてください。
MCP / MCPize
CallLens には、analyze_transcript、score_dimension、list_rubrics を公開する MCP サーバーが同梱されており、MCPize にデプロイできます:
mcpize analyze && mcpize doctor && mcpize deployローカル stdio:
pip install -r requirements.txt
python mcp-server/server.py評価
| Dimension | MAE | Correlation |
|-----------|-----|-------------|
| Discovery | .61 | .88 |
| Rapport | .74 | .81 |ハーネス(calllens.evals)は、13 シナリオの合成データセット(優れたセールス担当者、劣ったセールス担当者、弱いディスカバリー、怒っている顧客、多言語など)に対して完全なパイプラインを実行し、人間品質のラベルに対する MAE、RMSE、相関、エビデンスの適合率/再現率を報告します。
ロードマップ
docs/ROADMAP.md を参照してください。ハイライト: Supabase 認証/RLS とオブジェクトストレージ、非同期ジョブバックエンド(Redis/SQS)、GraphQL ダッシュボードクエリ、ライブ通話モード、AI ロールプレイモード、担当者別トレンド、ドリフト監視。
セキュリティとプライバシー
API キーは環境変数のみで管理され、コミット、ログ記録、ブラウザへの公開は一切行われません。
通話録音は機密情報として扱われます。テナント分離、プライベート/署名付きストレージ、削除、設定可能な保持期間。
完全なトランスクリプトはデフォルトではログに記録されません。
SECURITY.md と docs/ARCHITECTURE.md を参照してください。
ライセンス
MIT © Yabloko Labs
This server cannot be deployed
Maintenance
Related MCP Connectors
Test the voice agents you run: scored transcripts, pass/fail verdicts, latency and WER metrics.
Build datasets and rubrics, then run evals that score your AI in Caliper.
451AI call analysis and voice agents for sales teams. Signup, usage, agents and call data over MCP.
- RulebaseOAuthco.rulebase
CX ops: read conversations, calls and QA evaluations from Zendesk, Freshdesk, Five9 and more.
Related MCP Servers
- AlicenseAqualityFmaintenanceProvides advanced analysis of conversations from Limitless Pendant recordings, including intelligent meeting detection, action item extraction, natural language time queries, and comprehensive conversation analytics with smart pagination support.1422 npm24MIT
- FlicenseNot gradedqualityBmaintenanceEnables collection and scoring of sales chat conversations via CDP, computing response times and generating evidence-linked LLM quality reviews.-
- AlicenseAqualityDmaintenanceEnables querying and analyzing Genesys Cloud data such as queues, conversations, voice call quality, sentiment, topics, transcripts, and OAuth client usage through natural language.1025 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables coding agents to run offline voice-agent call forensics over local stdio, scoring recordings and reading/verifying evidence to isolate failures. It also proposes fixes and regression checks so broken calls can be pinned and prevented from shipping again.49 PyPI2MIT