Media > AI活用ユースケース > カスタマーサポート > 団体・法人の宿泊予約の依頼メールを手配表にそろえ、足りない確認事項を返信案にまとめる

団体・法人の宿泊予約の依頼メールを手配表にそろえ、足りない確認事項を返信案にまとめる

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

団体・法人から届く宿泊の依頼メールを読み取り、人数・日程・部屋割り・食事・宴会場・駐車・請求先などを手配表の項目にそろえて書き込みます。足りない項目は、聞き返す返信の下書きにまとめます。部屋の確保と確定は人が行います。

サマリー
利用ツール
ChatGPT/Claude/Gemini/Make/n8n/Power Automate/Zapier
対象業界
宿泊/飲食
対象部門
カスタマーサポート/営業
対象業務
データ入力・転記/問い合わせ対応
主な課題
入力作業が多い/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
抽出
主な効果
入力漏れ削減/対応スピード向上/工数削減
導入難易度
★★☆☆☆
実装レベル
半自動化
費用感
ノーコード連携(中)
人間の確認
条件付き
現在工数
72h/月
AI導入後
28h/月
想定削減
61%
年間削減
528h
モデル条件による試算値です。実在企業の実績ではありません。

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

導入前(Before)
  1. 団体予約用のアドレスに届いた依頼メールを開く
  2. 添付があれば開く(PDFの依頼書、表計算の名簿、旅行会社の手配書など)
  3. 本文と添付を読み、人数・日程・部屋の希望・食事・宴会場・駐車・請求先を拾い出す
  4. 手配表に新しい行を作り、拾った内容を項目ごとに書き込む
  5. 変更の依頼なら、手配表で元の案件を探し、変わった項目を書き換える
  6. 手配表の空欄を見て、聞き返すべき項目を考える
  7. 返信メールを書く(受け付けた内容の確認と、不足している項目の質問)
  8. 宿泊管理システムで客室の空きを確かめ、仮押さえをする
  9. 宴会場や食事がある場合は、宴会の予約台帳と調理場へ連絡する
導入後(After)
  1. 自動団体予約用のアドレスに届いたメールを取り込む
  2. 自動添付の一覧を取り、PDFと表計算の添付を読み取れる形にする
  3. 自動本文と添付から、手配表の項目ごとに内容を抜き出す
  4. 自動新規の依頼か、既存の案件の変更かを見分け、変更なら元の案件を探す
  5. 自動依頼の条件に照らして、足りない項目を洗い出す
  6. 自動手配表に書き込む(新規は行を追加、変更は変わった項目を「変更候補」の列へ)
  7. 自動受付の確認と不足項目の質問をまとめた返信の下書きを作る
  8. 担当者が手配表の内容と元のメールを見比べ、返信の下書きを直して送る
  9. 宿泊管理システムで空きを確かめ、仮押さえ・確定を行う
各工程の詳しい説明を読む
  1. 団体予約用のアドレスに届いた依頼メールを開く
  2. 添付があれば開く(PDFの依頼書、表計算の名簿、旅行会社の手配書など)
  3. 本文と添付を読み、人数・日程・部屋の希望・食事・宴会場・駐車・請求先を拾い出す
  4. 手配表に新しい行を作り、拾った内容を項目ごとに書き込む
  5. 変更の依頼なら、手配表で元の案件を探し、変わった項目を書き換える
  6. 手配表の空欄を見て、聞き返すべき項目を考える
  7. 返信メールを書く(受け付けた内容の確認と、不足している項目の質問)
  8. 宿泊管理システムで客室の空きを確かめ、仮押さえをする
  9. 宴会場や食事がある場合は、宴会の予約台帳と調理場へ連絡する

問題は5つあります。

(a)書き方が相手ごとに違う。 企業の総務担当は本文に箇条書きで書き、旅行会社は自社の手配書を添付し、学校の先生は丁寧な文章の中に条件を散らします。同じ「人数」でも、総数だけの人、男女別の人、部屋ごとの人がいます。 読み取る場所が毎回違うので、慣れた担当者でも1件ずつ時間がかかります。

(b)変更依頼の反映が漏れる。 「先日お願いした件、人数が2名増えます」という短いメールが来たとき、どの案件の話かを探し、何が変わったかを判断し、関係する項目(部屋割り、食事の数、宴会の席数)をすべて直す必要があります。人数は直したのに食事の数を直し忘れる、ということが起きます。

(c)聞くべきことを聞き忘れる。 手配表に空欄があっても、それが「まだ聞いていない」のか「必要ない」のかが分かりません。夕食なしの依頼で夕食の欄が空いているのは正常ですが、夕食ありでアレルギーの欄が空いているのは聞き漏れです。 この区別は担当者の頭の中にしかありません。

