Media > AI活用ユースケース > 営業 > 失注コメントを分類して失注理由を集計する

失注コメントを分類して失注理由を集計する

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

CRMに自由記述で溜まっている失注コメントを入力に、生成AIへ「価格」「機能不足」「タイミング」「競合」「予算凍結」「社内調整不調」「担当者離職」などの分類コードを割り当てさせます。1件のコメントに複数の理由が含まれる場合は、主因と副因を分けて返させます。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Google Apps Script/Make/Power Automate/Python
対象業界
IT・SaaS/商社/製造
対象部門
営業/経営企画
対象業務
分類・仕分け/集計・分析
主な課題
データ分析に時間がかかる/判断に時間がかかる/属人化している
AIで行う処理
分類
主な効果
判断支援/品質標準化/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
既存ツールのみ(小)
人間の確認
必須
現在工数
15h/月
AI導入後
2.5h/月
想定削減
83%
年間削減
150h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 営業担当が案件を失注にする際、プルダウンから失注理由を選び、自由記述欄にコメントを書く
  2. 月末、営業企画がプルダウンの集計をレポートで出す
  3. プルダウンの結果を見ると「その他」が4割を占めている
  4. 「その他」の自由記述を1件ずつ読み、手元のスプレッドシートに分類を打ち直す
  5. 途中で時間が尽きて、読むのをやめる
  6. 集計は「価格が原因の失注が多い」という粗い結論で終わる
導入後(After)
  1. 営業担当が案件を失注にし、自由記述でコメントを書く(従来どおり)
  2. 自動月末に、その月の失注案件のコメントをまとめて取得する
  3. 自動AIが1件ずつ、主因・副因の分類コードと確信度を返す
  4. 確信度が低い案件、および「分類不能」の案件だけを人が確認する
  5. 自動分類結果をCRMの専用項目へ書き戻す
  6. 自動月次の集計レポートを生成する
各工程の詳しい説明を読む
  1. 営業担当が案件を失注にする際、プルダウンから失注理由を選び、自由記述欄にコメントを書く
  2. 月末、営業企画がプルダウンの集計をレポートで出す
  3. プルダウンの結果を見ると「その他」が4割を占めている
  4. 「その他」の自由記述を1件ずつ読み、手元のスプレッドシートに分類を打ち直す
  5. 途中で時間が尽きて、読むのをやめる
  6. 集計は「価格が原因の失注が多い」という粗い結論で終わる

問題は3つあります。

(a)プルダウンが機能していない。 営業担当は失注案件に時間をかけたくないので、迷ったら「その他」を選びます。結果、プルダウンの集計はそのまま使えません。

(b)自由記述に本当の理由が書いてある。 「先方の情報システム部が既存ベンダーとの関係を優先」といった、プルダウンにない粒度の情報がコメントには残っています。ここを読まないと打ち手が決まりません。

(c)1件に複数の理由が混ざっている。 「価格も高かったが、決め手は納期が合わなかったこと」というコメントを、プルダウンの単一選択では表現できません。

  1. 営業担当が案件を失注にし、自由記述でコメントを書く(従来どおり)
  2. 【自動】 月末に、その月の失注案件のコメントをまとめて取得する
  3. 【自動】 AIが1件ずつ、主因・副因の分類コードと確信度を返す
  4. 【人】 確信度が低い案件、および「分類不能」の案件だけを人が確認する
  5. 【自動】 分類結果をCRMの専用項目へ書き戻す
  6. 【自動】 月次の集計レポートを生成する

自動化されるのは「読んで分類する」部分です。残るのは、AIが迷った案件の判断だけになります。確信度が高い案件まで全件確認する運用にすると、この構成の効果はほぼ消えます。

02今回想定するシステム構成

構成図
Salesforce ── 失注案件のコメントを一括取得
   │
   ▼
スクリプト(Python / Google Apps Script)または
ワークフロー(Power Automate / Make)
   │
   ▼
LLM API ── 分類コード・主因/副因・確信度を返す
   │
   ├──【確信度 高】→ そのまま書き戻し
   └──【確信度 低・分類不能】→ 人が確認
   │
   ▼
