引越しの見積り依頼をチャットで聞き取り、トラックと作業員数の概算と訪問見積りの要否を担当へ渡す
引越しの見積り依頼を受けたとき、家財と建物の条件をチャットで客から聞き取り、決まった項目にそろえて担当者へ渡します。トラックの大きさと作業員数の概算、訪問見積りが要るかどうかの目安も付けます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Zapier
- 対象業界
- 物流
- 対象部門
- カスタマーサポート/営業
- 対象業務
- データ入力・転記/問い合わせ対応
- 主な課題
- 人手が足りない/問い合わせが多い/属人化している
- AIで行う処理
- 対話
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 見積り依頼のフォームが届き、見積り台帳に1行足す
- 担当者が客に電話をかける。つながらなければ時間を変えてかけ直す
- つながったら、家財(大型家具・家電を1点ずつ)と、現住所と新居の建物の条件(階数、エレベーターの有無、トラックを止める場所、階段の幅)を聞く
- 聞いた内容を手元のメモに書き、電話の後に見積り台帳へ入力する
- 換算点数の表と早見表でトラックの大きさと作業員数の目安を出す(経験のある担当者は頭の中で決める)
- 訪問して下見するか、電話と写真だけで見積りを出すかを決める
- 下見をするなら日程を客と調整し、しないなら見積書を作って送る
- 【人(客)】 見積り依頼のフォームを送ると、完了画面と確認メールに「家財と建物の条件をチャットでお聞きします」という入口が出る
- 自動客がチャットを開くと、フォームの内容(予定日、市区町村、間取り)を引き継いで始まる
- 自動チャットが1問ずつ聞く。家財は間取りに応じた順番で、選択肢で答えられるものは選択肢を出す
- 自動客の答えを決まった項目にそろえ、まだ聞いていない項目を数える
- 自動すべての項目がそろったら、換算点数の表でトラックの大きさと作業員数の目安を計算する
- 自動訪問見積りの要否を、決めておいた条件で判定する
- 自動見積り台帳に聞き取りの結果と目安を書き、担当者に社内チャットで知らせる
- 人担当者が聞き取りの結果を読み、足りない点と気になる点だけを電話かメールで確かめる
- 人訪問見積りをするかを決め、する場合は日程を調整する。しない場合は見積書を作って送る
各工程の詳しい説明を読む
- 見積り依頼のフォームが届き、見積り台帳に1行足す
- 担当者が客に電話をかける。つながらなければ時間を変えてかけ直す
- つながったら、家財(大型家具・家電を1点ずつ)と、現住所と新居の建物の条件(階数、エレベーターの有無、トラックを止める場所、階段の幅)を聞く
- 聞いた内容を手元のメモに書き、電話の後に見積り台帳へ入力する
- 換算点数の表と早見表でトラックの大きさと作業員数の目安を出す(経験のある担当者は頭の中で決める)
- 訪問して下見するか、電話と写真だけで見積りを出すかを決める
- 下見をするなら日程を客と調整し、しないなら見積書を作って送る
(a)聞く項目が担当者ごとに違う。 経験の長い担当者は、エアコンの取り外しの有無やトラックを止める場所まで聞きます。新人は家財を聞いて終わりにし、当日になって「前の道が狭くてトラックが入らない」「エアコンの取り外しもお願いしたい」と分かります。 作業員を増やす、別の日に回すといった手当てが、当日の現場で発生します。
(b)電話がつながるまでに時間がかかる。 見積り依頼を出した客は、同時に何社かへ依頼していることが少なくありません。つながらない電話をかけ直している間に、客の側では比べる材料がそろってしまいます。
(c)聞き取りの電話が長くなる。 家財を1点ずつ聞くと、それだけで10分かかります。客は「冷蔵庫の大きさ」を覚えていないので、「ちょっと見てきます」と電話を置きます。
(d)訪問見積りの要否が勘で決まる。 ピアノがある、3階以上でエレベーターが無い、大型の家具を窓から吊り上げる必要がある、といった条件は下見が要る目安ですが、どこで線を引くかは担当者の感覚です。 下見が要らない引越しに訪問して半日使うことも、要る引越しを電話で済ませて当日に困ることもあります。
- 【人(客)】 見積り依頼のフォームを送ると、完了画面と確認メールに「家財と建物の条件をチャットでお聞きします」という入口が出る
- 【自動】 客がチャットを開くと、フォームの内容(予定日、市区町村、間取り)を引き継いで始まる
- 【自動】 チャットが1問ずつ聞く。家財は間取りに応じた順番で、選択肢で答えられるものは選択肢を出す
- 【自動】 客の答えを決まった項目にそろえ、まだ聞いていない項目を数える
- 【自動】 すべての項目がそろったら、換算点数の表でトラックの大きさと作業員数の目安を計算する
- 【自動】 訪問見積りの要否を、決めておいた条件で判定する
- 【自動】 見積り台帳に聞き取りの結果と目安を書き、担当者に社内チャットで知らせる
- 【人】 担当者が聞き取りの結果を読み、足りない点と気になる点だけを電話かメールで確かめる
- 【人】 訪問見積りをするかを決め、する場合は日程を調整する。しない場合は見積書を作って送る
8番目が、この設計の分かれ目です。 担当者は電話で一から聞くのではなく、そろった項目を読んで、確かめたい点だけを聞きます。
02今回想定するシステム構成
見積り依頼のフォーム(自社サイト)
│ 送信後の画面と確認メールにチャットの入口
▼【トリガー】客がチャットに1通送るたび
Make(Webhooks の Custom webhook)
▼
Make(HTTP の Make a request)
▼
ChatGPT(OpenAI API の Responses API)
│ ・次に聞くこと(客への返事)
│ ・ここまでに聞き取った項目(structured outputs で形を固定)
│ ・まだ聞いていない項目、特別な扱いの家財
▼
Make(Webhook response)── 客の画面に返事を返す
▼【項目がそろったら】
Make ── 換算点数の表で合計点数 → トラックの大きさ・作業員数の目安
── 訪問見積りの要否を条件で判定
▼
見積り台帳(スプレッドシート)に1行書く + 社内チャットで担当者へ通知
▼
【人】担当者が確認 → 電話で要点だけ確かめる → 訪問見積りか見積書の作成へ| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | ChatGPT(OpenAI API の Responses API。対話と聞き取り項目のそろえ) | Claude API、Gemini API |
| 連携 | Make(チャットの受け渡し、換算点数の計算、台帳への書き込み) | n8n、Zapier |
| チャット画面 | 見積り依頼ページに置く入力欄(送受信だけの簡単なもの) | 既存のWeb接客ツール |
| 台帳 | Google スプレッドシート(見積り台帳・換算点数の表) | Microsoft 365 のスプレッドシート |
| 通知 | Slack | Microsoft Teams、Google Chat |
見積り台帳と換算点数の表は、新しく作るものではありません。 いま手元にあるものを、機械が読める形に整えるのが最初の準備です。特に換算点数の表は、経験のある担当者が頭の中で使っている基準を書き出す作業になります。
Make の Custom webhook は、データを送れるURLを作る機能です。 客の1通をこのURLへ送るとシナリオ(Make の処理の流れ)が動き、返事は Webhook response のモジュールで返します。 既定の応答には200(受付)、400(キューが満杯)、429があり、受けられるのは10秒あたり300件までです。
instant の webhook のシナリオは、既定では並行して処理されます。 同じ客が続けて2通送ると順番が入れ替わりうるので、チャット画面の側で、返事が返るまで次の入力を受け付けない作りにします。
OpenAI API は、HTTP アプリの Make a request で呼びます。 任意のサーバーへHTTPの要求を送るモジュールで、認証にAPIキーを使え、応答を待つ時間は1〜300秒の範囲で指定します。
会話をつなぐのは、Responses API の previous_response_id です。 前の応答のIDを渡すと、その文脈がモデルに渡され、これまでのやり取りを自分でつなぎ直す必要がありません。 ただし、連鎖した一連の応答の入力トークンは、すべて入力として課金されます。 聞き取りの往復は20〜30回になるので、1件の会話が長くなるほど費用が増えます。
応答は既定で30日間保存され、store を false にすると保存されません。 客の名前や住所に近い情報を含む会話なので、どちらにするかは第13章で決めます。
03どうやって実装するのか
処理の起点を決める
客がチャットに1通送るたびに、Make のシナリオが1回動きます。 聞き取りの会話全体を1回の処理にするのではなく、1往復を1回の処理にします。 1回の処理でやることは、客の1通を受け取り、OpenAI API に渡し、返事を客の画面へ返し、そろった項目を記録することです。
チャットの入口は、フォームの送信直後の画面と確認メールに置きます。客がまだ家の中にいて、冷蔵庫を見に行ける時間のうちに始めてもらいます。
入口のURLには、フォームの受付番号を付けます。 チャットが始まるとき、Make はこの番号で見積り台帳を引き、予定日、市区町村、間取りを最初の入力として渡します。フォームで聞いたことを、チャットでもう一度聞かないためです。
会話の終わりもトリガーを持ちます。 すべての項目がそろってAIが ready を返したとき、または客が「あとで続けます」を選んだとき、台帳への書き込みと担当者への通知が動きます。 途中で画面を閉じた客のために、最後の1通から2時間たったら、そこまでの内容を「途中」として台帳に書く定時の処理も置きます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| フォームの内容 | 受付番号、予定日(第1〜第3希望)、現住所と新居の市区町村、間取り | 見積り依頼のフォーム → 見積り台帳 |
| 客の1通 | チャットに書かれた文と、選択肢で選んだ値 | チャット画面 |
| 前の応答のID | previous_response_id | 前回の OpenAI API の応答 |
| 聞く項目の一覧 | 項目名、聞く順番、選択肢、間取りごとに聞く家財 | 自社で用意する一覧 |
| 特別な扱いの家財の一覧 | ピアノ、金庫、美術品、水槽、大型の家具など | 自社で用意する一覧 |
質を決めるのは、下の2つです。 聞く項目の一覧が無いと、AIは思いついた順に聞き、客によって聞く項目が変わります。 それでは第3章の(a)がそのまま残ります。
聞く項目の一覧は、経験の長い担当者の電話を1本ずつ書き起こして作ります。 家財の聞き方だけでなく、「トラックを止める場所」「前の道の幅」「エアコンの取り外し」のような、新人が聞き忘れる項目を拾うのが目的です。間取りごとに聞く家財を変え、最後に「ほかに大きな家具や家電はありますか」と1回だけ聞きます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| フォームの内容 | 見積り台帳 | 会話の最初の1回だけ、受付番号で行を引く |
| 客の1通 | チャット画面 | Custom webhook で受け取る |
| 前の応答のID | チャット画面が保持 | 客の1通と一緒に送ってもらう |
| 聞く項目と家財の一覧 | 指示文に埋め込む | 一覧を更新したら指示文を作り直す |
| 換算点数の表 | 見積り台帳の別シート | 項目がそろった時点で1回だけ読む |
前の応答のIDは、チャット画面に持たせます。 客の画面が次の1通と一緒に送ってくれば、Make は受け取った値をそのまま使うだけで済みます。
換算点数の表は、AIに渡しません。 点数の計算は、聞き取りが終わってから Make の側で行います。AIには、何を聞くかだけを知らせます。 点数をAIに渡すと、会話の途中で「2トン車で足りそうです」と言い出す余地ができます。
AIへ渡す前に整形する
- 受付番号の確認 … 見積り台帳に無い番号なら、チャットを始めずにフォームへ案内します
- 二重の会話の確認 … 同じ受付番号で聞き取りが終わっていれば、「内容の追加・修正」として始めます
- 客の1通の長さの確認 … 極端に長い文(家財の一覧を貼り付けたものなど)は、そのまま渡してかまいません。ただし上限の文字数を決め、超えたら分けて送るよう案内します
- 個人情報の除去 … 客が電話番号や番地、カード番号のような数字の並びを書いたら、OpenAI API に渡す前に伏せ字にします。 番地は見積書に要りますが、チャットで聞く必要はありません
- 写真の扱い … この構成では写真を受け取りません。写真が要ると判断した場合は、担当者から改めて依頼します
4番目を軽く見ないでください。 客が親切に番地まで書いてくることは珍しくありません。伏せたうえで、担当者が電話で確かめる項目として台帳に残します。
AIに処理させる
させるのは、聞く項目の一覧に沿って客に1問ずつ聞き、答えを決まった項目にそろえることです。
| させること | 具体的に |
|---|---|
| 次に聞く1問を決める | 一覧の順番で、まだ答えが無い項目を1つ選ぶ |
| 聞き方を客に合わせる | 答えにくそうなら選択肢を出す、言い換える |
| 曖昧な答えを聞き直す | 「普通のサイズ」「たぶんある」を、選択肢に落として聞き直す |
| 答えを項目にそろえる | 「冷蔵庫は大きめ」を fridge: "large" のように、決めた値に置き換える |
| 特別な扱いの家財を拾う | ピアノ、金庫、美術品、水槽などが出たら、一覧の区分を付ける |
| 客の質問を担当者に回す | 料金、日程の空き、補償など、チャットで答えない質問を記録する |
3行目がいちばん効きます。 客の「普通のサイズの冷蔵庫」は、人によって大きさがまったく違います。ドアの枚数で聞き直せば、客は見れば答えられます。 電話の上手な担当者の聞き直しを、例として指示文に書いておきます。
| させないこと | 理由 |
|---|---|
| 料金を言う、目安を言う | 見積書の前に数字を出すと、それが基準になる |
| トラックの大きさ・人数を言う | 換算点数の表で機械的に決める |
| 日程の空きを答える | 空きは配車の台帳にしかない |
| 訪問見積りの要否を約束する | 決まった条件で判定し、担当者が決める |
| 補償や約款の解釈を答える | 担当者が約款を示して説明する |
| 答えの無い項目を埋める | 間取りから家財を推測しない |
6行目が起きやすい失敗です。 「2LDKです」と聞いただけで、冷蔵庫、洗濯機、ダブルベッド、食器棚を埋めてしまうと、実際には無い家財で点数が膨らみます。 聞いていない項目は null のまま残させます。
指示内容を固定する
あなたは引越し会社の見積り受付で、客から家財と建物の条件を聞き取る係です。
料金の見積りはしません。担当者が見積書を作るための材料をそろえるのが仕事です。
【聞き方】
- 1回の返事で聞くのは1つだけにしてください。
- 下の【聞く項目の一覧】の順番に、まだ答えの無い項目を聞いてください。
- 選択肢のある項目は、選択肢を出してください。
- 客の答えが曖昧なときは、見れば答えられる質問に言い換えて聞き直してください。
例:「普通の冷蔵庫」→「ドアは1枚、2枚、3枚以上のどれですか」
例:「ベッドはある」→「シングル、セミダブル、ダブル以上のどれですか」
- 客が「わからない」と答えた項目は unknown とし、同じ項目を二度聞かないでください。
【厳守事項】
- 料金、料金の目安、トラックの大きさ、作業員の人数を言わないでください。
聞かれたら「担当者から見積書でお伝えします」と答え、asked_questions に記録してください。
- 引越し日の空き状況を答えないでください。担当者に回してください。
- 訪問見積りをする・しないを約束しないでください。
- 客が答えていない項目を、間取りや他の答えから推測して埋めないでください。
答えの無い項目は null のままにしてください。
- 番地、電話番号、カード番号を聞かないでください。書かれていても記録しないでください。
- ピアノ、金庫、美術品、骨董品、水槽、観葉植物の大きなもの、ペットが出てきたら、
special_items に記録してください。運べるかどうかは答えないでください。
- 客の依頼が会社や店舗の移転だとわかったら、聞き取りを止め、
handoff_reason に "business_move" と書いてください。
- すべての項目に答えか unknown が入ったら、status を ready にしてください。
【フォームで受け付けた内容】{form_data}
【聞く項目の一覧】{question_list}
【特別な扱いの家財の一覧】{special_list}
「料金を言わない」は、聞かれたときの答え方まで書きます。 禁じるだけだと、客に何度も聞かれたときに「一般的には数万円程度」と答えることがあります。答える文を決めておき、その質問を担当者に回す記録を残させます。
「間取りから推測しない」も同じです。 指示が無いと先回りして埋め、埋めた値は客が答えた値と区別がつきません。
出力形式を固定する
毎回の応答を、次の形のJSONで受け取ります。 Responses API の structured outputs で text.format に json_schema を指定し、strict を true にします。
{
"reply_to_customer": "",
"status": "collecting | ready | handoff",
"handoff_reason": "",
"origin": {
"building_type": "detached | apartment | null",
"floor": null,
"elevator": "yes | no | unknown | null",
"truck_parking": "front | nearby | far | unknown | null",
"stair_width": "normal | narrow | unknown | null"
},
"destination": { "building_type": null, "floor": null, "elevator": null,
"truck_parking": null, "stair_width": null },
"items": [ { "item": "fridge", "size": "large", "count": 1 } ],
"boxes_estimate": null,
"services": { "aircon_remove": null, "aircon_install": null, "disposal": null },
"special_items": [],
"asked_questions": [],
"missing_fields": []
}
1つ目の理由は、客への返事と、聞き取った項目を分けて受け取れることです。 reply_to_customer だけを客の画面に返し、それ以外は Make が記録します。客に見せる文と、台帳に書く値が混ざりません。
2つ目は、status で次の処理を分けられることです。 collecting なら次の1通を待ち、ready なら換算点数の計算へ、handoff なら担当者へすぐ知らせます。
3つ目は、項目の値を決めた選択肢に絞れることです。 strict を有効にすると、必須のキーが抜けることも、決めていない選択肢の値が返ることもありません。 size が「大きめ」「L」「でかい」とばらつくと、換算点数の表を引けません。
スキーマには制約があります。 additionalProperties は false にする必要があり、すべての項目を必須にします。答えが無いことは、キーを省くのではなく null で表します。 また、モデルが安全上の理由で拒否した場合はスキーマではなく refusal のフィールドが返り、トークンの上限に達した場合もスキーマに沿わない応答になり得ます。 どちらも例外処理で扱います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| チャット画面 | Custom webhook と Webhook response | 客の1通を受け取り、返事を返す |
| OpenAI API | HTTP の Make a request | 1往復ごとに応答を作る |
| 見積り台帳 | スプレッドシートへの書き込み | 聞き取りの結果、目安、訪問見積りの判定 |
| 換算点数の表 | スプレッドシートの読み取り | 家財ごとの点数、トラックの早見表 |
| 社内チャット | 通知 | 担当者へ「聞き取りが終わった」「途中で止まった」「すぐ連絡が要る」 |
トラックの大きさと作業員数は、Make の計算で決めます。
| 計算 | 中身 |
|---|---|
| 合計点数 | items の各家財を換算点数の表で引き、個数を掛けて足す。段ボールの見込み数も点数にする |
| トラックの大きさ | 合計点数を早見表に当て、1段階ずつ区切った大きさから選ぶ |
| 作業員数 | トラックの大きさごとの基本人数に、階段作業(エレベーター無しで2階以上)と距離の遠い停車場所の分を足す |
| 訪問見積りの要否 | 下の条件のどれかに当たれば「訪問を勧める」 |
| 訪問を勧める条件 | 理由 |
|---|---|
special_items がある | 運び方と、引き受けられるかの判断が要る |
| 3階以上でエレベーターが無い | 階段作業の人数と時間が読みにくい |
| 階段の幅が狭く、大型の家具がある | 吊り上げ・吊り下ろしの作業になりうる |
| 合計点数が早見表の上限に近い | トラックの大きさの境目で、1段階違うと費用が大きく変わる |
unknown の項目が決めた数を超える | 聞き取りだけでは見積りの材料が足りない |
1行目は、約款とも関わります。 標準引越運送約款では、動植物、ピアノ、美術品、骨董品など特殊な管理を要するものは、引受けを拒絶することがあるとされています。運べるかどうかをチャットで答えさせないのは、このためです。
台帳への書き込みは、聞き取りの結果と目安までです。 見積書の記載事項は約款に定められていて、出すのは担当者です。
人が確認する
担当者は、台帳の1行を読んでから客に連絡します。 読む順番を決めておきます。
handoffのものを先に見る … 事業所の移転や、客が強く急いでいるものです。その日のうちに電話しますspecial_itemsと訪問見積りの判定を見る … 訪問を勧めるものは、下見の日程を提案しますasked_questionsを読む … 客がチャットで聞いたのに答えをもらえなかった質問です。最初の連絡で必ず答えますunknownとmissing_fieldsを見る … 電話で確かめる項目です。番地もここに入ります- トラックと作業員数の目安を見直す … 目安が経験と違えば、担当者が直します。直した記録を残します
3番目を省かないでください。 客は料金を聞いて「担当者からお伝えします」と返されています。
下見をするときは、費用の扱いを事前に伝えます。 約款では見積料は請求しないとされ、下見を行った場合に限り下見に要した費用を請求することがあり、その場合は見積りを行う前に金額を申込者に通知し、了解を得ることとされています。チャットではこの説明をさせず、担当者が伝えます。
目標は、1件6分です。 台帳を読むのに1〜2分、確認の連絡に3〜4分という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 客が途中で画面を閉じた | 最後の1通から2時間で「途中」として台帳に書き、担当者が続きを電話で聞く |
| 客が同じ質問に何度も「わからない」と答える | unknown にして次へ進む。同じ項目を二度聞かない |
| 会社・店舗の移転だった | handoff。法人の担当者へ回す |
| 料金を強く求められる | 決めた文で答え、asked_questions に記録。handoff にして当日中に電話 |
| 客が番地や電話番号を書いた | OpenAI API に渡す前に伏せ字にする。台帳には「電話で確認」とだけ残す |
| 聞き取りと関係の無い話が続く | 聞き取りに戻す文を返す。3回続けば担当者へ回す案内を出す |
| 指示を変えさせようとする文 | 聞き取り以外のことはしない。記録だけ残す |
structured outputs が refusal を返した | 客には「担当者から改めてご連絡します」と返し、handoff として扱う |
| 応答がトークンの上限で切れた | JSONとして読めないので、同じ入力で1回だけやり直す。だめなら担当者へ |
| OpenAI API が応答しない | Make a request の待ち時間で打ち切り、客に「少し時間をおいて」と返す |
| 家財の値が換算点数の表に無い | その家財だけ点数を空にし、担当者の確認に回す |
上から4行目までが大半を占めます。 特に料金を強く求める客は、比べる材料を急いでいる客です。聞き取りが終わっていなくても、その日のうちに電話するほうが、決まる見積りにつながります。
7行目の文は、客のチャットでは必ず届きます。 料金も日程も答えられない作りにしておくことが、いちばんの防ぎ方です。
記録を残す
- 受付番号ごとの会話の全文(客の1通とAIの返事)と、各往復の時刻
- 各往復の応答のJSON(
status、聞き取った項目、missing_fields) - 換算点数の計算の内訳(家財ごとの点数、合計、引いた早見表の段)と、そのときの表の版
- 訪問見積りの判定と、当たった条件
- 担当者がトラックや人数の目安を直した記録 … どの値を、何から何へ
- 実際の作業の結果(当日のトラック、作業員数、当日に分かった追加の作業)
5つ目で、換算点数の表を直していきます。 担当者が毎回同じ方向に直しているなら、表の点数がずれています。最後の行と突き合わせれば、聞き取りで漏れた項目も見えます。
会話の全文は、自社の側に残します。 OpenAI の側の保存は既定で30日で、store を false にすれば残りません。
04実装レベルの3段階
本記事の想定は半自動化です。 聞き取りと目安までを自動にし、見積書と下見の判断は担当者に残します。 1件18分が6分になるのは、この段階です。 本格構成で足すのは、日程の空きです。 空きを間違えて示すと客との約束になってしまうので、配車の台帳を1か所にまとめる作業が先に要ります。 段階を飛ばさないでください。 半自動化を2か月回し、担当者が目安を直した記録で換算点数の表が実際と合ってから、下見の予約まで自動にします。
05工数削減シミュレーション
導入後 480件 × 6分 ÷ 60 = 48 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 個人の引越しを主に扱い、自社サイトや一括見積りサイトから月に数百件の見積り依頼が届く引越し会社。見積り依頼のたびに担当者が電話で家財と建物の条件を聞き取っており、聞く項目と聞き方が担当者ごとに違う場合。電話がつながるまでに日数がかかり、その間に他社へ決まってしまう依頼がある場合。家財の換算点数やトラックの目安の早見表を社内で持っている場合。
- 見積り依頼が月に数十件で、担当者がその日のうちに全件へ電話できている場合。事業所の移転や長距離・海外の引越しが中心で、1件ごとに訪問して下見するのが前提の場合。トラックと作業員数の目安を決める社内の基準がなく、担当者の経験だけで決めている場合(先に基準を作る必要がある)。
07最小構成で試す方法
- 経験の長い担当者の聞き取りの電話を5本、書き起こす(録音が無ければ、聞いた項目と順番を書き出してもらう)
- そこから聞く項目の一覧を作る(家財、建物の条件、付帯のサービス)
- ChatGPT の画面に第7章の指示文と項目の一覧を貼り、担当者の1人が客の役になって、過去の見積り依頼を1件ずつ再現して答える
- 聞き取りが終わったら、出てきた項目を当時の見積り台帳の内容と突き合わせる
- 20件で繰り返し、聞き漏れた項目と、答えにくかった質問を書き出す
客の役は、実際の客の情報を使わずにできます。 過去の見積り台帳を見ながら担当者が答えるので、客の名前や住所をAIに渡す必要はありません。
| 出てきた結果 | 判断 |
|---|---|
| 当時の台帳と同じ項目がそろった | Make でチャット画面とつなぐ段階に進む |
| 料金や人数を言い出した | 指示文の禁止と、聞かれたときの答え方を足す |
| 間取りから家財を埋めた | 「推測しない」を強め、null の扱いを例で示す |
| 客の役が答えられない質問が多い | 聞く項目の一覧の聞き方を直す。 AIの問題ではない |
4行目の結果が出たら、それが一番の収穫です。 答えにくい質問は、電話でも客を待たせていた質問です。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 客に料金の目安を言ってしまう | 禁止と、聞かれたときの答えの文を指示に書く。asked_questions に記録させる |
| 間取りから家財を埋める | 「推測しない」を明記し、答えの無い項目は null にさせる |
| 1回の返事で3つも4つも聞く | 「1回に1つ」を指示に書く。客は最初の1つにしか答えない |
| 同じ質問を何度もする | unknown の扱いを決め、missing_fields から外す |
size の値がばらつく | structured outputs の strict で選択肢に絞る |
| 会話が長くなり費用が増える | 聞く項目を絞る。間取りごとに聞く家財を変える |
| 客が続けて送り、返事の順番が狂う | 既定では並行処理。画面の側で、返事が返るまで次を受け付けない |
| 換算点数の表が実際と合わない | 担当者の直した記録を月1回集計して、表を直す |
| 番地や電話番号がログに残る | 渡す前に伏せ字にする。ログにも伏せ字で残す |
| 途中で閉じた客が放置される | 2時間で「途中」として台帳に書き、担当者に知らせる |
| 事業所の移転が混ざる | handoff にして法人の担当へ。約款の適用範囲も個人の引越しと違う |
上の2行が、この構成の失敗のほとんどです。 どちらも、AIが客に対して親切にしようとすることから起きます。
11行目の約款の話も、早めに押さえておきます。 標準引越運送約款は、事業所等の移転や、定型の容器を用いて定額で行う運送で、この約款によらない旨をあらかじめ告知した場合には適用されないとされています。個人の引越しと同じ流れで扱わないように、聞き取りの最初の方で見分けます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 客の名前と連絡先(フォームで受け付けたもの)、現住所と新居の市区町村、建物の条件、家財の一覧、引越しの予定日です。家財の一覧からは、家族の人数や生活の様子がある程度分かります。
- OpenAI API に渡すのは、聞き取りに要る範囲だけにする … 名前、電話番号、メールアドレスは渡しません。フォームの内容のうち、渡すのは予定日、市区町村、間取りだけです
storeをどうするかを決める … 応答は既定で30日間保存され、storeをfalseにすると保存されません。会話をつなぐ方法と合わせて、自社の方針で決めます。 どちらにしても、確かめる材料は自社のログに持ちます- 料金と日程を答えさせない … 見積書の記載事項は約款で定められ、出すのは担当者です。チャットの返事が、見積書より先の約束にならないようにします
- 引受けの判断をさせない … ピアノや美術品などの引受けは担当者が決めます。チャットは記録するだけにします
- 客に、相手がAIであることを伝える … チャットの最初に「自動の聞き取りで、見積りは担当者からお送りします」と表示します
- ログの保存期間を決める … 見積りに至らなかった依頼の会話を、いつまで持つかを決めます
誤りが起きた場合のリスクは、チャットの返事が客への約束と受け取られることと、聞き漏れが当日に分かることの2つです。 前者は答えられることを絞って防ぎ、後者は担当者の確認と、実際の作業の結果との突き合わせで減らします。
10まず何から始めるか
1週目:聞く項目の一覧を作る
経験の長い担当者の聞き取りの電話を5本、書き起こします。家財だけでなく、トラックを止める場所、前の道の幅、エアコンの取り外しのような、新人が聞き忘れる項目を拾い、聞く順番と選択肢を付けた一覧にします。
2週目:客の役で20件試す
ChatGPT の画面に指示文と一覧を貼り、担当者の1人が客の役になって、過去の見積り依頼を20件再現します。料金や人数を言い出さないか、家財を推測で埋めないかを最優先で見ます。
3週目:換算点数の表を整える
担当者が頭の中で使っている基準を、家財ごとの点数とトラックの早見表に書き出します。20件の聞き取りの結果に当てはめ、当時実際に出したトラックと合うかを確かめます。
4週目:Make でつなぐ
チャット画面を見積り依頼ページに置き、Make の Custom webhook、HTTP の Make a request、Webhook response でつなぎます。最初は社内の人だけが使えるURLにして、担当者どうしで客の役をします。
2か月目: 一部の見積り依頼にチャットの入口を出し、聞き取りの結果と、担当者の確認の電話でわかった漏れを毎週数えます。3か月目以降: 目安を直した記録と当日の作業の結果で換算点数の表を直し、1件18分が何分になったかを実測します。担当者がトラックの目安を直す件数が月に数件まで減った時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Responses API で previous_response_id を渡して応答を連鎖させ、会話の形にできること。連鎖した一連の応答の入力トークンはすべて入力として課金されること。Conversations API で会話を持続的な識別子を持つオブジェクトとして保持できること。応答は既定で30日間保存され、store を false で上書きできること | OpenAI Docs: Conversation state | 2026-09-30 |
Structured Outputs を text.format に type: "json_schema"、strict: true で指定すると、必須のキーの欠落や未定義の列挙値が返らないこと。additionalProperties を false にし、すべての項目を必須にする必要があること。安全上の拒否は refusal のフィールドで返り、拒否やトークンの上限で応答がスキーマに沿わない場合があること | OpenAI Docs: Structured Outputs | 2026-09-30 |
| Custom webhook がデータを送れるURLを作ること。Webhook response の既定の応答に 200・400(キューが満杯)・429 があること。instant の webhook のシナリオが既定で並行処理されること。10秒あたり300件までを処理し、超えると429を返すこと | Make Help Center: Webhooks | 2026-09-30 |
| HTTP アプリの Make a request が任意のサーバーへHTTPの要求を送り、認証にAPIキー等を使えること。応答を待つ時間を1〜300秒で指定すること | Make Apps Documentation: HTTP | 2026-09-30 |
| 標準引越運送約款(最終改正 平成31年国土交通省告示第321号)で、見積りを行ったときに運賃等の合計額・内訳・支払方法、解約手数料の額、見積り担当者の氏名などを記載した見積書を発行すること。見積料は請求せず、下見を行った場合に限り下見に要した費用を請求することがあり、その場合は見積りの前に金額を通知して了解を得ること。ピアノ・美術品・骨董品・動植物などの引受けを拒絶することがあること。事業所等の移転や定型の容器による定額の運送で、約款によらない旨を告知した場合は適用されないこと | 国土交通省 北陸信越運輸局: 標準引越運送約款 | 2026-09-30 |
見積書の記載や下見の費用の扱いは、自社が届け出ている運送約款に従ってください。 本記事は標準引越運送約款で確認できた範囲だけを扱っています。家財の換算点数とトラックの早見表は会社ごとに異なり、この部分は自社の基準に応じた個別対応が必要です。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0388)についてのご相談はこちらから。