(d)返信が遅れる。 1通を読んで転記して返信するのに18分かかり、1日に10件以上届く日は午後に回ります。旅行会社は複数の施設に同時に打診していることがあり、返信が遅い施設から外れます。

(e)担当者によって手配表の書き方が違う。 「男12女8」と書く人と「男性12名/女性8名」と書く人がいて、後から集計や検索がしにくくなります。 部屋割りの書き方もそろっていません。

  1. 【自動】 団体予約用のアドレスに届いたメールを取り込む
  2. 【自動】 添付の一覧を取り、PDFと表計算の添付を読み取れる形にする
  3. 【自動】 本文と添付から、手配表の項目ごとに内容を抜き出す
  4. 【自動】 新規の依頼か、既存の案件の変更かを見分け、変更なら元の案件を探す
  5. 【自動】 依頼の条件に照らして、足りない項目を洗い出す
  6. 【自動】 手配表に書き込む(新規は行を追加、変更は変わった項目を「変更候補」の列へ)
  7. 【自動】 受付の確認と不足項目の質問をまとめた返信の下書きを作る
  8. 【人】 担当者が手配表の内容と元のメールを見比べ、返信の下書きを直して送る
  9. 【人】 宿泊管理システムで空きを確かめ、仮押さえ・確定を行う

自動化されるのは「読む」「転記する」「抜けを洗い出す」「返信の下書きを作る」の4つです。残るのは、内容の確認と、在庫の確保と、返信を送ることです。

客室の仮押さえを自動化しません。 団体の依頼は「20名前後」「できれば和室」のように幅を持って届きます。その幅をどう読んで何室を押さえるかは、他の団体の予約、個人の予約の見込み、料金の設定と合わせて決めることです。 抜き出した条件で自動的に在庫を押さえると、売れるはずの部屋が団体の仮押さえで埋まります。

返信の自動送信もしません。 「ご依頼を承りました」と自動で返すと、相手は予約が取れたと受け取ります。 空きを確かめる前にそう読める文面が届くことは避けます。

変更依頼を手配表へ直接上書きしません。 読み取りを誤った場合に、元の正しい値が消えるためです。変わった項目は別の列へ入れ、担当者が確かめてから反映します。

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

構成図
団体予約用のメールアドレス(Gmail)
   │
   ▼【トリガー】新着メール(団体予約のラベル)
Make のシナリオ
   │
   ├──▶ List email attachments で添付の一覧を取る
   │
   ├──▶ Router で添付の種類ごとに分岐(PDF/表計算/添付なし)
   │
   ├──▶ Claude API ── 本文と添付から項目の抽出、不足項目の洗い出し
   │
   ├──▶ Search Rows で手配表から同じ団体・同じ日程の案件を探す
   │       │
   │       ├──▶ 見つからない:Add a Row で新しい行を追加
   │       └──▶ 見つかった:Update a Row で「変更候補」の列に書き込む
   │
   ├──▶ Create a draft で返信の下書きを作る(元のスレッドに紐づける)
   │
   └──▶ Update email labels で「取り込み済み」のラベルを付ける
   │
   ▼
担当者が手配表と下書きを確認 ──【人】
   │
   ▼
返信を送る/宿泊管理システムで仮押さえ・確定 ──【人】
役割想定する製品代替候補
ワークフローMakePower Automate、Zapier、n8n
生成AIClaude APIOpenAI API、Gemini API
メールGmail(Google Workspace)Outlook(Microsoft 365)
手配表Google スプレッドシートExcel、宿泊管理システムの団体台帳
在庫・確定既存の宿泊管理システム各社の製品

宿泊管理システムに団体予約の受付画面があるなら、まずそれを確認してください。 団体の台帳を持つ製品もあります。自前で組む価値があるのは、「ばらばらに届く依頼文を、台帳の項目にそろえる」部分です。台帳があっても、そこへ手で打ち込んでいるなら、この構成の抽出部分だけを使えます。

Make の Gmail アプリには、新着メールで動く Watch emails があり、フォルダ・ラベル・既読かどうか・送信者・件名・本文・添付の有無などで絞り込めます。添付は List email attachments で一覧を取り、返信は Create a draft で下書きとして作れます。下書きは既存のスレッドに紐づけることができるため、元のメールへの返信として担当者の画面に並びます。Send an emailSend a draft email といった送信のモジュールもありますが、この構成では使いません。

Google スプレッドシートのアプリには、Search Rows(条件に合う行を返す)、Add a Row(表の最後に行を足す)、Update a Row(既存の行を書き換える)があります。この3つで、新規と変更の振り分けが組めます。

Microsoft 365 で運用しているなら、Power Automate で Outlook と Excel を使う形が自然です。考え方は同じで、下書きを作るところで止めることだけ守ってください。

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

Step1

処理の起点を決める