Salesforce の分類項目へ書き戻し
   │
   ▼
スプレッドシート / BIツールで月次集計
役割想定する製品代替候補
CRMSalesforceHubSpot、kintone、Zoho CRM
実行環境Python スクリプトGoogle Apps Script、Power Automate、Make
生成AIClaude APIOpenAI API、Gemini API
集計GoogleスプレッドシートLooker Studio、Power BI、Tableau

この構成は月1回のバッチ処理です。 リアルタイム連携は要りません。そのぶん実装が軽く済みます。

03どうやって実装するのか

Step1

処理の起点を決める

毎月1日の朝9時など、時刻起動にします。

失注が発生するたびに1件ずつ処理する構成にもできますが、この業務では意味がありません。集計は月次でしか見ないため、月1回まとめて処理したほうが、API呼び出しも運用も単純になります。

Step2

入力データを集める

データ中身取得元
失注コメント営業担当が書いた自由記述Salesforce
案件情報商談金額、業種、フェーズ、商談期間Salesforce
分類コードの定義コードごとの意味と、判断の境界プロンプトに固定

案件情報を渡す理由は、コメントの解釈が案件の文脈で変わるためです。「予算が合わなかった」というコメントは、100万円の案件と5,000万円の案件では意味が違います。

Step3

データの取得方法を決める

Salesforce REST API の SOQL クエリで、前月に失注(StageName = 'Closed Lost')となった商談を取得します。

SELECT Id, Name, Amount, CloseDate, LossReason__c, LossComment__c, Industry__c
FROM Opportunity
WHERE StageName = 'Closed Lost'
  AND CloseDate >= LAST_MONTH

HubSpot の場合は、ディールのフィルタ検索(POST /crm/v3/objects/deals/search)で dealstage が失注のものを取ります。

Step4

AIへ渡す前に整形する

  1. 空コメントの除外 … コメントが空、または「-」「なし」だけの案件を対象外にします。ここをAIに渡すと、AIは案件名から理由を推測します
  2. 短すぎるコメントの分離 … 10字未満のコメント(「価格」だけなど)は、分類はできますが副因は取れません。別扱いにします
  3. 個人名のマスキング … コメントに書かれた顧客担当者の氏名を、外部AIへ送る前に伏せ字にします。分類に氏名は不要です
Step5

AIに処理させる

分類コードの割り当てです。コードは先に自社で決めます。AIに「適切に分類して」と丸投げすると、毎月違うカテゴリが出てきて集計になりません。

コード意味判断の境界
PRICE価格が高い自社の提示額が理由。予算そのものが無い場合は BUDGET
BUDGET予算が確保できなかった金額の多寡ではなく、予算枠がない・凍結された
FUNCTION機能・仕様が要件に合わない必要な機能がない、性能が足りない
TIMING検討時期が合わない導入時期の先送り。ニーズ自体は残っている
COMPETITOR競合に決まった他社の名前が出ている場合
INCUMBENT既存ベンダーが継続現行取引先との関係が理由
INTERNAL顧客の社内調整がつかなかった決裁が下りない、部門間の合意が取れない
CONTACT_LOST担当者の異動・離職で立ち消え
NO_RESPONSE連絡が途絶えた理由が不明のまま終了
UNKNOWNコメントから判断できない推測させず、必ずこれを使わせる
Step6

指示内容を固定する

あなたは営業データを分類する担当者です。
以下の失注コメントを、指定された分類コードに割り当ててください。

【厳守事項】
- 分類コードは下記のリストからのみ選んでください。新しいコードを作らないでください。
- コメントに書かれていない理由を推測しないでください。
  判断できない場合は必ず UNKNOWN を返してください。
- 主因は1つだけ選んでください。副因は0〜2つまでです。
- confidence は、コメントの記述だけを根拠に判断できた度合いです。
  案件金額や業種から推測して補った場合は、必ず low にしてください。
- evidence には、判断の根拠になったコメント中の文言をそのまま引用してください。
  引用できない場合は confidence を low にしてください。

