顧客からの不具合報告を原因区分で分類して再発防止の台帳にする
顧客や営業担当から届く不具合報告の文面を入力に、製品名、型式、発生した現象、発生した工程、発生時期、顧客影響の度合いを取り出し、社内で決めてある原因区分の候補を付けます。あわせて、過去の不具合台帳から似た事例を探して並べます。
- 利用ツール
- Azure AI/ChatGPT/Claude/Gemini/Make/n8n/OpenSearch/Power Automate
- 対象業界
- EC/商社/小売/製造
- 対象部門
- 品質管理/生産
- 対象業務
- 分類・仕分け/台帳・マスタ管理
- 主な課題
- 属人化している/情報が見つからない/期限・対応漏れが起きる
- AIで行う処理
- 分類
- 主な効果
- 品質標準化/属人化解消/工数削減/検索時間短縮
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 営業担当が顧客からの不具合申告をメールで品質保証部へ転送する
- 品質保証の担当者がメールを開き、製品名、型式、現象、発生時期を読み取る
- どの製品区分に当たるかを、型式から製品マスタで確認する
- 現象の説明から、原因区分(材料、設備、作業方法、人)の当たりを付ける
- 過去に似た不具合がなかったかを、Excelの台帳を開いて用語で検索する
- 台帳に1行を追加し、受付番号を採番して各項目を入力する
- 是正処置が必要かを判断し、必要なら担当部署と期限を決めて依頼する
- 期限が来たら、対応が終わっているかを台帳で追いかける
- 営業・顧客・現場からの報告が、1つの受付フォームまたは専用メールアドレスに集まる
- 自動報告の文面から、製品名、型式、現象、発生工程、発生時期、顧客影響を取り出す
- 自動型式を製品マスタと照合し、製品区分を特定する
- 自動現象の記述から、原因区分の候補を確信度付きで付ける
- 自動過去の不具合台帳から、似た事例を上位5件まで探して並べる
- 人品質保証の担当者が、抽出結果と候補を確認して直す。原因区分を確定する
- 自動確定した内容を台帳に登録し、受付番号を採番する
- 人是正処置の要否を判断し、必要なら担当部署と期限を入れる
- 自動期限の3日前と当日に、担当部署へ通知する
各工程の詳しい説明を読む
- 営業担当が顧客からの不具合申告をメールで品質保証部へ転送する
- 品質保証の担当者がメールを開き、製品名、型式、現象、発生時期を読み取る
- どの製品区分に当たるかを、型式から製品マスタで確認する
- 現象の説明から、原因区分(材料、設備、作業方法、人)の当たりを付ける
- 過去に似た不具合がなかったかを、Excelの台帳を開いて用語で検索する
- 台帳に1行を追加し、受付番号を採番して各項目を入力する
- 是正処置が必要かを判断し、必要なら担当部署と期限を決めて依頼する
- 期限が来たら、対応が終わっているかを台帳で追いかける
問題は4つあります。
(a)文面の書き方がばらばら。 顧客がそのまま書いた文章、営業が要約した文章、電話の内容をメモした文章が混ざります。型式が書かれていないこともあり、そのたびに営業へ問い合わせが発生します。
(b)過去の類似事例が探せない。 Excelの検索は完全一致が基本です。「異音」と書かれた過去事例は、「音がする」で検索しても出てきません。同じ現象の再発に気づけないことが、この業務でもっとも痛い失敗です。
(c)原因区分の付け方が人によって違う。 ベテランは現象から区分を絞れますが、担当が代わると同じ現象が別の区分に入ります。集計しても傾向が読めなくなります。
(d)是正処置の期限が漏れる。 台帳の期限列を目で見て追いかけているため、件数が増えると抜けます。
- 営業・顧客・現場からの報告が、1つの受付フォームまたは専用メールアドレスに集まる
- 【自動】 報告の文面から、製品名、型式、現象、発生工程、発生時期、顧客影響を取り出す
- 【自動】 型式を製品マスタと照合し、製品区分を特定する
- 【自動】 現象の記述から、原因区分の候補を確信度付きで付ける
- 【自動】 過去の不具合台帳から、似た事例を上位5件まで探して並べる
- 【人】 品質保証の担当者が、抽出結果と候補を確認して直す。原因区分を確定する
- 【自動】 確定した内容を台帳に登録し、受付番号を採番する
- 【人】 是正処置の要否を判断し、必要なら担当部署と期限を入れる
- 【自動】 期限の3日前と当日に、担当部署へ通知する
自動化されるのは「読み取る」「探す」「打ち込む」「期限を見張る」の4つです。残るのは「原因を確定する」「是正処置を決める」の2つです。
02今回想定するシステム構成
営業からのメール / 顧客からの申告 / 工程内不良の報告 │ ▼ 受付フォーム(Microsoft Forms)または専用メールアドレス │ ▼【トリガー】新しい応答が送信されたとき / メールが届いたとき Power Automate │ ├──▶ LLM API ── 項目の抽出 + 原因区分の候補付け(JSONで受け取る) │ ├──▶ 製品マスタ照合(型式 → 製品区分) │ └──▶ 類似事例の検索(過去台帳から上位5件) │ ▼ 確認画面(報告の原文と抽出結果を左右に並べる)──【人が確定】 │ ▼ SharePoint リストの不具合台帳へ登録 │ ▼【期限管理】期限3日前・当日に担当部署へ通知
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Power Automate | Make、n8n |
| 生成AI | Claude API(structured outputs) | OpenAI API、Gemini API |
| 検索基盤 | Azure AI Search(ハイブリッド検索) | OpenSearch、全文検索 |
| 受付 | Microsoft Forms | Googleフォーム、専用メールアドレス |
| 台帳 | SharePoint リスト | Google スプレッドシート、kintone |
| 通知 | Teams | メール、Slack |
検索基盤は、本格構成にするときだけ必要です。 台帳が数百件までなら、過去事例をそのままLLMに渡して似たものを選ばせるほうが簡単で、費用もかかりません。件数が数千件を超えたところで検索基盤の導入を検討します。
すでに品質管理システム(QMS)を入れているなら、そちらの機能を先に確認してください。 不具合台帳、是正処置の期限管理、集計までパッケージ化されている製品があります。自前で組む価値があるのは、報告の入口がばらばらで既存システムに入るまでの手前が空いている場合です。
03どうやって実装するのか
処理の起点を決める
受付フォームへの回答、または専用メールアドレスへの着信を起点にします。
Microsoft Forms コネクタには「When a new response is submitted(新しい応答が送信されたとき)」トリガーがあります。ただしこのトリガーが返すのは応答IDだけなので、続けて「Get response details(応答の詳細を取得する)」アクションを呼んで中身を取ります。この2段構えを知らないと、最初のトリガーの出力を見て「回答内容が取れない」と詰まります。
このコネクタは組織アカウントでのみ動きます。顧客に直接フォームを開いてもらう構成にはできないため、顧客からの申告は営業が受けてフォームに入力するか、専用メールアドレスで受ける設計にします。
メールで受ける場合は、Office 365 Outlook コネクタの「When a new email arrives(新しいメールが届いたとき)」トリガーを使い、宛先アドレスで絞り込みます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 不具合報告の本文 | 顧客の申告内容、営業のメモ、現場の報告 | フォーム回答またはメール本文 |
| 添付の写真 | 不具合箇所の写真(あることが多い) | フォーム添付またはメール添付 |
| 製品マスタ | 型式、製品名、製品区分、担当部署 | 生産管理システム |
| 原因区分の定義 | 社内で決めた区分と、その区分に入る例 | 品質保証部の管理文書 |
| 過去の不具合台帳 | 直近3年分の受付番号、現象、原因区分、処置内容 | SharePoint リスト |
データの取得方法を決める
報告の本文: フォーム回答は「Get response details」アクションで取得します。メールの場合は本文のHTMLからテキストを取り出します。
製品マスタ: 生産管理システムから日次でエクスポートしたCSVを、SharePoint リストに持たせます。リアルタイム連携は不要です。型式は数百から数千件なので、この規模なら照合をLLMに任せず、プログラム側で文字列照合したほうが確実です。
原因区分の定義: 社内の区分表をそのままプロンプトに埋め込みます。区分名だけでなく、その区分に入る具体例を3つずつ添えてください。 「材料」という区分名だけを渡しても、AIは社内の運用に合った判断をしません。
過去の不具合台帳: SharePoint リストから取得します。件数が数百件までなら、現象の列だけを抜き出してプロンプトに渡します。数千件を超えたら、検索基盤に載せます。Azure AI Search はベクトル検索とキーワード検索を同じリクエストで実行するハイブリッド検索に対応していて、両方の結果を統合して返します。「異音」と「音がする」のような言い換えはベクトル検索が拾い、型式のような固有の文字列はキーワード検索が拾います。この業務では、どちらか片方では取りこぼします。
AIへ渡す前に整形する
- 引用部分の除去 … 転送メールには過去のやり取りが全部ぶら下がっています。区切り行から下を落とさないと、古い不具合の内容を拾います
- 署名の除去 … 営業の署名に含まれる社名を、顧客名として拾ってしまうことがあります
- 写真の扱いを決める … 写真は抽出の対象にせず、台帳に添付するだけにします。写真から原因を判定させる構成は、この難易度では組みません
- 重複の検出 … 営業と顧客の両方から同じ件が届くことがあります。「顧客名+型式+発生時期」が近いものを既存台帳から探し、候補として出します
AIに処理させる
| 処理 | 内容 |
|---|---|
| 項目の抽出 | 製品名、型式、現象、発生工程、発生時期、顧客影響、顧客の要望を文面から取り出す |
| 原因区分の候補付け | 現象の記述から、社内の原因区分に当てはめた候補を確信度付きで出す |
| 現象の言い換え | 「カタカタ音がする」を「異音」のような台帳用の表現に寄せる(検索できるようにするため) |
| 緊急度の下書き | 顧客影響の記述から、緊急度の候補を出す |
| 不足情報の指摘 | 型式が書かれていない、発生時期が不明など、営業に確認すべき点を挙げる |
原因の確定はさせません。 AIが出すのは「この現象なら、過去の例からするとこの区分に入ることが多い」という候補までです。現物を見ていないAIに原因を決めさせる構成にはしません。
指示内容を固定する
あなたは製造業の品質保証部を支援する担当者です。
顧客から届いた不具合報告の文面を読み、台帳に登録する項目を取り出してください。
【厳守事項】
- 文面に書かれていない項目は、推測せずに null にしてください。
型式が書かれていなければ null です。似た型式を当てはめないでください。
- 原因区分は、下の【原因区分の定義】にある区分からのみ選んでください。
新しい区分を作らないでください。
- 原因区分は「候補」です。断定する書き方をしないでください。
根拠にした文面の箇所を evidence に引用してください。
- 現象は、顧客の言葉をそのまま phenomenon_raw に、
台帳用に言い換えたものを phenomenon_normalized に入れてください。
言い換えは【現象の用語集】にある表現から選んでください。
- 顧客名、型式、日付を書き換えないでください。
- 営業に確認すべき不足情報があれば missing_info に列挙してください。
【原因区分の定義】
{cause_categories}
【現象の用語集】
{phenomenon_terms}
【不具合報告の本文】
{report_body}
「書かれていない項目は推測せずに null」の1行が要です。 これを入れないと、AIは型式らしい文字列を文面から作ってしまいます。品質の台帳に架空の型式が入ると、集計が壊れます。
出力形式を固定する
{
"customer_name": "",
"product_model": "",
"product_name": "",
"phenomenon_raw": "",
"phenomenon_normalized": "",
"occurred_process": "",
"occurred_date": "",
"customer_impact": "停止 | 手直しで使用可 | 影響なし | 不明",
"customer_request": "",
"cause_category_candidates": [
{ "category": "", "confidence": "high | medium | low", "evidence": "" }
],
"urgency_candidate": "高 | 中 | 低",
"missing_info": [],
"duplicate_candidates": []
}
JSONの形が毎回同じであることが、後段の自動登録の前提になります。Claude API には structured outputs があり、output_config.format に type: "json_schema" とスキーマを渡すと、制約付きデコードによってスキーマに沿った出力が返ります。公式ドキュメントは「Always valid(JSONのパースエラーが起きない)」「Type safe(型と必須項目が保証される)」と説明しています。形式違反のリトライ処理を書かずに済むので、ノーコードのワークフローで組むときほど効きます。
原因区分を配列で返させているのは、1つに決めさせないためです。候補が2つ並んでいれば、人はそのどちらかを選ぶだけで済みます。
システムへ連携する
確定後、SharePoint リストの不具合台帳に登録します。SharePoint コネクタには「Create item(SharePointリストに新しいアイテムを作成します)」アクションがあり、リストの各列に値を入れられます。更新は「Update item(SharePointリストのアイテムを更新します)」です。
受付番号の採番は、SharePoint リストの採番列を使うか、「年度+連番」を別途採ります。ワークフローの中で採番すると、処理が途中で失敗したときに番号が飛びます。 登録が成功した後に採番する順序にします。
期限管理は、「When an item is created or modified(アイテムが作成されたとき、および変更されるたびにトリガーします)」で是正処置の期限列を見張るのではなく、日次で動く別のフローで「期限が3日以内かつ未完了」の行を拾って通知するほうが単純です。
人が確認する
全件、人が確認します。
確認するのは次の3点です。
- 抽出された型式と顧客名が、原文と合っているか
- 原因区分の候補が妥当か(違えば選び直す)
- 是正処置が必要か
確認を速くするための設計が重要です。報告の原文と抽出結果を左右に並べて表示してください。 原文を別ウィンドウで開き直す作りにすると、確認に7分以上かかり、削減効果が消えます。
確信度が low の原因区分、missing_info に入った項目は色を変えて目立たせます。duplicate_candidates に候補が入っていれば、その過去事例へのリンクを出します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 型式が書かれていない | product_model を null にして、missing_info に入れる。営業への確認依頼を自動で作る |
| 現象の記述が「壊れた」だけで内容がない | 原因区分の候補を出さず、確信度 low で人へ回す。推測で区分を埋めない |
| 原因区分に当てはまらない現象 | 候補を空で返し、missing_info に理由を書く。新しい区分をAIに作らせない |
| 1通のメールに複数の不具合が書かれている | 分割して複数件として扱う。判定できない場合は人へ回す |
| 同じ件が営業と顧客の両方から届いた | duplicate_candidates に既存の受付番号を出し、人が統合するか判断する |
| 写真だけが送られてきて本文がない | 自動処理の対象外とし、人へ回す |
| 顧客からのクレームに強い表現が含まれている | 文面をそのまま台帳に保存する。要約や言い換えで角を取らない(後で経緯を追えなくなるため) |
| LLM APIがエラーを返した | 報告をキューに残し、再試行する。未処理のまま消えないようにする |
| Microsoft Forms のAPI呼び出しが制限に当たった | このコネクタは1接続あたり60秒で300回の上限がある。件数が増えたら間隔を空ける |
記録を残す
- 報告の原文(メール本文またはフォーム回答の全文)
- 添付写真
- AIが抽出した結果と、原因区分の候補・確信度
- 人が修正した項目と、修正前後の値
- 確定者、確定日時
- 是正処置の依頼先、期限、完了日
人が修正した項目の記録が、この構成の精度を測る唯一の材料になります。 「型式はほぼそのまま通るが、原因区分は半分修正されている」と分かれば、区分の定義か用語集のどちらを直すべきかが決まります。
04実装レベルの3段階
半自動化の時点で、25分が11分程度になります。 読み取りと入力が消えるためです。本格構成で類似事例の提示が入ると9分程度になります。類似事例を探す5分が1分になるうえ、区分の判断も速くなるためです。 この業務では、本格構成にする価値が比較的はっきりしています。 類似事例の提示は工数削減より、再発の発見という別の効果を持つためです。
05工数削減シミュレーション
導入後 120件 × 9分 ÷ 60 = 18 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 顧客や営業から届く不具合・クレームの報告が月50件以上あり、品質管理の担当者が文面を読んで区分を判断し、台帳に手で入力している企業。原因区分(4M区分など)と製品区分がすでに社内で決まっていること。是正処置の要否を判断できる担当者が確認工程に入れること。
- 報告が月10件程度で、担当者1名が記憶の範囲で処理できている場合。原因区分そのものが決まっておらず、分類の基準が人によって違う場合(先に区分を決めるほうが効果が大きい)。医療機器や自動車のリコール報告のように、提出様式と判断手順が法令で定められている報告業務。
07最小構成で試す方法
- 直近の不具合報告を20件、メールからコピーして用意する
- 社内の原因区分の定義と、現象の用語集をテキストにまとめる
- ChatGPTかClaudeの画面に、定義と用語集を貼り、報告1件を貼って上のプロンプトを試す
- 抽出された型式・現象・原因区分の候補が正しいかを、20件分数える
この検証は1日で終わります。 費用もかかりません。判断の目安は次のとおりです。
| 20件の結果 | 判断 |
|---|---|
| 型式・現象の抽出が18件以上正しい | 自動化する価値がある |
| 原因区分の候補が14件以上で妥当 | 候補付けも使える |
| 原因区分が半分以下 | 区分の定義に具体例が足りない。定義を直してもう一度試す |
| 型式の抽出が半分以下 | 報告の書式が自由すぎる。先に受付フォームを作るほうが効果が大きい |
最後の行が重要です。受付フォームを作って「型式」「発生時期」を必須入力にするだけで、AIを入れる前に問題の半分が消えることがあります。 その場合は、フォームの導入を先にしてください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| Forms のトリガーから回答内容が取れない | トリガーは応答IDだけを返す。「Get response details」アクションを続けて呼ぶ |
| 転送メールの引用部分から古い不具合を拾う | 区切り行から下を落とす前処理を必ず入れる |
| AIが型式を作ってしまう | 「書かれていなければ null」を明示する。出力スキーマで null を許可する |
| 原因区分が社内の運用と合わない | 区分名だけでなく、その区分に入る具体例を3つずつプロンプトに入れる |
| 現象の表記がばらばらで検索できない | 用語集を作り、台帳用の表現に寄せさせる。用語集は品質保証部が管理する |
| 類似事例が「異音」で引けない | キーワード検索だけでは言い換えを拾えない。ベクトル検索と併用する |
| 確認画面がなく、原文を別画面で開いている | 原文と抽出結果を左右に並べる。ここを省くと削減効果が消える |
| 受付番号が飛ぶ | 登録が成功した後に採番する。ワークフローの途中で採番しない |
| フォームの呼び出しが制限に当たる | 1接続あたり60秒で300回の上限がある。まとめ処理では間隔を空ける |
| 台帳が数千件を超えて、プロンプトに入らなくなる | 検索基盤へ移行する。全件をプロンプトに入れ続けない |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 顧客名、担当者名と連絡先、自社製品の型式と不具合の内容。自社製品の弱点と、顧客との取引関係が含まれます。
- 外部AIへの入力可否 … 不具合の内容は、顧客との秘密保持契約の対象になることがあります。顧客名と担当者名をマスクしてからAIに渡す設計も検討してください。型式と現象だけなら、マスクしても分類の精度は落ちません
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- アクセス権限 … 不具合台帳は、品質保証部と関係部署に限定します。営業全員が見られる状態にすると、顧客情報の取り扱いが広がりすぎます
- 原因の断定をさせない … AIの出力を「原因」として台帳に残さないでください。候補として残し、確定した原因は人が入れた値であることが分かる形にします。製造物責任に関わる記録なので、誰が何を判断したかが後から追えることが重要です
- 自動実行してよい範囲 … 台帳への登録は人の確定後に行います。顧客への回答文の自動送信は、この構成には入れません
- クレームの文面を要約しない … 顧客の言葉は原文のまま保存します。要約した文だけを残すと、後で経緯を確認できなくなります
誤りが起きた場合のリスクは、原因区分の集計が実態とずれること、再発を見落とすことです。前者は品質改善の方向を誤らせ、後者は同じ不具合の再発につながります。人が修正した記録を残し、定期的に精度を測ってください。
10まず何から始めるか
1週目:報告の入口と書式を確かめる
直近1か月の不具合報告を集め、どの経路で何件届いているか、型式と発生時期が書かれているものが何割かを数えます。書かれていないものが半分を超えるなら、受付フォームの導入を先に行ってください。 AIを入れるより効果が大きい可能性があります。
2週目:抽出と分類を20件で試す
原因区分の定義と現象の用語集を作り、生成AIの画面で20件試します。ここで原因区分の候補が半分以下なら、区分の定義に具体例を足してもう一度測ります。
3〜4週目:半自動化を作る
受付フォーム、抽出、確認画面、SharePoint リストへの登録までを作り、品質保証の担当1名が2週間使います。25分が何分になるかを実測します。期限通知もこの段階で入れます。
2か月目以降: 削減効果が確認できたら、類似事例の検索を足します。台帳が数千件を超えている場合は、この段階で検索基盤の導入を検討してください。あわせて、原因区分の集計を月次で見る運用を始めます。集計が読めるようになって初めて、この構成の本来の効果が出ます。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Microsoft Forms コネクタに「When a new response is submitted」トリガーと「Get response details」アクションがあること。トリガーの返り値は応答IDであること。組織アカウントのみ対応。1接続あたり60秒で300回の上限 | Microsoft Learn: Microsoft Forms connector | 2026-09-11 |
| SharePoint コネクタに「Create item」「Update item」アクションと「When an item is created or modified」トリガーがあること | Microsoft Learn: SharePoint connector | 2026-09-11 |
Claude API の structured outputs が output_config.format に JSON スキーマを指定する方式で、制約付きデコードによりスキーマ準拠を保証すること | Claude Docs: Structured outputs | 2026-09-11 |
| Azure AI Search がベクトル検索とキーワード検索を同一リクエストで実行するハイブリッド検索に対応し、結果を統合して返すこと。ベクトル検索は全リージョン・全価格レベルで追加費用なし(埋め込み生成の費用は別) | Microsoft Learn: Vector search overview | 2026-09-11 |
品質管理システム(QMS)を導入済みの場合、不具合台帳と是正処置の管理機能がすでにある可能性があります。この部分は利用環境に応じた個別確認が必要です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0030)についてのご相談はこちらから。