団体予約用のアドレスに新着メールが届いたときを起点にします。Make の Watch emails を使い、団体予約用のラベルが付いたメールだけを対象にします。

アドレスを分けていない場合は、Gmail のフィルタで「団体」「合宿」「研修」などを含むメールにラベルを付けます。ただし、旅行会社からは件名に手配番号しか書かれていないメールも届き、フィルタだけでは漏れます。団体予約用のアドレスを1つ作り、ホームページや旅行会社への案内をそちらへ寄せるのが確実です。

Make のシナリオは、スケジュールを設定して有効化しないと動きません。既定では15分ごとに実行される設定です。団体予約なら15分ごとで十分です。 数分の差で困る業務ではありません。営業時間外に届いた依頼は、翌朝までに下書きが並んでいる状態を目指します。

Step2

入力データを集める

データ中身取得元
メール本文依頼の文章。人数、日程、部屋の希望、食事、宴会、駐車、請求先などが書かれているGmail
件名・送信者団体名、手配番号、差出人のアドレスと署名Gmail
添付(PDF)依頼書、旅行会社の手配書、行程表Gmail の添付
添付(表計算)部屋割りの表、人数の内訳表Gmail の添付
スレッドの履歴同じ件の過去のやり取りGmail
手配表の既存行同じ団体・同じ日程の案件があるかGoogle スプレッドシート
項目の定義手配表の各列の意味と書き方、必須になる条件シナリオに持たせる設定

名簿(参加者の氏名の一覧)は、AIに渡しません。 部屋割りの表に氏名が入っていることがよくありますが、手配に必要なのは部屋ごとの人数と男女の内訳です。氏名の入った添付は、人数の集計だけを取り出すか、担当者が手で扱う経路へ回します。 扱いは第13章で書きます。

Step3

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

本文: Watch emails の出力から、本文のテキストを取ります。HTMLのメールは装飾を除いたテキストにしてから渡します。 署名と、過去のやり取りの引用部分も含まれます。引用部分は変更依頼の判断に使うので、捨てずに「引用」として区別して渡します。

PDFの添付: List email attachments で添付を取り、PDFはそのまま Claude API へ渡します。Claude API は PDF を document の内容ブロックとして受け取り、各ページを文字と画像の両方として扱うため、旅行会社の手配書のような表の多い書類も読めます。PDFはパスワードや暗号化のない標準的なものである必要があります。パスワード付きのPDFは「要確認」へ回します。

表計算の添付: 部屋割りの表や人数の内訳は、Excel や CSV で届くことが多くあります。生成AIへは表の中身をテキストにしてから渡します。 Make の中でファイルを読み取れる形に変える方法は、利用環境に応じた個別の設定が必要です。組めない場合は、表計算の添付があるメールを「添付あり・要手動」として手配表に行だけ作り、担当者が表を開いて確かめる形にします。本文だけでも、多くの項目は取れます。

手配表の既存行: Search Rows で、団体名と到着日が近い行を探します。旅行会社の依頼なら手配番号で探せます。見つかった行の内容を、変更の判断のために生成AIへ一緒に渡します。

Router で添付の種類ごとに流れを分けます。Router は条件ごとに複数の経路へ流れを分ける機能で、どの条件にも当たらないものを受ける予備の経路を設けられます。予備の経路には、画像だけの添付や、読めない形式のファイルを流し、「要確認」にします。

Step4

AIへ渡す前に整形する

  1. 引用部分の切り分け … 「〇〇様 wrote:」や「-----Original Message-----」以下を引用として分けます。引用の中の古い人数を、今回の人数として読まないためです
  2. 署名の切り分け … 署名の会社名・部署・電話番号は「依頼者の連絡先」として使います。本文の条件と混ぜません
  3. 名簿の除外 … 表計算の添付に氏名の列がある場合、氏名の列を落としてから渡します。 部屋番号・男女・人数の列だけを残します
  4. 対象外のメールの除外 … 自動返信、配信停止の案内、請求書の送付だけのメールは取り込みません。件名と送信者で先に落とします
  5. 手配表の候補行の取得 … 既存の案件が見つかった場合、その行の全項目を「現在の手配内容」として渡します
Step5

AIに処理させる

生成AI(Claude API)にさせること:

処理内容
依頼の種類の判定新規の依頼/既存の案件の変更/取り消し/問い合わせのみ(空きの確認だけ)
項目の抽出団体名、依頼者、日程、泊数、人数の内訳、部屋の希望、食事、宴会場、駐車、請求先、到着時刻、特記事項
原文の根拠抜き出した値ごとに、本文または添付のどこに書かれていたかの短い引用
不足項目の洗い出し依頼の条件から見て、手配に必要なのに書かれていない項目
読み方が割れる箇所の指摘「20名前後」「和室を中心に」など、そのまま手配に使えない書き方
変更点の整理既存の案件との差分(どの項目が、何から何へ変わるか)
返信の下書き受け付けた内容の確認と、不足項目・曖昧な箇所の質問

