動きの止まった商談を洗い出して、次の一手の案までそろえる
営業支援システムの商談データと活動履歴を入力に、過去の受注・失注の実績から「このまま動かなければ失注しやすい」案件の特徴を数値化し、止まりかけている商談を並べます。あわせて、最後のやり取りから止まっている理由の候補と、次の一手の案を出します。
- 利用ツール
- ChatGPT/Claude/Gemini/Google Apps Script/Power Automate/Python
- 対象業界
- IT・SaaS/商社/広告/製造
- 対象部門
- 営業
- 対象業務
- 比較検討/集計・分析
- 主な課題
- データ分析に時間がかかる/営業フォローが追いつかない/属人化している
- AIで行う処理
- 予測
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 週次の営業会議の前に、営業が自分の案件一覧を開く
- 更新日の古い順に案件を開き、最後のやり取りを読み返す
- 次に何をするかを決める(連絡する、提案を作り直す、いったん保留にする)
- 会議で上長に状況を説明する
- 上長が「あの案件はどうなった」と個別に確認する
- 動きのない案件は、翌週も同じ説明が繰り返される
- 数か月経った案件が、期末に失注として処理される
- 毎週月曜の朝、処理が始まる
- 自動営業支援システムから進行中の商談と活動履歴を取得する
- 自動案件ごとに、停滞を示す特徴を計算する(最終活動からの日数、フェーズの滞留日数、予定の有無、返信の間隔など)
- 自動過去の受注・失注の実績から作った基準で、停滞の度合いを点数にする
- 自動点数の高い案件について、最後のやり取りを読み、止まっている理由の候補を出す
- 自動次の一手の案を、過去に同じ状態から動いた案件のやり方を参考に作る
- 自動営業ごとの一覧を作り、本人と上長へ通知する
- 人営業が一覧を見て、動く案件と保留にする案件を決める
- 人保留にする場合は理由を入力する
- 自動判断の結果を記録し、次回の基準の見直しに使う
各工程の詳しい説明を読む
- 週次の営業会議の前に、営業が自分の案件一覧を開く
- 更新日の古い順に案件を開き、最後のやり取りを読み返す
- 次に何をするかを決める(連絡する、提案を作り直す、いったん保留にする)
- 会議で上長に状況を説明する
- 上長が「あの案件はどうなった」と個別に確認する
- 動きのない案件は、翌週も同じ説明が繰り返される
- 数か月経った案件が、期末に失注として処理される
問題は4つあります。
(a)全件を見る時間がない。 1人24件を毎週見直すのは現実的ではなく、結局は動きのある案件だけを見ています。動いていない案件こそ見るべきなのに、後回しになります。
(b)履歴を読み返すのに時間がかかる。 3か月分のやり取りを読み直して、どこで止まったかを思い出す作業が毎回発生します。
(c)止まった理由が記録に残らない。 「先方の稟議待ち」なのか「担当者が異動した」なのか「競合に決まりかけている」のかは、営業の頭の中にしかありません。
(d)自然消滅する。 誰も動かないまま時間が過ぎ、期末に一括して失注処理されます。失注理由は「時期尚早」とだけ記録され、次に活かせません。
- 毎週月曜の朝、処理が始まる
- 【自動】 営業支援システムから進行中の商談と活動履歴を取得する
- 【自動】 案件ごとに、停滞を示す特徴を計算する(最終活動からの日数、フェーズの滞留日数、予定の有無、返信の間隔など)
- 【自動】 過去の受注・失注の実績から作った基準で、停滞の度合いを点数にする
- 【自動】 点数の高い案件について、最後のやり取りを読み、止まっている理由の候補を出す
- 【自動】 次の一手の案を、過去に同じ状態から動いた案件のやり方を参考に作る
- 【自動】 営業ごとの一覧を作り、本人と上長へ通知する
- 【人】 営業が一覧を見て、動く案件と保留にする案件を決める
- 【人】 保留にする場合は理由を入力する
- 【自動】 判断の結果を記録し、次回の基準の見直しに使う
自動化されるのは「探す」「読み返す」「並べる」の3つです。残るのは「どうするかを決めて動くこと」です。
02今回想定するシステム構成
【トリガー】毎週月曜 07:00 │ ▼ Python(集計・スコアリング) │ ├──▶ 営業支援システムのAPIから商談・活動履歴を取得 │ GET /services/data/vXX.X/query/?q=SELECT+...+FROM+Opportunity+WHERE+... │ ├──▶ 停滞の特徴を計算(最終活動からの日数・フェーズ滞留・予定の有無 ほか) │ ├──▶ 停滞スコアの算出(過去実績から作った重み) │ ├──▶ Claude API ── 上位案件の履歴を読み、止まっている理由の候補と次の一手の案 │ └──▶ 営業ごとの一覧(スプレッドシート)+ Teams へ通知 │ ▼【人が判断】動く/保留にする(保留は理由を入力) │ ▼ 判断の結果を記録 → 次回の基準の見直し
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Python | Google Apps Script、Power Automate |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 連携 | 営業支援システム | 各社のSFA・CRM |
| 一覧 | Googleスプレッドシート | Microsoft Lists |
| 通知 | Microsoft Teams | Slack、メール |
点数の計算に生成AIを使いません。 停滞スコアは、日数や回数といった数値から計算します。なぜその案件が上位に来たのかを説明できることが、営業に使ってもらうための条件です。
03どうやって実装するのか
処理の起点を決める
週1回の定期実行にします。営業会議の前日か当日の朝に合わせます。
日次にすると通知が日常の雑音になり、月次では手遅れになります。商談期間が3〜6か月の業種では、週1回がちょうど良い間隔です。 商談期間が年単位の業種(大型設備、公共案件)では隔週や月次に落とします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 進行中の商談 | 案件ID、顧客、金額、フェーズ、確度、作成日、完了予定日、担当者 | 営業支援システム |
| 活動履歴 | 訪問・電話・メールの日時、内容、次回予定 | 営業支援システム |
| 過去の実績 | 直近2年の受注・失注案件と、その経過 | 営業支援システム |
| 商材ごとの基準 | 商材ごとの平均商談期間、正常な間隔 | 設定ファイル |
| やり取りの本文 | 最後の数回のメール・議事録 | 営業支援システム、メール |
4番目が要ります。 消耗品の追加受注で2週間動かないのは異常ですが、基幹システムの更改で2週間動かないのは普通です。商材ごとに基準を変えないと、全部の案件が「停滞」になります。
データの取得方法を決める
商談と活動履歴: 営業支援システムのAPIから取得します。Salesforce を使う場合、REST API のクエリのリソースにSOQLを渡します。GET /services/data/vXX.X/query/?q=SOQL の形で、クエリ文字列の空白は + に置き換えます。同期のリクエストで一度に返るのは最大2,000件で、超えると done が false になり、続きを取得するための情報が返ります。 クエリが不正な場合は MALFORMED_QUERY が返ります。
商談が数千件ある場合は、この続きの取得を必ず実装してください。最初の2,000件だけを処理して「全件見た」としてしまう誤りが起きやすい箇所です。
やり取りの本文: 停滞スコアの高い案件だけ取得します。全件のメール本文を読み込む必要はありません。費用と処理時間の大半はここで決まります。
AIへ渡す前に整形する
- 対象の絞り込み … 進行中で、金額が一定以上、完了予定日が未来の案件に限ります。既に失注・受注したものは外します
- 特徴の計算 … 案件ごとに次を計算します
| 特徴 | 内容 |
|---|---|
| 最終活動からの日数 | 最後の訪問・電話・メールから何日経ったか |
| フェーズ滞留日数 | 現在のフェーズに入ってから何日か |
| 次回予定の有無 | 未来の予定が入っているか |
| 活動の間隔の変化 | 直近の間隔が、それまでの平均より延びているか |
| 完了予定日の延期回数 | 予定日が何回先送りされたか |
| 相手の反応 | 直近のやり取りで相手からの返信があるか |
- 商材ごとの正規化 … 平均商談期間で割り、商材が違っても比べられるようにします
- 担当者の在籍確認 … 退職・異動した担当者の案件を別枠にします。これは停滞ではなく引き継ぎ漏れです
- 長期案件の除外 … もともと年単位の案件は、別の基準で見ます
AIに処理させる
計算と文章化で役割を分けます。
プログラムにさせること: 特徴の計算と停滞スコアの算出。重みは、過去の実績(同じ状態から受注に至ったか、失注したか)から決めます。複雑な手法は要りません。 どの特徴がどれだけ効いたかを説明できる形にします。
生成AIにさせること:
| 処理 | 内容 |
|---|---|
| 停滞の理由の候補 | 最後のやり取りから、止まっている理由として考えられることを挙げる |
| 引用 | その根拠になったやり取りの箇所を示す |
| 次の一手の案 | 過去に同じ状態から動いた案件のやり方を参考に、3案程度 |
| 確認事項 | 記録からは分からない点(社内の事情、担当者の状況) |
受注の可否や確度をAIに書かせないでください。 「この案件は受注可能性が低い」と書かれた一覧が回ると、営業が動く前に諦めます。
指示内容を固定する
あなたは営業を補佐する担当者です。
止まりかけている商談の記録と、直近のやり取りを渡します。
止まっている理由の候補と、次の一手の案を出してください。
【厳守事項】
- 記録とやり取りに書かれていないことを書かないでください。
顧客の社内事情を推測して断定しないでください。
- 理由の候補には、根拠になったやり取りの箇所を引用してください。
引用できない候補は出さないでください。
- 受注できるか、確度が何%かを書かないでください。
- 「この案件は見込みが薄い」といった評価を書かないでください。
- 次の一手は、担当者がすぐ実行できる具体的な行動にしてください。
「フォローを強化する」ではなく「◯◯について確認の連絡をする」と書いてください。
- 値引きや特別条件の提示を提案しないでください。
- 記録が少なく判断材料がない場合は、その旨を書いてください。
無理に理由を作らないでください。
【商談の基本情報】
{opportunity}
【停滞の特徴(計算済み)】
{stall_features}
【直近のやり取り】
{recent_activities}
【同じ状態から動いた過去の案件の例】
{similar_cases}
「値引きを提案しない」の1行を入れておいてください。 止まっている案件に対して、生成AIは値引きや特典の提示を提案しがちです。それが一覧に並ぶと、価格で動かす発想が営業に広がります。
出力形式を固定する
{
"opportunity_id": "",
"owner": "",
"amount": 0,
"stage": "",
"stall_score": 0,
"score_reasons": [
{ "feature": "最終活動からの日数", "value": 0, "contribution": 0 }
],
"possible_causes": [
{ "cause": "", "quote": "" }
],
"next_actions": [],
"unknowns": [],
"insufficient_record": false
}
score_reasons に、点数の内訳を入れます。「なぜこの案件が上位なのか」が一覧で分かることが、使われ続けるかどうかを決めます。 点数だけを出すと、営業は納得しません。
insufficient_record が立つ案件が多いなら、それは仕組みの問題ではなく、活動履歴が入力されていないという運用の問題です。
システムへ連携する
| 出し先 | 内容 |
|---|---|
| 営業ごとの一覧 | 停滞スコアの高い順に、点数の内訳・理由の候補・次の一手 |
| 通知 | 本人へは自分の案件、上長へはチーム全体 |
| 営業支援システム | 判断の結果(動く/保留/失注)をメモとして記録 |
営業支援システムの確度やフェーズを自動で書き換えないでください。 数値は営業が入力するもので、仕組みが書き換えると、システムの数字が誰の判断か分からなくなります。
人が確認する
全件、営業本人が判断します。
一覧に並ぶのは「見落としているかもしれない案件」であって、「手を打つべき案件」ではありません。顧客の予算時期の都合で意図的に置いている案件もあります。 その判断は営業にしかできません。
判断を速くするための設計が要ります。
- 点数の内訳を一覧に表示する
- 「保留」を選ぶときに理由を1つ選ばせる(予算時期/先方都合/優先度が低い/こちらの都合)
- 保留にした案件は、指定した日まで一覧に出さない
- 次の一手の案は3つまで。多いと読まれない
「保留」を選びやすくすることが大切です。 保留が選べないと、一覧を無視する習慣がつきます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 活動履歴が入力されていない | insufficient_record を立てる。入力不足を停滞と判定しない |
| 担当者が異動・退職した案件 | 別枠で「引き継ぎ確認」として出す |
| もともと動きの遅い商材 | 商材ごとの基準で正規化する |
| 顧客の予算時期待ちで意図的に置いている | 保留の理由として記録し、再開予定日まで出さない |
| 取得が2,000件で切れる | 続きの取得を実装する。件数を必ずログに残す |
| 同じ顧客の複数案件が並ぶ | 顧客単位でまとめて表示する |
| 一覧に毎週同じ案件が並ぶ | 3回続けて保留になった案件は、上長のレビュー対象にする |
| 生成AIが理由を作り込みすぎる | 引用の必須化で抑える。引用のない候補は表示しない |
記録を残す
- 週ごとの停滞スコアと内訳
- 生成AIが出した理由の候補と次の一手
- 営業の判断(動く/保留/失注)と理由
- その後の結果(受注・失注・継続)
3番目と4番目を突き合わせると、基準の精度が測れます。 「上位に並んだ案件のうち、実際に失注した割合」を見れば、点数の付け方が妥当かが分かります。この検証を四半期に一度行い、重みを見直してください。
04実装レベルの3段階
半自動化だけでも効果が出ます。 12分が6分程度になります。本格構成にすると4分程度になり、履歴を読み返す時間がほぼ消えます。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 進行中の商談が常時100件以上あり、営業支援システムに活動履歴が入力されている会社。案件が自然消滅する形の失注が多い場合。
- 商談の記録が営業の手帳にしかない場合。案件数が少なく、営業が全件を把握できている場合。受注までの期間が数日で、停滞という状態が起きない業種。
07最小構成で試す方法
- 過去1年の失注案件から20件を選ぶ
- それぞれについて、失注が確定する3か月前の時点のデータを取り出す
- 「最終活動からの日数」「次回予定の有無」「完了予定日の延期回数」を手で集計する
- 同じ時期に受注した案件20件についても同じ集計をする
- 2つのグループで数値に差が出るかを見る
5番で差が出なければ、この構成は機能しません。 差が出る特徴が2つ3つ見つかれば、それが点数の材料になります。
判断の目安は次のとおりです。
| 40件の比較結果 | 判断 |
|---|---|
| 明確な差がある特徴が2つ以上 | 半自動化に進む |
| 差が小さい | 活動履歴の入力が足りていない可能性がある。入力の運用を先に見直す |
| そもそもデータが取り出せない | 営業支援システムの使い方から見直す |
生成AIの部分は、この段階では試さなくて構いません。先に「停滞を数字で捉えられるか」を確かめます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 全案件が「停滞」と判定される | 商材ごとの平均商談期間で正規化する |
| 取得件数が上限で切れる | 続きの取得を実装し、件数をログに残す |
| 活動履歴が少ない営業の案件ばかり上位に来る | 入力不足を別のフラグにする。停滞と混ぜない |
| 営業が一覧を無視する | 点数の内訳を見せる。保留を選びやすくする |
| 毎週同じ案件が並ぶ | 保留の期限を設ける。3回連続は上長レビューへ |
| 生成AIが顧客の事情を推測で書く | 引用を必須にする。引用のない候補は出さない |
| 値引き提案が並ぶ | プロンプトで禁じる |
| 確度やフェーズが自動で書き換わる | 書き込みは判断メモのみ。数値は営業が入力する |
| 評価に使われていると受け取られる | 目的を明示し、上長への通知範囲を決めておく |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 商談の内容、顧客名、金額、担当者の活動履歴、顧客とのやり取りの本文。顧客の検討状況と、営業個人の活動記録の両方を含みます。
- 個人の評価に使わない … 停滞スコアは案件の状態を示すもので、担当者の能力を示すものではありません。活動履歴の入力が丁寧な営業ほど停滞が見えやすくなるため、そのまま評価に使うと入力しないほうが有利になります。 目的を導入時に明示し、評価とは切り離してください
- 顧客とのやり取りの本文 … メールの本文には、顧客の社内事情や個人名が含まれます。生成AIへ渡す範囲を、停滞スコアの高い案件の直近数回に絞ってください
- 顧客名の扱い … 判断に社名が必要でなければ、案件IDに置き換えて渡す方法も取れます
- 学習利用 … 入力を学習に使わない設定または契約のサービスを選びます
- アクセス権限 … 一覧の閲覧を、本人・上長・営業企画に限定します。他の営業の案件の停滞スコアが見える設計にするかは、社内で決めてください
- 自動実行してよい範囲 … 抽出、点数付け、案の作成までです。顧客への連絡、確度やフェーズの更新、失注処理は人が行います
誤りが起きた場合のリスクは、意図的に置いている案件に不要な連絡をして顧客の心証を損ねること、逆に点数が低いために本当に危ない案件を見落とすことです。一覧は判断の材料であって、指示ではありません。
10まず何から始めるか
1週目:失注案件20件と受注案件20件を比べる
失注が確定する3か月前の時点で、両者の数値に差が出る特徴を探します。差が出る特徴が見つからなければ、この構成は作れません。
2週目:商材ごとの基準を決める
商材ごとの平均商談期間と、「この日数動かなければ確認すべき」という目安を、営業のリーダーと決めます。
3〜4週目:半自動化を1チームで動かす
特徴の計算と停滞スコア、週次の一覧までを作り、営業3名で4週間使います。一覧を見て実際に動いた件数と、保留にした理由を記録します。
2か月目以降: 上位案件についてのみ、やり取りからの理由の候補と次の一手を加えます。四半期後に、上位に並んだ案件の受注・失注の結果を集計し、点数の重みを見直してください。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Salesforce の REST API で、/services/data/vXX.X/query/?q= にSOQLを渡して検索でき、同期のリクエストで一度に返るのは最大2,000件であること。上限を超えると done が false になり、続きを取得するための情報が返ること。クエリ内の空白は + に置き換える必要があり、不正なクエリには MALFORMED_QUERY が返ること | Salesforce Developers: Query(REST API Developer Guide) | 2026-09-15 |
| SOQL が、指定した条件でレコードを検索するためのクエリ言語として提供されていること | Salesforce Developers: Salesforce Object Query Language (SOQL) | 2026-09-15 |
営業支援システムの種類によって、取得できる項目と上限は異なります。この部分は利用環境に応じた個別確認が必要です。 停滞の判定に使う特徴と基準は、自社の商材と商談の進み方に合わせて決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0087)についてのご相談はこちらから。