【分類コードの定義】
{code_definitions}

【案件情報】
金額: {amount} / 業種: {industry} / 商談期間: {duration_days}日

【失注コメント】
{loss_comment}

evidence にコメントの原文を引用させる指示が、この構成の要です。 引用できない分類は、AIが文脈から作った推測です。引用の有無を機械的にチェックすれば、確信度の自己申告を検証できます。

Step7

出力形式を固定する

{
  "primary_reason": "",
  "secondary_reasons": [],
  "confidence": "high | medium | low",
  "evidence": "",
  "note": ""
}

primary_reasonsecondary_reasons の値は、定義した10コードに限定します。JSON Schema の enum で列挙すれば、リスト外の値が返ることを防げます。Claude API の Structured Outputs は、指定したスキーマに沿った出力だけを生成するよう制約をかける仕組みです。同種の機能は他社のLLM APIにもあります。

Step8

システムへ連携する

分類結果をSalesforceの商談レコードに書き戻します。

JSONのキーSalesforceの項目
primary_reasonカスタム項目「失注主因(AI分類)」
secondary_reasonsカスタム項目「失注副因(AI分類)」(複数選択)
confidenceカスタム項目「分類確信度」
evidenceカスタム項目「分類根拠」

既存の「失注理由」プルダウンは上書きしません。 営業担当が選んだ値と、AIが分類した値を別項目で持ちます。両者を比べることで、プルダウンがどれだけ実態とずれているかが分かります。これ自体が経営に報告できる情報になります。

Step9

人が確認する

confidencelow の案件と、UNKNOWN の案件だけを人が確認します。

想定では、150件のうち30件程度(2割)がここに該当します。1件2分として60分。これが残る作業です。

high の案件を全件確認する運用にすると、削減効果がなくなります。ただし導入初月だけは全件を人が確認し、AIの分類と人の判断が何割一致するかを測ってください。一致率が8割を下回るなら、分類コードの定義が曖昧です。 コードを見直してから運用に入ります。

Step10

例外に対処する

起きること対応
コメントが空処理対象外。UNKNOWN として集計に含め、「コメント未記入」として別に数える
コードのリストにない値が返るJSON Schemaのenumで防ぐ。それでも起きたら1回再実行し、失敗したら人へ回す
1件のコメントに5つ以上の理由が書かれている副因は上位2つまでに切る。全部を拾うと集計が分散して読めなくなる
顧客名・個人名がコメントに含まれる前処理でマスキングする
月の失注が0件正常系として扱い、レポートに「該当なし」と出す
API呼び出しが途中で失敗する処理済みの案件IDを記録し、再実行時はそこから続ける(同じ案件を二重に処理しない)
Step11

記録を残す

  • 入力したコメント(マスキング後)
  • AIの出力JSON(evidence を含む)
  • 人が確認して変更した場合の、変更前後の値

変更ログは、分類コードの定義を見直す材料になります。「PRICEBUDGET の取り違えが毎月起きる」と分かれば、境界の説明を書き直せます。

04実装レベルの3段階

最小構成:CSVを書き出し、チャットAIに20件ずつ貼る / 分類の判断
半自動化:スクリプトでCRMから取得 → LLM API → スプレッドシートへ出力 / 取得・分類・集計
本格構成:上記+CRMへの書き戻し+BIツールでの月次ダッシュボード / 経営レポートまで

本格構成の価値は、失注理由が案件レコードに構造化されて入ることで、「価格が理由の失注案件を、半年後に再アプローチする」といった動きが取れるようになる点です。集計だけが目的なら、半自動化で止めて構いません。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
1 名
月間件数
150 件
1件あたり現在時間
6 分
1件あたり導入後時間
1 分
現在  150件 × 6分 ÷ 60 = 15 時間/月
導入後 150件 × 1分 ÷ 60 = 2.5 時間/月
月間削減時間
12.5h
削減率
83%
年間削減時間
150h
年間金額換算(時間単価4,000円)
60万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. CRMの自由記述欄に失注コメントが蓄積されており、月100件以上の失注がある組織。失注分析を打ち手につなげたい場合。
向いていない
  1. 失注コメントを記入していない組織。月20件未満で、手作業で読み切れる規模。