機械的に決めること(AIにさせない):

処理内容
泊数出発日 - 到着日
人数の合計内訳を足した値。AIが書いた合計と合わなければ「要確認」
既存の案件の検索団体名・手配番号・到着日で Search Rows
必須項目の判定項目の定義表に沿って、条件ごとに必須かどうかを決める

「原文の根拠」を必ず出させてください。 担当者が確認するとき、抜き出された「夕食18時30分」が本文のどこにあったかがすぐ分かれば、見比べは数秒で済みます。 根拠がないと、結局メールを頭から読み直すことになり、時間が減りません。

不足項目の洗い出しは、条件付きで行います。 すべての項目を毎回必須にすると、夕食なしの依頼にも「アレルギーの有無をお知らせください」と聞くことになります。依頼の中身によって、聞くべき項目が変わります。 その条件は、次の定義表として生成AIへ渡します。

項目必須になる条件
到着日・出発日常に必須
人数の総数常に必須
男女の内訳相部屋(1室に2名以上)の希望がある場合
引率・添乗員の人数と性別学校・スポーツ団体・旅行会社の場合
部屋の種別と室数常に必須(「おまかせ」と明記されていれば可)
食事の有無と回数常に必須
食事の時間夕食または朝食がある場合
アレルギー・食事の制限の有無食事がある場合
宴会場の人数・時間・形式宴会・会議の利用がある場合
交通手段と駐車台数常に必須(「公共交通」と明記されていれば駐車は不要)
バスの大きさと台数貸切バスで来る場合
到着予定時刻常に必須
請求先の宛名・送付先法人・学校・旅行会社の場合
支払い方法常に必須
当日の連絡先常に必須

この定義表は施設ごとに違います。 大型バスの駐車場がない施設なら「バスの大きさ」は常に必須です。この表を施設の担当者が作ることが、導入の最初の作業になります。

Step6

指示内容を固定する

あなたはホテルの団体予約の窓口担当です。
下のメールと添付から、団体の宿泊の依頼内容を手配表の項目ごとに抜き出し、
手配に必要なのに書かれていない項目を洗い出してください。

【厳守事項】
- 本文・添付に書かれていることだけを抜き出してください。
  書かれていない値を推測で埋めないでください。
  書かれていない項目は null にし、missing_items に入れてください。
- 引用部分(過去のやり取り)に書かれている値は、今回の依頼の値として扱わないでください。
  引用部分は、既存の案件との差分を判断するときだけ参照してください。
- 抜き出した値ごとに、evidence に項目名と原文の該当箇所(30字以内)をそのまま書き写してください。
  言い換えないでください。添付から取った場合は、添付のファイル名も書いてください。
- 「〜前後」「〜程度」「未定」「できれば」など、幅や迷いのある書き方は、
  値を1つに決めずに、ambiguous_items に原文のまま入れてください。
- 人数の合計は、内訳が書かれていれば内訳の値だけを入れてください。
  合計を自分で計算しないでください。
- 必須かどうかの判断は、下の【項目の定義】の条件に従ってください。
  条件に当たらない項目は、書かれていなくても missing_items に入れないでください。
- 氏名、生年月日、住所など個人を特定する情報が含まれていても、抜き出さないでください。
- 空室があるか、料金がいくらか、予約が取れるかについては、何も書かないでください。
  それを決めるのは担当者です。

【依頼の種類】
新規 / 変更 / 取り消し / 空きの確認のみ

【項目の定義】
{field_definitions}

【現在の手配内容(既存の案件が見つかった場合のみ)】
{existing_row}

【メールの件名・送信者・受信日時】
{mail_header}

【メール本文(今回の部分)】
{mail_body}

【メール本文(引用部分)】
{quoted_body}

【署名】
{signature}

【添付(読み取った内容とファイル名)】
{attachments}

「書かれていない値を推測で埋めない」の1行が最も重要です。 これを書かないと、朝食の時間が書かれていない依頼に「7時00分」が入ります。それらしい値が入った欄は、担当者の目に「聞いた内容」として映ります。 空欄なら聞き返せたのに、埋まっていたせいで聞かずに当日を迎えることになります。

「空室・料金・予約の可否について何も書かない」も必須です。 これがないと、返信の下書きに「ご希望の日程でご用意いたします」と入ることがあります。担当者が見落として送れば、空きを確かめる前に承諾したことになります。

返信の下書きは、抽出とは別の呼び出しで作ります。抽出結果を確かめた上で文章にするほうが、抽出の誤りが文面へそのまま移ることを防ぎやすいためです。

