宿泊予約の取消のアンケートとメッセージを取消の理由に分類し、毎月の理由別の件数と取り戻せそうな取消の一覧を作る
宿泊予約が取り消されるたびに、取消のアンケートの回答と客からのメッセージを読み、取消の理由と再予約の見込みを決まった区分で付けます。毎月の理由別の件数と、別の日やプランを案内すれば戻りそうな取消の一覧を作ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- その他/宿泊/飲食
- 対象部門
- マーケティング/営業
- 対象業務
- 分類・仕分け/集計・分析
- 主な課題
- データ分析に時間がかかる/人手が足りない/営業フォローが追いつかない
- AIで行う処理
- 分類
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 担当者が週に1回、アンケートの回答のシートを開き、自由記述を1件ずつ読む
- 理由を自分の判断で区分し、シートの空いた列に書き込む
- 代表のメールアドレスに届いた取消の連絡を探し、同じように区分して別のシートに書く
- 「別の日なら来られそう」と読めたものに印を付け、予約の台帳で宿泊日とプランを確かめる
- 印を付けたものについて、営業の担当者が別の日の案内のメールを書く
- 月末に、2つのシートの区分を数えて理由別の表を作り、月次の販売会議の資料に貼る
- 自動アンケートの回答が届くと、Make のシナリオが動く
- 自動代表のメールアドレスに届いた取消の連絡は、Gmail のフィルターで付けたラベルを Make が見て拾う
- 自動予約番号で予約の台帳を引き、宿泊日・プラン・人数・予約の経路・取消日を添える
- 自動回答またはメッセージと予約の情報を Claude に渡し、理由の区分・再予約の見込み・根拠の文を受け取る
- 自動結果を取消の記録のシートに1行で書く
- 自動見込みが「高」のものは、その日のうちに営業のチャットへ知らせる
- 人営業の担当者が通知を見て、案内を送るかを決め、送るものは自分で書く
- 自動毎月1日に、前月の取消の記録を理由別・予約の経路別に数え、月次の表を作る
- 人マーケティングの担当者が月次の表と、「その他」と「判別できない」の行を見直す
- 人区分の付け方に外れがあれば、区分の定義の表を直す
各工程の詳しい説明を読む
- 担当者が週に1回、アンケートの回答のシートを開き、自由記述を1件ずつ読む
- 理由を自分の判断で区分し、シートの空いた列に書き込む
- 代表のメールアドレスに届いた取消の連絡を探し、同じように区分して別のシートに書く
- 「別の日なら来られそう」と読めたものに印を付け、予約の台帳で宿泊日とプランを確かめる
- 印を付けたものについて、営業の担当者が別の日の案内のメールを書く
- 月末に、2つのシートの区分を数えて理由別の表を作り、月次の販売会議の資料に貼る
(a)区分が担当者で違う。 「料金が高いと思った」と「他の宿にした」が両方書かれた回答を、ある担当者は料金に、別の担当者は他の宿に入れます。区分の決まりが文書になっておらず、月ごとの比較ができません。
(b)メールの取消が抜ける。 3番の作業は、代表のメールアドレスから取消の連絡を探すところから始まります。忙しい週は省かれ、法人と団体の取消の理由が集計から落ちます。 件数の多い取消ほど理由が分からない、という状態になっています。
(c)取り戻せる客に間に合わない。 週1回まとめて読むので、「来月にずらしたい」と書いた客に案内を出すのが1週間後になります。その間に客は別の宿を予約しています。
(d)月末の集計に半日かかる。 2つのシートの区分の書き方がそろっていないので、数える前に表記を直す作業が要ります。
- 【自動】 アンケートの回答が届くと、Make のシナリオが動く
- 【自動】 代表のメールアドレスに届いた取消の連絡は、Gmail のフィルターで付けたラベルを Make が見て拾う
- 【自動】 予約番号で予約の台帳を引き、宿泊日・プラン・人数・予約の経路・取消日を添える
- 【自動】 回答またはメッセージと予約の情報を Claude に渡し、理由の区分・再予約の見込み・根拠の文を受け取る
- 【自動】 結果を取消の記録のシートに1行で書く
- 【自動】 見込みが「高」のものは、その日のうちに営業のチャットへ知らせる
- 【人】 営業の担当者が通知を見て、案内を送るかを決め、送るものは自分で書く
- 【自動】 毎月1日に、前月の取消の記録を理由別・予約の経路別に数え、月次の表を作る
- 【人】 マーケティングの担当者が月次の表と、「その他」と「判別できない」の行を見直す
- 【人】 区分の付け方に外れがあれば、区分の定義の表を直す
6番目で、案内が1週間後から当日になります。 「来月にずらしたい」と書いた客に、その日のうちに別の日の空室を案内できます。取り戻せるかどうかは、案内の早さでほぼ決まります。
7番目の案内は、人が書いて人が送ります。 通知には取消の理由と客の書いた文がそのまま載っています。同じ文面を自動で送ると、客の事情に合わない案内が混ざります。
02今回想定するシステム構成
取消のアンケート(Google フォーム:予約番号は事前入力) 代表のメールアドレス(Gmail:フィルターで「取消」ラベル) ▼【トリガー】Watch Responses / Watch emails(15分ごと) Make のシナリオ ├──▶ 前処理(引用・署名の除去、予約番号の取り出し) ├──▶ Google Sheets(Search Rows)で予約の台帳を引く ▼ Claude API(Make an API Call で Messages API を呼ぶ) │ 主な理由・副次の理由・再予約の見込み・根拠の文 │ 構造化出力で決まった形のJSON ▼ Google Sheets(Add a Row)で取消の記録に1行 ▼ Router ├─ 見込み「高」→ 営業のチャットへ通知 ├─ 判別できない・予約が引けない → 見直しの一覧 └─ Fallback → 記録だけ ▼【毎月1日】別のシナリオ Google Sheets(Search Rows)で前月分 → Array aggregator(Group by 理由) → 月次の表のシートへ書き出す
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make | Zapier、n8n、Power Automate |
| 生成AI | Claude API(取消の理由と再予約の見込みの分類) | OpenAI API、Gemini API |
| 台帳 | Google スプレッドシート(予約の台帳、取消の記録、区分の定義、月次の表) | Airtable |
| 受信 | Gmail(代表のメールアドレス)、Google フォーム(取消のアンケート) | Outlook、Microsoft Forms |
| 通知 | 営業のチャット | メール |
新しく足すのは、Make のシナリオ2本と、取消の記録・区分の定義・月次の表の3つのシートだけです。 予約システムには書き込みません。最初の準備作業は、取消の理由の区分の定義を、例文つきで1枚の表にすることです。
アンケートは、Make の Google Forms アプリで拾います。 Response のグループに Watch Responses、List Responses、Get a Response があります。メールは Gmail の Watch emails で拾います。 見るラベルを指定でき、既読・未読での絞り込みと、Gmail の検索の書き方での絞り込み(Gmail filter)ができます。1回の実行で扱う件数の上限(Limit)は500以下です。
Claude は、Make の Anthropic Claude アプリの Make an API Call で Messages API を呼び、output_config.format に JSON スキーマを渡します。 アプリの説明に構造化出力の設定が見当たらないためです。構造化出力は制約付きのデコードでスキーマに沿った応答を返すとされ、区分の値が決まった語以外になることを防げます。
振り分けは Router で組みます。 Router の経路は並行ではなく順に処理され、どの経路の条件にも合わないデータはフォールバックの経路が処理します。
03どうやって実装するのか
処理の起点を決める
入口は2つあります。 アンケートの回答は Google Forms の Watch Responses で、取消の連絡のメールは Gmail の Watch emails で拾います。どちらも15分ごとに動かし、同じ後段の処理に流します。
メールの入口は、Gmail のフィルターで先に絞ります。 代表のメールアドレスには予約・問い合わせ・営業のメールが混ざって届きます。件名や本文に「キャンセル」「取消」「取り消し」を含むものに Gmail の側で「取消」のラベルを付け、Make はそのラベルの未読だけを見ます。 処理が終わったら、Update email labels で「取消_処理済み」のラベルに付け替えます。
予約サイトから届く取消の通知メールは拾いません。 通知には客の理由が書かれておらず、分類する材料がありません。客が自分で書いた文があるものだけが対象です。
月次の集計は、別のシナリオで毎月1日の朝に動かします。 Make のスケジュールの「月次」で日と時刻を指定します。1件ずつの分類と同じシナリオに入れないのは、失敗したときにどちらが止まったか分かるようにするためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| アンケートの回答 | 予約番号、選択式の理由、自由記述、「別の日の案内を希望するか」の選択 | Google フォーム |
| 取消の連絡のメール | 送信元、件名、本文、受信日時 | Gmail(「取消」ラベル) |
| 予約の情報 | 宿泊日、泊数、プラン、部屋タイプ、人数、予約の経路、予約日、取消日 | 予約の台帳(Google スプレッドシート) |
| 区分の定義 | 理由の区分ごとの説明と例文、見込みの区分ごとの説明と例文 | Google スプレッドシート |
アンケートに「別の日の案内を希望するか」の選択を足すのが、最初の大事な変更です。 案内を送ってよいかを客に聞いておけば、見込みが「高」でも希望しない客には送りません。 案内を送る根拠が、客自身の選択になります。
予約の情報のうち、宿泊日と予約日の差(リードタイム)と、取消日と宿泊日の差が効きます。 3か月前に予約して2週間前に取り消した客と、前日に取り消した客では、同じ「予定の変更」でも事情が違います。 区分はAIが付けますが、この2つの差は Make で計算してから渡します。
区分の定義は、例文つきで持ちます。 区分の名前だけを渡すと、AIは名前から意味を推測します。「料金」と「他の宿」の境目のように迷いやすい区分は、例文で線を引きます。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| アンケートの回答 | Google フォーム | Watch Responses の出力 |
| 取消のメール | Gmail | Watch emails(「取消」ラベル、未読、Limit は50) |
| 予約の情報 | 予約の台帳 | Search Rows で予約番号を引く |
| 区分の定義 | 区分の定義のシート | シナリオの最初に読み、全件で使い回す |
| 前月の取消の記録 | 取消の記録のシート | 月次のシナリオで Search Rows(取消日で前月分) |
予約番号は、アンケートなら事前入力の欄から、メールなら本文と件名から取り出します。 メールでは「予約番号」「Reservation No.」「確認番号」のように書き方がばらばらです。Make の正規表現で英数字の並びを拾い、予約の台帳を引いて当たったものだけを予約番号とします。 当たらなければ、送信元のメールアドレスと宿泊日らしい日付で台帳を引き直します。
予約の台帳は、予約システムから毎日書き出したものを使います。 予約システムに直接つながず、書き出しのシートを読むだけにします。取消の直後で台帳にまだ載っていない予約は、翌朝の書き出しの後にもう一度引きます。
AIへ渡す前に整形する
- 引用と署名の除去 … メールの返信の引用部分(「>」で始まる行、「-----Original Message-----」の後)と署名を落とします
- 予約番号の取り出しと照合 … 上の方法で取り、台帳で当たるかを確かめます
- 日数の計算 … 予約日から宿泊日までの日数と、取消日から宿泊日までの日数を Make で計算します
- アンケートとメールの重複の確認 … 同じ予約番号でアンケートとメールの両方があれば、1件にまとめて両方の文を渡します
- 個人の情報の除去 … 氏名、電話番号、メールアドレスはAIに渡しません。予約番号と、予約の情報のうち分類に要る項目だけを渡します
- 言語の確認 … 外国語のメッセージもそのまま渡します。根拠の文は原文のまま返させ、日本語の要約を別に付けさせます
4番目を省くと、同じ取消が2件に数えられます。 法人の担当者がメールで連絡し、出張者本人がアンケートに答える、ということがあります。
5番目は、分類の精度に影響しません。 理由の判断に氏名は要らず、送らないほうが第13章の扱いが簡単になります。
AIに処理させる
させるのは、1件ごとに理由の区分と再予約の見込みを付け、根拠の文を書き出すことです。
| 付けるもの | 値 |
|---|---|
| 主な理由 | 予定の変更/料金/他の宿に決めた/天候・交通/体調・家族の事情/人数・旅程の変更/重複予約・誤予約/施設・プランの条件/判別できない |
| 副次の理由 | 同じ区分から0〜2個 |
| 再予約の見込み | 高(別の日・別のプランなら来る意思が読める)/中(条件しだい)/低(旅行そのものが無くなった)/案内の対象外 |
| 根拠の文 | 理由と見込みを決めた客の文を、原文のまま |
| 客が求めていること | 別の日の空室、安いプラン、取消料の確認など。書かれていなければ空 |
「案内の対象外」を見込みの一つとして持たせるのが要点です。 体調・家族の事情の取消は、理由としては数えますが、見込みは必ず「案内の対象外」にします。 これは指示で決めるだけでなく、Make の側でも「主な理由が体調・家族の事情なら通知しない」という条件を Router に置きます。AIの判断と規則の両方で外します。
| させないこと | 理由 |
|---|---|
| 案内の文面を作る | 客の事情に合わない文が混ざる。人が書く |
| 取消料の要否の判断 | 宿泊約款と予約の条件で決まる。予約の担当が見る |
| 書かれていない理由の推測 | 「たぶん料金」と付けると集計が歪む |
| 件数の集計 | 合計が合わない表になる。Make とシートで数える |
3行目を守らないと、月次の表が意味を失います。 「都合により」とだけ書かれた取消を、AIは予約の情報から推測して「料金」や「他の宿」に入れたがります。書かれていなければ「判別できない」に入れ、その件数自体を月次の表に出します。 判別できない取消が多いこと自体が、アンケートの聞き方を直す材料です。
指示内容を固定する
あなたはホテルの営業部で、宿泊予約の取消の理由を整理する担当です。
客が書いた文と予約の情報を見て、取消の理由と再予約の見込みを付けてください。
【付けるもの】
1. primary_reason:主な理由を、区分の定義から1つ
2. secondary_reasons:ほかに書かれている理由を、区分の定義から0〜2個
3. rebook_potential:再予約の見込みを high / medium / low / not_applicable から1つ
4. evidence:理由と見込みを決めた客の文を、原文のまま抜き出す
5. guest_request:客が求めていること(書かれていなければ空)
6. summary_ja:客の文の日本語の要約を1文で
【厳守事項】
- 客の文に書かれている理由だけで決めてください。
予約の情報(料金・プラン・日数)から理由を推測しないでください。
- 理由が書かれていない、または「都合により」「事情により」だけの場合は、
primary_reason を undetermined にしてください。
- 体調、病気、けが、妊娠、家族の不幸・介護に関わる取消は、
primary_reason を health_family にし、rebook_potential は必ず
not_applicable にしてください。
- rebook_potential を high にするのは、別の日・別のプラン・後日の宿泊の
意思が客の文に書かれている場合だけです。
- 「別の日の案内を希望しない」と答えた客は、high にせず medium 以下にしてください。
- evidence は客の文をそのまま写してください。言い換えないでください。
- 案内の文面や、取消料についての意見を書かないでください。
【区分の定義と例文】{reason_definitions}
【予約の情報】宿泊日 {stay_date}/泊数 {nights}/プラン {plan}/人数 {guests}/
経路 {channel}/予約から宿泊まで {lead_days}日/取消から宿泊まで {cancel_lead_days}日
【案内の希望】{wants_offer}
【客の文】{guest_text}
「予約の情報から理由を推測しない」を最初に書くのは、ここが最もずれやすいからです。 料金の高いプランの取消を見ると、AIは「料金」を選びがちです。予約の情報は、見込みの判断の材料として渡しているだけだと明記します。
体調・家族の事情の扱いを、区分の定義とは別に指示の本文に書いています。 定義の表だけに書くと、他の理由と併記された文で見落とされます。「必ず」と書く項目は指示の本文に置きます。
出力形式を固定する
次の形のJSONで受け取ります。
{
"reservation_id": "",
"source": "survey | email | both",
"primary_reason": "schedule_change | price | chose_other_hotel | weather_transport | health_family | party_itinerary_change | duplicate_mistake | facility_plan_terms | undetermined",
"secondary_reasons": [],
"rebook_potential": "high | medium | low | not_applicable",
"evidence": [""],
"guest_request": "",
"summary_ja": ""
}
1つ目の理由は、月次の集計を Make の集約だけで書けることです。 primary_reason の値が決まっているので、Array aggregator の Group by に指定すれば、区分の値ごとに1つのまとまりが出ます。 自由文の理由では、表記のゆれで同じ理由が別の行に分かれます。
2つ目は、通知の条件を規則で書けることです。 rebook_potential が high で、primary_reason が health_family ではないものだけを Router の経路で通知に回します。AIが誤って high を付けても、規則の側で止まります。
3つ目は、evidence で通知を読む人が判断できることです。 営業の担当者は、通知に載った客の文を読んで案内を書くかを決めます。AIの要約ではなく客の言葉で判断します。
営業のチャットへの通知と、月次の表は次の形にします。
【取り戻せそうな取消】予約番号 R-20261008-0123
宿泊日 11/14(金)1泊・2名・朝食付き・自社サイト/取消は宿泊の37日前
理由:予定の変更(副:なし)
客の文:「仕事の都合で11月は難しくなりました。12月の週末で空きがあればまた予約したいです」
案内の希望:あり
→ 取消の記録の該当行へのリンク
【10月の取消の理由】(取消の記録 312件)
| 理由 | 件数 | 自社サイト | 予約サイト | 電話・メール |
| 予定の変更 | … | … | … | … |
| 判別できない | … | … | … | … | システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 取消のアンケート | Google Forms の Watch Responses | 回答を拾う |
| 代表のメールアドレス | Gmail の Watch emails / Update email labels | 取消の連絡を拾い、処理済みのラベルに替える |
| 予約の台帳 | Google Sheets の Search Rows | 予約番号で予約の情報を引く |
| Claude API | Anthropic Claude の Make an API Call | 理由と見込みを構造化出力で受ける |
| 取消の記録・月次の表 | Google Sheets の Add a Row / Search Rows | 1件ずつの記録と月次の集計 |
| 営業のチャット | 通知のモジュール | 見込み「高」の取消を知らせる |
予約システムには書き込みません。 取消の手続きそのものは予約システムで終わっており、この構成は理由を記録するだけです。返金や取消料の扱いには触れません。
客へのメールは、この構成から送りません。 Gmail の下書きも作りません。案内は営業の担当者が自分のメールで書いて送ります。
人が確認する
1件ずつの分類は、人が確かめずに記録します。 分類の結果が直接客に届くことはなく、月次の表の材料になるだけだからです。その代わり、確認は3つの場面に置きます。
- 通知を受けたとき(毎日) … 営業の担当者が客の文を読み、案内を送るかを決めます。AIの見込みが「高」でも、文を読んで違うと思えば送りません。 送らなかったものは記録に「送らず」と書きます
- 月次の表を出す前(月1回) … マーケティングの担当者が「判別できない」と「その他」に近い行を流し見し、区分の定義に足すべき型が無いかを見ます
- 区分の定義の見直し(月1回) … 2番目で見つかった型を例文として定義の表に足します
1番目で「送らず」を記録するのが要点です。 見込みが「高」なのに送らなかった件が多いなら、AIの「高」の付け方が営業の感覚と合っていません。 指示か定義を直す材料になります。
月次の表は、会議に出す前に件数の合計を取消の記録の行数と照らします。 合わなければ集計のシナリオが一部の行を落としています。
例外に対処する
| 起きること | 対応 |
|---|---|
| 予約番号が取り出せない・台帳で引けない | 送信元と日付で引き直す。それでも引けなければ見直しの一覧へ |
| 取消の直後で台帳にまだ無い | 翌朝の書き出しの後に、もう一度引く |
| 同じ予約のアンケートとメールの両方がある | 1件にまとめ、source を both にする |
| 取消ではなく日程の変更の依頼だった | 分類せず、予約の担当へ回す。取消の件数に入れない |
| 客の文が空 | 分類せず、選択式の理由だけを記録する |
| 外国語のメッセージ | そのまま分類し、summary_ja を付ける |
構造化出力が返らない(refusal や上限で止まった) | 見直しの一覧に入れ、担当者が手で区分を付ける |
| 苦情を含む取消 | 分類に加えて、支配人への連絡の一覧にも入れる |
4行目は、メールの入口で毎月何件か起きます。 「11月14日の予約を12月に変えたい」は取消ではありません。予約の担当が手続きすべき依頼なので、分類の前に人へ回します。 指示に「取消か日程の変更の依頼かを先に判定させる」項目を足しておくと拾えます。
構造化出力は、refusal や max_tokens で止まったときにはスキーマに沿わないことがあるとされています。Router のフォールバックで拾い、見直しの一覧に入れます。
記録を残す
- 取消の記録(全件) … 予約番号、入口(アンケート・メール・両方)、予約の情報、
primary_reason、secondary_reasons、rebook_potential、evidence、summary_ja - 通知と対応の記録 … 通知した日時、案内を送ったか、送らなかった理由
- 再予約の結果 … 案内を送った客が再予約したか(予約の台帳で予約番号の後に同じ客の予約があるかを月次で見る)
- 区分の定義の変更履歴 … いつ、どの例文を足したか
- 月次の表 … 月ごとに別のシートとして残す
3つ目の再予約の結果は、この構成の効果を確かめる唯一の材料です。 案内を送った件数と、そのうち再予約に至った件数を毎月数えます。数え方を決めずに始めると、効果があったのかどうかが分かりません。
取消の記録には客の書いた文が残ります。 保存の期間を決め、期間を過ぎた行の evidence は消します。
04実装レベルの3段階
最小構成では、件数の多い月に追いつきません。 区分の定義を固めるための段階です。 半自動化で、1件5分が1分になります。 本記事の想定はこの段階です。残るのは、通知を読んで案内を送るかを決める時間と、月1回の見直しです。本格構成は、案内を3か月続けて送った後に、効果を数えたくなってからで足ります。
05工数削減シミュレーション
導入後 300件 × 1分 ÷ 60 = 5 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 客室が100室を超え、取消が月に数百件あるホテル・旅館。取消のときにアンケートを送っているが、自由記述を読んで理由を数える作業が追いつかず、毎月の会議で「なぜ取り消されたか」が感覚でしか語られていない場合。日程の変更で取り消した客に別の日を案内すれば戻ってくるはずなのに、誰が該当するかを拾えていない場合。Make と Google のフォーム・スプレッドシート・Gmail を使っている場合。
- 取消が月に数十件で、担当者が全件を読んで足りる場合。取消の理由を予約サイトの選択式の項目だけで集計できていて、自由記述が少ない場合。取消した客への連絡を、利用目的の範囲や本人の同意の点で整理できていない場合。なお、料金の改定、プランの見直し、取消料の扱いなどの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の取消のアンケートの回答と、代表のメールアドレスに届いた取消の連絡から、合わせて50件を選ぶ(氏名・電話番号・メールアドレスを消してから使う)
- 理由の区分の定義を例文つきで作る(最初は8区分程度)
- 50件を手元のAIサービスに貼り付け、第7章の指示で理由と見込みを付けさせる
- 同じ50件に、担当者が手で区分を付ける
- AIの区分と担当者の区分を突き合わせる
| 出てきた内容 | 判断 |
|---|---|
| 主な理由の大半が担当者と一致し、体調・家族の事情が全部「案内の対象外」になった | Make のシナリオに進む |
| 「料金」と「他の宿」で一致しない | 定義の例文で線を引き直す。構成は有効 |
| 書かれていない理由を推測して付けた | 指示の書き方で直る |
2行目は、担当者どうしでも一致しない区分です。 AIと担当者がずれる区分は、たいてい担当者の間でもずれています。ここで定義を決めることが、月ごとの比較ができる表の前提になります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 書かれていない理由を予約の情報から推測する | 指示の最初に「推測しない」と書き、「判別できない」を区分として持つ |
| 体調・家族の事情の客に案内が届く | AIの指示と Router の規則の両方で外す |
| 同じ取消が2件に数えられる | 予約番号でアンケートとメールをまとめる |
| 日程の変更の依頼が取消に数えられる | 分類の前に、取消か依頼かを見分ける |
| 「料金」と「他の宿」がぶれる | 定義に例文を足して線を引く |
| 予約番号が引けないメールが多い | 送信元と日付で引き直す。取消の確認メールの件名に予約番号を入れる |
| 月次の表の合計が記録と合わない | 会議の前に行数と照らす |
| 案内を自動で送りたくなる | 人が書いて送る。 客の事情に合わない文が混ざる |
| 再予約の効果が分からない | 案内を送った件数と再予約の件数を最初から記録する |
| 区分を月の途中で変える | 変えるのは月初めだけにし、変更履歴を残す |
上の2行が、この構成の信頼を決めます。 1行目は月次の表の正しさ、2行目は宿の印象に関わります。2行目を規則でも止めているのは、一度でも起きると取り返しがつかないからです。
下から2行目は、始めてから気づいても遅い項目です。 効果を数える仕組みは、案内を送り始める前に決めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 予約番号、宿泊日・プラン・人数などの予約の情報、客が書いた取消の理由(体調・家族の事情を含むことがある)、送信元のメールアドレスです。
- 体調・家族の事情は、とくに慎重に扱う … 取消の理由に病気や家族の不幸が書かれることがあります。記録には区分だけでなく客の文も残るので、取消の記録のシートを見られる人を営業部の担当者に限ります。 保存の期間を決め、過ぎたら客の文を消します
- AIに渡すのは分類に要る項目だけ … 氏名、電話番号、メールアドレスは渡しません。予約番号と、予約の情報のうち分類に要る項目、客の文だけです
- 案内は客の選択と利用目的の範囲で送る … 取消した客への案内は、アンケートで案内を希望した客に限ります。 予約のときに示した個人情報の利用目的に照らし、案内を送ってよいかを先に確かめてください
- 案内の文面は人が書く … この構成は、送る相手の候補を出すところまでです。自動で送る形にしないでください
- 月次の表には客の文を載せない … 会議の資料には件数と区分だけを載せます。客の文を見せるときは、予約番号と個人が分からない形に整えます
誤りが起きた場合のリスクは、案内を送ってはいけない客に送ってしまうことと、推測で付けた区分で月次の表が歪み、誤った施策につながることの2つです。 前者は区分と規則の二重の外しで、後者は「判別できない」を区分として持つことで防ぎます。
10まず何から始めるか
1週目:区分の定義を決め、アンケートに1問足す
営業とマーケティングで、取消の理由の区分を8〜9個に決め、それぞれに例文を3つずつ付けます。体調・家族の事情を独立した区分にし、案内の対象外と決めます。 あわせて、取消のアンケートに「別の日の案内を希望するか」の選択を足します。
2週目:50件で試す
先月の回答とメールから50件を選び、個人の情報を消してから手元のAIサービスで分類させます。担当者の区分と突き合わせ、ずれた区分の例文を直します。
3週目:アンケートから記録までをつなぐ
Make でアンケートの回答を拾い、予約の台帳を引いて分類し、取消の記録に書くところまでを作ります。この週は通知を出さず、記録だけを見ます。
4週目:メールの入口と通知を足す
Gmail のフィルターとラベルを作り、メールの入口を足します。見込み「高」の通知を営業のチャットに出し始めます。通知を受けた担当者に、送ったか送らなかったかを記録してもらいます。
2か月目: 月次の集計のシナリオを足し、最初の月次の表を会議に出します。3か月目以降: 案内を送った件数と再予約の件数を数え、「判別できない」の件数を見てアンケートの聞き方を直します。月次の表を見て施策を決める会議が、感覚ではなく件数で話せるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Google Forms のアプリに Watch Responses、List Responses、Get a Response があること | Make: Google Forms | 2026-10-08 |
| Gmail の Watch emails で見るラベル、既読・未読の条件、Gmail filter による絞り込みを指定でき、1回の実行の上限(Limit)が500以下であること。Update email labels でラベルを更新できること | Make: Gmail modules | 2026-10-08 |
| Anthropic Claude のアプリに Create a Prompt と Make an API Call があり、接続に API キーを使うこと | Make: Anthropic Claude | 2026-10-08 |
構造化出力を output_config.format に type: "json_schema" で渡し、制約付きのデコードでスキーマに沿った応答が返ること。refusal や max_tokens で止まったときはスキーマに沿わないことがあること | Claude Docs: Structured outputs | 2026-10-08 |
| Google Sheets のモジュールに Search Rows と Add a Row があること | Make: Google Sheets modules | 2026-10-08 |
| Router の経路が並行ではなく順に処理され、どの経路の条件にも合わないデータをフォールバックの経路が処理すること | Make Help: Router | 2026-10-08 |
| 集約が複数のバンドルを1つにまとめ、Group by の式の値ごとに Key と Array を持つバンドルを出すこと | Make Help: Aggregator | 2026-10-08 |
| スケジュールに一定間隔・毎日・平日・週次・月次・日付指定・オンデマンドがあること | Make Help: Schedule a scenario | 2026-10-08 |
取消した客への案内を送ってよいかは、自社の個人情報の利用目的と、客の同意の取り方に照らして判断してください。 本記事はその判断を扱っていません。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0928)についてのご相談はこちらから。