07最小構成で試す方法

この業務は、最小構成のまま運用しても成立します。 月150件なら、手作業でのコピー&ペーストでも回るためです。

  1. Salesforceから前月の失注案件をCSVで書き出す
  2. コメント列を20件分コピーする
  3. ChatGPT、Claude、Gemini などのチャット画面に、上のプロンプトと分類コードの定義を貼る
  4. 続けて20件分のコメントを貼り、まとめて分類させる
  5. 出てきた結果をスプレッドシートに貼る

20件を1回のやり取りで処理できるので、150件でも8回のコピー&ペーストで終わります。まずこれを1か月分やってみて、集計結果が経営会議で使えるかを確かめてください。 使えないなら、自動化しても価値はありません。

08実装時につまずきやすいポイント

問題対策
分類コードの境界が曖昧で、毎回違う結果が出るコードごとに「判断の境界」を1文で書く。特に PRICEBUDGETCOMPETITORINCUMBENT
AIがコメントにない理由を書くevidence に原文の引用を必須にする。引用できないものは low に落とす
コード外の値が返るJSON Schema の enum で列挙する
1件のコメントに理由が多すぎて分散する副因は2つまでに制限する
導入初月から全件自動にして、誤分類に気づかない初月は全件を人が確認し、一致率を測る。8割を下回ればコード定義を直す
既存のプルダウンを上書きしてしまう別項目で持つ。両者の差分自体が分析材料になる
前月分を二重に処理する処理済み案件IDを記録し、再実行時はスキップする

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 顧客の社名、商談金額、失注理由、競合他社名。コメントに顧客担当者の氏名が含まれることがあります。

  1. 個人名のマスキング … 分類に氏名は不要です。前処理で伏せ字にしてから外部AIへ渡します
  2. 競合他社名の扱い … コメントには競合名が書かれます。外部AIへの入力可否を、自社の情報管理規程で確認します
  3. 学習利用 … 入力を学習に使わないことが保証されるサービスを選びます
  4. 自動実行してよい範囲 … 分類結果はCRMに書き込まれるだけで、顧客に対する行動を起こしません。この構成は、確信度が高い案件の自動処理を認めてよい部類です。 ただし、分類結果を根拠に自動で再アプローチメールを送るような拡張をする場合は、そこに人の確認を入れてください

誤分類が起きた場合のリスクは、経営が誤った失注傾向をもとに打ち手を決めることです。evidence を残し、集計の元データをたどれる状態にしてください。

10まず何から始めるか

1週目:分類コードを決める

過去3か月分の失注コメント(450件程度)をざっと読み、実際に出てくる理由を書き出します。そこから10前後のコードに整理します。この作業をAIにやらせないでください。 自社の事業構造を反映したコードでないと、集計が意思決定に使えません。

2週目:20件で試す

最小構成(§8)で20件を分類し、人の判断と突き合わせます。一致率が8割を超えるまで、コードの定義文を直します。

3週目:1か月分を通す

150件を最小構成のまま処理し、月次集計を作ります。それを営業会議に出して、議論に使えるかを確かめます。

その後: 使えることが確認できてから、スクリプト化とCRMへの書き戻しを実装します。この順番を逆にすると、「動くけれど誰も見ないダッシュボード」ができます。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-09-02/最終更新:2026-09-08
確認した内容情報源確認日
Claude APIのStructured Outputs(JSON Schemaによる出力形式の固定、enumによる値の制限)Anthropic: Structured outputs2026-09-02
HubSpotのオブジェクト検索・プロパティ更新APIHubSpot: Properties API2026-09-02

Salesforce の SOQL および REST API は一般提供されている機能ですが、カスタム項目の追加とAPI利用には自社のSalesforce管理者による設定が必要です。この部分は利用環境に応じた個別確認が必要です。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-0003)についてのご相談はこちらから。

AI活用について相談する
目次