あなたはホテルの団体予約の窓口担当です。
下の抽出結果をもとに、依頼者への返信の下書きを作ってください。

【厳守事項】
- 最初に、受け付けた内容を箇条書きで確認してください(日程・人数・部屋・食事・宴会・駐車)。
  値が null の項目は確認の箇条書きに入れないでください。
- 次に、missing_items と ambiguous_items の項目を「恐れ入りますが、次の点をお知らせください」として
  番号付きで並べてください。1項目につき1行で、答えやすい聞き方にしてください。
  例:「夕食のお時間は、18時・18時30分・19時のいずれがご希望でしょうか」
- 空室の有無、料金、予約の成立を約束する表現を使わないでください。
  「承りました」「ご用意いたします」「確保いたしました」は使わず、
  「内容を確認のうえ、空室と料金を改めてご連絡いたします」と書いてください。
- 相手の書き方(敬語の度合い)に合わせてください。旅行会社には簡潔に、
  学校・企業の担当者には丁寧に書いてください。
- 署名は付けないでください(担当者が付けます)。

【依頼者の種類】
{requester_type}

【抽出結果】
{extraction_json}

質問は選択肢の形にすると、返事が早く返ってきます。 「夕食の時間をお知らせください」より「18時・18時30分・19時のいずれか」のほうが、相手は1語で答えられます。聞き返しが1往復で終わるかどうかが、団体予約の手配の速さを決めます。

変更依頼のときは、変更点だけを確認します。 前回と同じ内容を全部並べ直すと、相手はどこが変わったのかを探すことになります。「人数を20名から22名へ変更。これに伴い、朝食・夕食も22名分に変更してよろしいでしょうか」と、関連する項目への影響を質問にするのが実務的です。

Step7

出力形式を固定する

{
  "request_type": "新規 | 変更 | 取り消し | 空きの確認のみ",
  "requester_type": "企業 | 学校 | スポーツ団体 | 旅行会社 | その他",
  "organization": "",
  "contact": { "phone": "", "email": "", "agent_reference_no": "" },
  "check_in": "",
  "check_out": "",
  "arrival_time": "",
  "guests": { "male": null, "female": null, "escorts": null, "total_stated": null },
  "rooms": [ { "room_type": "", "count": null, "occupancy": null } ],
  "meals": [ { "date": "", "meal": "朝食 | 昼食 | 夕食", "count": null, "time": "" } ],
  "dietary_note": "",
  "banquet": { "needed": false, "headcount": null, "time": "", "style": "" },
  "transport": { "mode": "", "bus_size": "", "bus_count": null, "car_count": null },
  "billing": { "payee_name": "", "send_to": "", "payment_method": "" },
  "evidence": [ { "field": "", "source": "" } ],
  "changes": [ { "field": "", "before": "", "after": "" } ],
  "missing_items": [ { "field": "", "reason": "" } ],
  "ambiguous_items": [ { "field": "", "raw": "", "question": "" } ],
  "personal_data_detected": false,
  "unreadable_attachments": []
}

JSON Schema を指定して出力を固定します。Claude API では output_config.formatjson_schema として JSONスキーマを渡すと、応答がスキーマに沿った形になります。必須の項目が欠けたり、型が違ったりする応答が返らないため、Make 側で手配表の列へそのまま割り当てられます。 ただし、minimum maximum のような数値の制約はスキーマで指定できないため、人数が0や負の値になっていないかは Make の側で確かめます。

evidence で全項目の根拠を持たせている点が、この形式の要です。 personal_data_detected は、本文に氏名などが混ざっていたかの印で、true の行は保管の扱いを確かめます。 手配表では、各項目の隣に根拠の列を置きます。担当者は値と根拠を並べて見るだけで、メールを開かずに確かめられます。

changes は変更依頼のときだけ中身が入ります。 既存の行の値と、今回の依頼の値が違う項目を並べます。人数が変わったのに食事の数が書かれていない場合、changes に人数が入り、missing_items に「食事の数を人数に合わせてよいか」が入るのが正しい出力です。

Step8

システムへ連携する

手配表は1案件1行にします。列は次の構成です。

中身書き込む人
案件番号 / 受信日時 / メールへのリンク基本情報自動
状態取り込み済み/確認中/聞き返し中/仮押さえ/確定/取り消し自動(初期値)→人
依頼者の種類 / 団体名 / 連絡先誰からか自動
到着日 / 出発日 / 泊数 / 到着時刻日程自動
男 / 女 / 引率 / 合計人数(合計は内訳から計算)自動
部屋の希望種別と室数自動
食事 / 時間 / 食事の制限食事自動
宴会場人数・時間・形式自動
交通 / 駐車手段と台数自動
請求先 / 支払い方法請求自動
根拠各項目の原文(1セルにまとめる)自動
不足項目 / 曖昧な箇所聞き返す内容自動
変更候補変更依頼の差分(既存の値は書き換えない)自動
確認者 / 確認日誰が見たか
宿泊管理システムの予約番号仮押さえ後に入れる

