deal-momentum-analyzer について
deal-momentum-analyzerは、ステージ滞在日数、活動、関係者の関与、通話シグナル、MEDDICの充足度、クローズ日の変更からオープン案件を採点する営業スキルです。案件の状態を分類し、停滞のおそれがある案件への次のアクションを提案します。
主な機能
- 016つのシグナルによる案件採点
- 02GREEN/YELLOW/RED分類
- 03Clariの通話シグナル分析
- 04リスク案件の優先表示
- 05案件ごとの次のアクション
- 06毎日およびオンデマンドのレポート
活用シーン
- 01失注や延期のおそれがある案件の特定
- 02毎朝の営業フォロー優先順位付け
- 03週次のパイプライン動向の確認
- 04停滞案件への具体的な対応準備
MCP 対応
このスキルはHubSpot MCPでオープン案件と関連するCRMデータを取得します。活動分析やフォロー提案には、Clari MCPの呼び出しやその他のMCPツールも記載されています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ scientiacapital/ skills --skill deal-momentum-analyzerインストール後、Claude Code で/deal-momentum-analyzerを入力して読み込まれたか確認します。
同梱ファイルconfig.json
詳細
<quick_start> 毎日の自動実行(CST 午前 7 時): スケジュールされたタスクがすべての進行中案件を取得 → 勢いをスコアリング → 優先順位付けされたアクションリストを配信
オンデマンド: 「deal momentum」 → 今すぐ完全な分析を実行 「pipeline review」 → 同上、パイプライン レビューとしてフォーマット 「which deals need attention」 → リスクのある案件のみにフィルタリング
トリガーフレーズ:
- 「deal health」 / 「deal momentum」
- 「pipeline review」 / 「stalled deals」
- 「which deals need attention」
- 「morning brief」 / 「SOD」(日次ブリーフに統合) </quick_start>
<success_criteria>
- すべての進行中案件を勢いで 0〜100 にスコアリング
- 案件を分類: GREEN(順調)、YELLOW(減速)、RED(停滞)
- リスクのある上位 3〜5 件の案件を具体的なネクストベストアクションとともに浮上させる
- 週次の傾向: 案件は加速しているか、減速しているか?
- 目標: タイムリーな介入により、停滞案件の 5〜10% を毎月回復する
- クローズ日がずれそうな案件に対する偽陰性ゼロ </success_criteria>
アーキテクチャ
SCHEDULED (7am CST) ANALYSIS OUTPUT
─────────────────────────────────────────────────────────────────
HubSpot: all open deals → Score each deal on → Prioritized dashboard
CRM: activity history → 6 momentum signals → Next-best-action per deal
Activity: emails/calls → Classify G/Y/R → Gmail draft (optional)
→ Compare to last run → Calendar blocks (optional)
ステージ 1: データ収集
1a. すべての進行中案件を取得(オーナーまたはコラボレーター)
HubSpot MCP の search_crm_objects を 2 つの OR 結合されたフィルターグループ で使用し、所有案件と共同案件の両方を取得します:
FilterGroup 1 — Tim が COLLABORATOR:
hs_all_collaborator_owner_idsCONTAINS_TOKEN87486452hs_is_closedEQfalse
FilterGroup 2 — Tim が OWNER:
hubspot_owner_idEQ87486452hs_is_closedEQfalse
リクエストするプロパティ:
dealname、dealstage、amount、hubspot_owner_id、hs_lastmodifieddate、notes_last_updated、closedate、pipeline、createdate、hs_all_collaborator_owner_ids、num_associated_contacts、hs_deal_stage_probability
hs_lastmodifieddate の降順でソート。上限 100。
各案件について以下を取得:
| フィールド | HubSpot プロパティ |
|---|---|
| 案件名 | dealname |
| 金額 | amount |
| ステージ | dealstage |
| クローズ日 | closedate |
| 作成日 | createdate |
| 最終活動 | notes_last_updated または hs_lastmodifieddate |
| オーナー | hubspot_owner_id |
| コラボレーター | hs_all_collaborator_owner_ids |
| 関連コンタクト | アソシエーション経由 |
| 関連会社 | アソシエーション経由 |
1a-bis. 案件ロールのタグ付け
案件を取得した後、各案件に Tim のロールをタグ付けします:
- OWNER —
hubspot_owner_id=87486452→ Tim が案件を直接所有 - COLLABORATOR —
hs_all_collaborator_owner_idsに87486452が含まれるがhubspot_owner_id≠87486452→ Tim がクローズを支援中(AE 所有または SE 所有の案件)
両方のタイプを勢いレポートに表示します。AE が所有するコラボレーター案件(オーナー ID 82625923 Lex Evans、423155215 Ron Epstein、190030668 Phillip Sandler)は、Tim がソースした、または積極的に支援している案件であり、それらは彼のパイプライン貢献そのものです。追跡する必要があります。
スコアリングから除外するのは、Tim がオーナーでもコラボレーターでもない案件のみです(つまり、何らかの形で表示されたが Tim の関与がない案件)。
1b. Clari 通話インテリジェンス(シグナル 4 のデータソース)
各ディールに関連するコンタクトについて、最近の Clari 通話データを取得します:
| ツール | 目的 |
|---|---|
clari_search_calls | ディールのコンタクトが関与した通話を検索します(attendeeEmail、過去 30 日でフィルタ) |
clari_get_call_summary | 関連する各通話の AI サマリーとアクションアイテムを取得します |
各ディールの関連コンタクトごとに:
- Clari 通話を検索:
clari_search_calls(attendeeEmail=contact_email, daysBack=30) - 見つかった通話に対して:
clari_get_call_summary(callId=call_id) - 抽出する項目:
- 通話センチメント:AI サマリーから positive/neutral/negative を判定
- ディスカバリーの網羅性:MEDDIC の質問が行われたか
- 競合の言及:サマリー内の競合他社名
- アクションアイテム:未解決のアクションアイテム = 停滞リスク
- 最終通話日:シグナル 4 のスコアリングにおける直近性シグナル
シグナル 4 の強化(通話モメンタム — 15 点):
| サブシグナル | 点数 | 基準 |
|---|---|---|
| 過去 7 日以内の Clari 通話 | 5 | 直近のエンゲージメントが確認できる |
| ポジティブなセンチメント | 4 | AI サマリー = positive/constructive |
| MEDDIC の質問が行われた | 3 | トランスクリプトでディスカバリーのトピックが扱われている |
| 未解決のアクションアイテムがない | 2 | すべてのアクションアイテムがクローズ済み |
| 競合の言及がない | 1 | 競合上の立場がクリーン |
Clari データが見つからない場合は、HubSpot のアクティビティの直近性(既存のロジック)にフォールバックします。Clari が空であるという理由だけで 0 点にしてはいけません。
1c. アクティビティ履歴の取得
各ディールの関連企業について、ask_agent を使用します:
- クエリ:「[company] のディールにおける過去 30 日間のすべてのアクティビティ、ノート、エンゲージメントを表示して」
- 抽出する項目:通話ノート、メールアクティビティ、ミーティングの結果、ディールステージの変更
1c. コンタクトエンゲージメントの取得
各ディールの関連コンタクトについて、hubspot_search_contacts を使用します:
- 最後のメール開封/クリック日
- フォーム送信
- ページビュー
- ミーティング予約
ステージ 2:モメンタムスコアリング(0~100)
6 つの重み付けされたシグナルで各ディールをスコアリングします:
シグナル 1:現在のステージにおける経過日数(25 点)
| 条件 | 点数 |
|---|---|
| このステージの中央値未満 | 25 |
| 中央値ちょうど | 15 |
| 中央値の 1.5 倍 | 8 |
| 中央値の 2 倍超 | 0 |
ステージの中央値(Tim の過去データからキャリブレーション):
| ステージ | 想定日数 |
|---|---|
| Appointment Scheduled | 7 |
| Qualified to Buy | 14 |
| Presentation Scheduled | 10 |
| Decision Maker Bought-In | 14 |
| Contract Sent | 7 |
| Closed Won | — |
シグナル 2:アクティビティの直近性(20 点)
| 最終アクティビティ | 点数 |
|---|---|
| 3 日未満前 | 20 |
| 3~7 日 | 15 |
| 7~14 日 | 8 |
| 14~21 日 | 3 |
| 21 日超 | 0 |
シグナル 3: ステークホルダーの広がり (15 点)
ATL/BTL の検証が必要 (CLAUDE.md § ATL/BTL Classification v1.0 を参照): 各ディールの関連コンタクトについて、スコアリングの前に役職で分類します:
- ATL: Chief、VP、Director、Dean、Provost、Superintendent、Court Administrator、City Manager、Senior Pastor、Executive Pastor
- GRAY: Manager (AV/施設/IT) — 予算が 25K ドル超であることが確認できた場合にのみ ATL 相当としてカウント
- BTL: Technician、Specialist、Coordinator、Support、Administrator (システム/ネットワーク/データベース)、Engineer、Operator、Instructor/Faculty、Designer、Assistant、Clerk (Court Admin 以外)、Volunteer、Intern、Student、Resident、Help Desk
- ATL には決してならない: Warehouse Manager、Network Manager、Systems Administrator、AV Technician、Graphic Design Instructor、Program Administrator、Web Designer、Classroom Support、Lab Coordinator、Maintenance、Building Engineer、Multimedia Services Manager、Video Production Specialist、Streaming Crew
| 関与したコンタクト | ポイント |
|---|---|
| 3 件以上のコンタクト (ATL 層のコンタクトを最低 1 件含む、EB が確認済み) | 15 |
| 2 件以上のコンタクトで、少なくとも 1 件が ATL 層 | 12 |
| 2 件以上のコンタクトだがすべて BTL/GRAY (ATL が確認されていない) | 7 |
| 1 件のコンタクト (チャンピオンのみ、層を問わない) | 5 |
| 1 件以上のコンタクトだがすべて NEVER ATL の役職 | 2 |
| アクティブなコンタクトが 0 件 | 0 |
ペナルティフラグ: ディールに ATL 層のコンタクトが 0 件の場合、レポートに ⚠️ フラグを追加します: 「NO ECONOMIC BUYER IDENTIFIED — deal at risk of stalling at Decision Maker stage. Action: ask champion to intro Director+/VP+.」
シグナル 4: 通話の勢い (15 点)
Clari の通話データを主要なシグナルソースとして使用します (Stage 1b: Clari Call Intelligence を参照)。
| アクティビティのシグナル | ポイント |
|---|---|
| 過去 7 日以内の通話 + ポジティブなセンチメント | 15 |
| 過去 7 日以内の通話 + ニュートラル | 10 |
| 過去 14 日以内の通話 | 7 |
| 14 日以上通話なし | 0 |
| 最後の通話でネガティブなセンチメント | -5 (ペナルティ) |
データソース:
- 主要: Clari の通話サマリー (
clari_search_calls+clari_get_call_summary経由) - フォールバック: Clari のデータが利用できない場合は HubSpot のアクティビティの最新性
シグナル 5: MEDDIC の網羅性 (15 点)
利用可能なデータから推定します:
| 特定された MEDDIC フィールド | ポイント |
|---|---|
| 6 次元のうち 5-6 | 15 |
| 3-4 次元 | 10 |
| 1-2 次元 | 5 |
| 0 次元 | 0 |
シグナル 6: クローズ日の整合性 (10 点)
| 条件 | ポイント |
|---|---|
| クローズ日が将来で、一度も延期されていない | 10 |
| クローズ日が 1 回延期された | 6 |
| クローズ日が 2 回以上延期された | 2 |
| クローズ日が過去 (期限超過) | 0 |
分類
| スコア | 分類 | アクションの優先度 |
|---|---|---|
| 70-100 | GREEN — 順調 | モニタリング |
| 40-69 | YELLOW — 減速 | 今週中に対応 |
| 0-39 | RED — 停滞 | 本日中に対応 |
Stage 3: 次に取るべき最善のアクションエンジン
YELLOW/RED の各ディールについて、具体的なアクションを処方します:
アクションマトリクス
| 主要なシグナルのギャップ | 推奨アクション | ツール |
|---|---|---|
| 14 日超アクティビティなし | 再エンゲージメントメールを送信 | gmail_create_draft |
| 14 日超通話なし | チェックイン通話を予約 | gcal_create_event |
| シングルスレッド (コンタクト 1 件) | 追加のステークホルダーを調査してアプローチ | apollo_mixed_people_api_search |
| 経済的購買者が特定されていない | チャンピオンに EB を紹介してもらう | 通話スクリプト |
| クローズ日が期限超過 | メールで新しいタイムラインを提案 | gmail_create_draft |
| 通話のセンチメントがネガティブ | 反論に正面から対応 | 通話準備ブリーフ |
| 競合他社が言及された | 競合のバトルカードを取得 | リサーチ |
| MEDDIC のギャップ | 次回通話用のディスカバリー質問 | MEDDIC ブリーフ |
アクションの出力形式
各アクションについて、次を提供します:
- What: 具体的なアクションの説明
- Why: どのシグナルがこれをトリガーしたか
- How: すぐに使えるメールのドラフト / カレンダー招待 / トーキングポイント
- When: 本日中 / 今週中 / [クローズ日] までに
Stage 4: 出力形式
╔══════════════════════════════════════════════════════════════╗
║ DEAL MOMENTUM REPORT — [Date] ║
║ Pipeline: $[total] | Deals: [count] | Weighted: $[weighted] ║
╠══════════════════════════════════════════════════════════════╣
SUMMARY:
🟢 GREEN: [X] deals ($[amount]) — on track
🟡 YELLOW: [X] deals ($[amount]) — slowing, intervene this week
🔴 RED: [X] deals ($[amount]) — stalled, intervene TODAY
TREND vs LAST RUN:
- Deals improved: [X] (moved from RED→YELLOW or YELLOW→GREEN)
- Deals declined: [X] (moved down)
- New deals: [X]
- Pipeline delta: [+/- $amount]
═══════════════════════════════════════════════════════════════
🔴 PRIORITY ACTIONS (do these today):
1. [Deal Name] — $[amount] | Stage: [stage] | Score: [XX/100]
⚠️ Signals: [days in stage: 28 | no activity: 18 days | single-threaded]
→ ACTION: [specific next-best-action]
→ DRAFT: [ready-to-send email or talking points]
2. [Deal Name] — $[amount] | Stage: [stage] | Score: [XX/100]
⚠️ Signals: [close date overdue | negative call sentiment]
→ ACTION: [specific next-best-action]
→ DRAFT: [ready-to-send email or talking points]
═══════════════════════════════════════════════════════════════
🟡 WATCH LIST (intervene this week):
3. [Deal Name] — $[amount] | Score: [XX/100]
→ [brief action recommendation]
═══════════════════════════════════════════════════════════════
🟢 ON TRACK:
[Deal list with scores, sorted by close date]
╚══════════════════════════════════════════════════════════════╝
<scheduled_automation>
毎日午前7時 CST の実行
このスキルは、スケジュールタスクとして実行されるように設計されています。
スケジュール: 毎日午前 7:00 CST(13:00 UTC) タスク名: "deal-momentum-daily" スケジュール設定のオプション:
- セッションベース:
CronCreate "57 6 * * 1-5"とプロンプト"Run deal-momentum-analyzer"(3 日で自動失効するため、セッションごとに再作成が必要) - 永続型:
~/Library/LaunchAgents/com.tim.deal-momentum.plistの launchd エージェント(今後の対応) - オンデマンド: Tim が「deal momentum」または「morning brief」と言ったとき
フロー:
- HubSpot からすべての進行中商談を取得します
- 各商談を 6 つのモメンタムシグナルでスコアリングします
- GREEN/YELLOW/RED に分類します
- YELLOW/RED に対して次に取るべき最適なアクションを生成します
- 推奨される再エンゲージメントメールの Gmail 下書きを作成します
- レポートを出力します(ワークスペースに保存し、モーニングブリーフで提示します)
SOD/モーニングブリーフとの連携: Tim が「morning brief」または「SOD」と言ったとき、このレポートはパイプラインセクションとして含まれます。 </scheduled_automation>
## 必要な MCP ツール - **Epiphan CRM MCP:** hubspot_search_deals、hubspot_search_companies、hubspot_search_contacts、hubspot_get_deal、hubspot_get_company、hubspot_get_contact、ask_agent(アクティビティ履歴、ステージ進行速度の中央値、パイプラインカバレッジ、商談コンバージョンのベンチマーク) - **Epiphan Clari MCP:** clari_search_calls、clari_get_call_summary(通話のセンチメント分析とモメンタムスコアリング用) - **Apollo MCP:** apollo_mixed_people_api_search、apollo_people_match(マルチスレッド化アクション用) - **Gmail MCP:** gmail_create_draft(再エンゲージメントメールのアクション用) - **Google Calendar MCP:** gcal_create_event(チェックインコールの予約用) - **スケジューリング:** CronCreate(セッションベース、最大 3 日)または launchd(永続型)参照される関連スキル
hubspot-revops-skill— HubSpot クエリパターン、パイプラインステージの定義sales-revenue-skill— MEDDIC フレームワーク、パイプラインカバレッジのベンチマークmeddic-call-prep-auto-skill— action = "book a call" の場合に完全なコール準備を生成しますportfolio-artifact-skill— GTME ポートフォリオ用に商談回復の指標を収集します
結果サイドカーの出力
最終ステップとして、~/.claude/skill-analytics/last-outcome-deal-momentum-analyzer.json に書き込みます:
{"ts":"[UTC ISO8601]","skill":"deal-momentum-analyzer","version":"1.0.0","variant":"default",
"status":"[success|partial|error]","runtime_ms":[estimated ms from start],
"metrics":{"deals_scored":[n],"green_count":[n],"yellow_count":[n],"red_count":[n],"blockers_flagged":[n],"avg_momentum_score":[n],"drafts_created":[n]},
"error":null,"session_id":"[YYYY-MM-DD]"}
一部のステージが失敗しても結果が生成された場合は、status に "partial" を使用します。出力がまったく生成されなかった場合にのみ "error" を使用します。