「変更候補」の列を別に持つことが重要です。 変更依頼の読み取りを誤っても、元の値は残ります。担当者が変更候補を確かめてから、元の列を書き換えます。書き換えは人が行うので、誤った変更が確定した手配に入り込みません。

新規の依頼は Add a Row で行を足し、変更は Search Rows で見つけた行に Update a Row で「変更候補」の列だけを書き込みます。既存の案件が2件以上見つかった場合は、どちらにも書き込まず「要確認」にします。 同じ学校から同じ月に2回の合宿の依頼が来ることがあるためです。

返信の下書きは Create a draft で作り、元のメールのスレッドに紐づけます。件名の先頭に【下書き・未送信】のような印は付けません。 担当者が消し忘れたまま送ると、相手に届いてしまいます。代わりに、手配表の状態が「確認中」の間は送らない運用にします。

宿泊管理システムへの連携は、この構成では行いません。客室の在庫は、人が宿泊管理システムの画面で確かめて押さえます。 手配表には、押さえた後の予約番号を人が書き込みます。

Step9

人が確認する

すべての依頼を、担当者が確認します。 手配の内容は当日の食事や部屋割りに直結し、誤りを当日まで持ち越すと取り返しがつきません。

確認を速くするため、手配表を次の順に並べます。

  • 状態が「要確認」の行 … 既存の案件が複数見つかった、添付が読めない、パスワード付きのPDF。最初に見る
  • 依頼の種類が「取り消し」の行 … 仮押さえの解除が遅れると、売れたはずの部屋が空いたままになる。当日中に処理する
  • 変更候補がある行 … 変更前と変更後を並べて確かめる
  • 新規の依頼 … 値と根拠を見比べ、返信の下書きを直して送る

確認の手順は次のとおりです。

  1. 値と根拠の列を横に見て、根拠に書かれていない値がないかを確かめる
  2. 人数の合計の列が、AIが読んだ「合計」と一致しているかを見る(一致しなければ、本文の読み直しが必要
  3. 不足項目が、依頼の中身から見て妥当かを確かめる
  4. 返信の下書きを開き、約束の表現が入っていないかを確かめてから送る
Step10

例外に対処する

起きること対応
既存の案件が2件以上見つかるどちらにも書き込まず「要確認」。担当者が選ぶ
引用部分にしか条件が書かれていない引用を今回の値として読まない。本文が「前回の件でお願いします」だけなら、既存の案件の変更として扱い、変更点なしで担当者へ回す
パスワード付きのPDF読めない。「要確認」にし、担当者がパスワードを聞くか、本文で依頼内容を確かめる
画像だけの添付(写真・スキャン)Router の予備の経路へ。読み取れた範囲だけを抜き出し、unreadable_attachments に記録する
表計算の添付を読み取れない「添付あり・要手動」として行だけ作る
名簿が添付されている氏名の列を落としてから渡す。落とせない形式なら AI に渡さず、担当者が手で扱う
人数の内訳と合計が合わない合計の列に警告を出し、不足項目へ「人数の内訳の確認」を足す
「20名前後」「未定」など幅がある値を決めずに原文のまま残し、返信で選択肢の形で聞き返す
日付の年が書かれていない受信日より後の最も近い日として仮に置き、ambiguous_items に入れて返信で確かめる
空きの確認だけのメール手配表には「空きの確認のみ」として行を作る。返信の下書きは空き状況を書かず、担当者が埋める
英語など日本語以外の依頼抽出は同じ形で行う。返信の下書きは依頼と同じ言語で作り、担当者が確かめる
生成AIの呼び出しが失敗するメールに「要確認」のラベルを付け、次の実行で再処理しない。担当者が手で処理する
Step11

記録を残す

この記録は、項目の定義表と、返信の聞き方を直す材料になります。

  • 取り込んだメールごとの抽出結果(JSON)と、そのときの項目の定義表の版
  • 担当者が手配表で書き直した項目(AIの値と、直した後の値)
  • 不足項目として聞き返した内容と、相手からの回答が1往復で済んだか
  • 「要確認」になった理由の件数
  • 依頼の受信から、最初の返信を送るまでの時間

「担当者が書き直した項目」を必ず残してください。 書き直しが多い項目は、項目の定義表の書き方が曖昧か、依頼者の書き方にくせがあるかのどちらかです。旅行会社ごとの手配書の形に合わせて前処理を足すなどの手を打つ根拠になります。

04実装レベルの3段階

最小構成:メール本文をチャット画面に貼り付け、抽出と不足項目を出させる / 抽出と洗い出しのみ
半自動化:新着メールの取り込み、PDFの読み取り、手配表への書き込み、返信の下書きまで / 転記と下書き
本格構成:上記+表計算の添付の読み取り+変更依頼の差分の自動反映の候補化+受信から返信までの時間の見える化 / 手配表の更新まで

半自動化の時点で、18分が9分程度になります。 読む時間と転記の時間が大きく減るためです。本格構成では7分になりますが、減るのは表計算の添付を開く手間と、変更依頼の突き合わせの手間です。 本格構成でも、在庫の確保と返信の送信は人が行います。 自動化の範囲を広げるのは、読み取りと転記の側だけです。 宿泊管理システムに団体台帳を入れるなら、手配表の役割はそちらへ移せます。 その場合も、ばらばらの依頼文を項目にそろえる部分は、この構成のまま使えます。

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

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

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

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

AI活用について相談する

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

向いている
  1. 企業の研修・社員旅行、学校やスポーツ団体の合宿、旅行会社の手配など、団体・法人からの宿泊の依頼がメールで月100件以上届くホテル・旅館。依頼の書き方が相手ごとにばらばらで、手配表への転記と、抜けている項目の聞き返しに担当者の時間が取られている場合。聞き漏れが当日の食事や部屋割りの手違いにつながったことがある場合。
向いていない
  1. 団体の依頼が月に数件で、担当者が1件ずつ電話で聞き取れている場合。団体予約の受付を専用の予約フォームに切り替えており、必要な項目が最初からそろって届く場合。依頼の大半が旅行会社の手配システム経由で、項目が決まった形で連携されている場合。

07最小構成で試す方法

  1. 過去3か月の団体の依頼メールから30件を選ぶ(新規20件、変更10件。企業・学校・旅行会社を混ぜる)
  2. 第7章の「項目の定義」の表を、自施設の手配表の列に合わせて作る
  3. 生成AIのチャット画面に、メール本文と定義表を貼り付ける(名簿の氏名は消してから
  4. 上記のプロンプトで、抽出と不足項目の洗い出しをさせる
  5. 結果を、実際にそのとき手配表に書いた内容と見比べる

見るのは次の3点です。

見る点判断
書かれていない値が埋められていないか1件でもあれば、プロンプトの「推測で埋めない」を強める
不足項目のうち、実際に後で聞き返したものが含まれているか含まれていれば、最初の返信で聞けていたということ
不足項目に、聞く必要のないものが混ざっていないか多ければ、定義表の「必須になる条件」を見直す

2つ目が、この仕組みの価値を測る点です。 過去の案件で「当日になってアレルギーが分かった」「バスの台数を聞いていなかった」といった手違いがあれば、そのメールを入れて、不足項目として出るかを確かめてください。 出るなら、同じ手違いを防げます。

変更依頼の10件では、引用部分の扱いを見ます。 引用の中の古い人数を今回の値として取っていないかを確かめます。

ワークフローを作らずに、ここまでは試せます。所要は2〜3日です。

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

問題対策
書かれていない値がそれらしく埋まる「推測で埋めない」を指示し、根拠のない値は null にさせる
引用部分の古い人数を今回の値として取る前処理で引用を切り分け、今回の本文と別に渡す
変更依頼で元の値を上書きしてしまう「変更候補」の列を別に持ち、書き換えは人が行う
夕食なしの依頼にもアレルギーを聞く定義表に「必須になる条件」を持たせる
返信の下書きに「承りました」が入る約束の表現を禁止し、送信前に人が確かめる
同じ団体の別の案件に変更を書き込む既存の案件が2件以上なら書き込まず「要確認」
名簿の氏名が生成AIに渡る前処理で氏名の列を落とす。落とせない形式は手で扱う
年の書かれていない日付が過去になる受信日より前なら翌年とみなし、返信で確かめる
同じメールを2回取り込む「取り込み済み」のラベルで除外する
パスワード付きのPDFで止まる「要確認」へ回し、本文だけで取れる項目は取る
空きの確認だけのメールに手配の質問を返す依頼の種類で分け、空きの確認のみなら質問を出さない

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

この構成で扱うデータ: 依頼者の会社名・学校名・担当者の連絡先、団体の人数・日程・行程、食事の制限、請求先。名簿が添付されていれば、参加者の氏名も含まれます。

  1. 外部AIへの入力可否 … 依頼メールの本文と添付を外部のAIサービスへ送ることになります。自社の情報管理規程と、旅行会社との取引の取り決め(手配書の扱い)を確認してください
  2. 名簿を渡さない設計 … 手配に必要なのは部屋ごとの人数と男女の内訳です。参加者の氏名は抽出に不要です。 前処理で氏名の列を落とし、落とせない形式の添付は生成AIへ渡さずに担当者が手で扱います
  3. 食事の制限の扱い … アレルギーや食事の制限は、参加者の健康に関わる情報です。手配表には「制限あり(詳細は別途)」程度にとどめ、個人ごとの内容は調理場との間で別に管理することを検討してください
  4. 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
  5. 下書きで止めること … 返信の自動送信の経路を作らないでください。空きを確かめる前に承諾と読める文面が届くと、相手との間で予約の成立をめぐる行き違いになります
  6. 在庫と料金に触れさせないこと … 生成AIに空室や料金の情報を渡さず、判断もさせません。抽出と洗い出しだけに役割を限ります
  7. アクセス権限 … 手配表には、依頼者の連絡先と団体の行程が集まります。閲覧と編集を団体予約の担当者に限定し、宴会・調理場へは必要な列だけを共有してください
  8. 保管期間 … 抽出結果のJSONと手配表の行は、宿泊の記録と同じ保管期間に合わせ、期間を過ぎたら消します

誤りが起きた場合のリスクは、人数や食事の数の読み違いによる当日の手違い、聞き漏れ、承諾と読める返信の誤送信です。3つ目は相手との信頼に関わるため、送信前の確認を省かないでください。

10まず何から始めるか

1週目:団体の依頼を1か所に集める

団体予約用のメールアドレスを作るか、既存のアドレスにラベルを付けるフィルタを設定します。旅行会社と、よく利用する企業・学校へ、団体の依頼はこのアドレスへ送ってもらうよう案内します。 集まらないと、取り込みの漏れが残ります。

2週目:項目の定義表を作る

手配表の列を見直し、項目ごとに「必須になる条件」を書き出します。過去に当日の手違いがあった案件を思い出し、そのとき聞いていなかった項目が定義表で必須になっているかを確かめてください。ここを施設の担当者全員で作ると、書き方のばらつきも同時に直ります。

3週目:過去の30件で試す

第8章の最小構成で、過去の依頼30件を抽出させます。推測で埋められた値が1件でもあれば、プロンプトを直してから先へ進みます。 手違いのあった案件で、不足項目が出るかも確かめます。

4週目以降: Make で半自動化を作り、2か月運用します。最初はPDFの添付と本文だけを対象にし、表計算の添付は「要手動」にしておきます。 取り込みと下書きが安定してから、表計算の読み取りを足します。

2か月目以降: 担当者が書き直した項目を集計し、多い項目の定義や前処理を直します。聞き返しが2往復以上かかった依頼を見直し、最初の質問に足りなかった項目を定義表へ足してください。

6か月目以降: 受信から最初の返信までの時間と、聞き返しの往復数を、導入前と比べます。旅行会社ごとの手配書の形に合わせた前処理が積み上がると、団体の依頼は届いた時点で手配表にそろい、担当者の仕事は確認と空きの判断に絞られます。


11関連ユースケース

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

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

技術仕様確認日:2026-09-24/最終更新:2026-09-24
確認した内容情報源確認日
Make の Gmail アプリに、新着メールで動く Watch emails(フォルダ・ラベル・既読かどうか・送信者・件名・本文・添付の有無などで絞り込める)、添付の一覧を取る List email attachments、スレッドに紐づけられる下書きを作る Create a draft、ラベルを更新する Update email labels、送信の Send an email / Send a draft email があることMake: Gmail modules2026-09-24
Make の Google Sheets アプリに、条件に合う行を返す Search Rows、表の最後に行を足す Add a Row、既存の行を書き換える Update a Row などがあることMake: Google Sheets modules2026-09-24
Make の Router が、条件ごとに複数の経路へ流れを分けること。どの条件にも当たらないデータを受ける予備の経路(fallback route)を設けられることMake: Router2026-09-24
Make のシナリオのスケジュールが既定では15分ごとに実行される設定であること。シナリオは有効化しないと動かないことMake: Schedule a scenario2026-09-24
Make の Iterator が配列を個別のバンドルに分けること。メールの添付を1件ずつ扱う例と、メールアプリの添付用の Iterator があることMake: Flow control2026-09-24
Claude API で output_config.format に JSONスキーマを渡すと、応答がスキーマに沿った形に制約されること。minimum maximum などの数値の制約や、文字数の制約はスキーマで指定できないことClaude Docs: Structured outputs2026-09-24
Claude API が PDF を document の内容ブロックとして受け取り、各ページを文字と画像の両方として扱うこと。パスワードや暗号化のない標準的なPDFが対象であることClaude Docs: PDF support2026-09-24

表計算の添付を Make の中でテキストに変える方法、宿泊管理システムとの連携の可否は、利用しているプランと製品によって異なります。この部分は利用環境に応じた個別確認が必要です。 食事の制限など参加者の健康に関わる情報の扱いは、自社の個人情報の取り扱いの規程を確認してください。

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

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

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

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