ホテルでリピーターの到着前に、過去の滞在・要望・苦情・アレルギーの記録を氏名の表記ゆれも含めて探し、その日の申し送りにまとめる
翌日に到着する宿泊客ごとに、氏名の表記ゆれも含めて過去の滞在・要望・苦情・アレルギーの記録を探し、部署ごとの申し送りにまとめます。同じ人かどうかの候補には、どの記録が何で一致したかを添えます。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- その他/宿泊/飲食
- 対象部門
- カスタマーサポート
- 対象業務
- 情報検索/要約
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮/機会損失防止
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 前日の午後、担当者が翌日の到着予定の一覧を宿泊の管理システムから出す
- 予約ごとに、氏名・電話番号で顧客のプロフィールを探す。見つからなければ、ふりがなやローマ字を変えて探し直す
- 見つかったプロフィールの滞在の履歴と備考を読む
- 苦情の対応記録を氏名で検索し、該当があれば経緯を読む
- レストランの予約台帳でアレルギーの記録を探す
- 部署(フロント、客室、レストラン)ごとに申し送りを書き、朝の打ち合わせで読み上げる
- 自動宿泊の管理システム・苦情の対応記録・レストランの予約台帳から、前日までに増えた記録を取り出す
- 自動氏名を、漢字・ふりがな(カタカナにそろえる)・ローマ字(小文字にそろえる)の3つの形に分けて持たせ、電話番号とメールアドレスを正規化する
- 自動Claude が、苦情とアレルギーの記録の文から、部署・要点・対応の結果を取り出す
- 自動記録を検索基盤に登録する
- 自動翌日の到着予定の一覧を取り、予約ごとに氏名・電話・メールで過去の記録を探す
- 自動一致の種類(電話の一致、メールの一致、ふりがなの一致、ローマ字の近い一致)ごとに、同じ人の候補を並べる
- 人担当者が候補を確かめ、同じ人だと判断したものに印を付ける(電話・メールが一致した候補は確認を軽くする)
- 自動Claude が、印の付いた記録だけを使って部署ごとの申し送りの案を作る。どの文がどの記録から来たかの引用を付ける
- 人担当者が申し送りの案を読み、直して確定する。朝の打ち合わせで使う
各工程の詳しい説明を読む
- 前日の午後、担当者が翌日の到着予定の一覧を宿泊の管理システムから出す
- 予約ごとに、氏名・電話番号で顧客のプロフィールを探す。見つからなければ、ふりがなやローマ字を変えて探し直す
- 見つかったプロフィールの滞在の履歴と備考を読む
- 苦情の対応記録を氏名で検索し、該当があれば経緯を読む
- レストランの予約台帳でアレルギーの記録を探す
- 部署(フロント、客室、レストラン)ごとに申し送りを書き、朝の打ち合わせで読み上げる
(a)表記の違いで見つからない。 2番目で、漢字が1文字違う、ローマ字の綴りが違う、姓と名の順が逆、というだけで検索に当たりません。 何通りか試して見つからなければ「初めてのお客様」として扱われます。
(b)台帳が3つに分かれている。 宿泊の管理システムで見つかっても、苦情とアレルギーの記録は別の台帳で、氏名で探し直しになります。 表計算の対応記録は書く人によって氏名の書き方がばらばらで、さらに見つかりません。
(c)ベテランの記憶に頼る。 「この方は前回、隣の部屋の音で部屋を替えた」といったことは、記録より先にベテランの頭の中にあります。 その人がいない日は、同じ部屋の並びに案内してしまいます。
(d)見つけても書き写すのに時間がかかる。 3つの台帳から拾った内容を、部署ごとに書き分けます。長い苦情の経緯を、客室の担当に要る部分だけに縮める作業が、1件ごとに発生します。
取り込み(毎晩)
- 【自動】 宿泊の管理システム・苦情の対応記録・レストランの予約台帳から、前日までに増えた記録を取り出す
- 【自動】 氏名を、漢字・ふりがな(カタカナにそろえる)・ローマ字(小文字にそろえる)の3つの形に分けて持たせ、電話番号とメールアドレスを正規化する
- 【自動】 Claude が、苦情とアレルギーの記録の文から、部署・要点・対応の結果を取り出す
- 【自動】 記録を検索基盤に登録する
到着前(前日の15時)
- 【自動】 翌日の到着予定の一覧を取り、予約ごとに氏名・電話・メールで過去の記録を探す
- 【自動】 一致の種類(電話の一致、メールの一致、ふりがなの一致、ローマ字の近い一致)ごとに、同じ人の候補を並べる
- 【人】 担当者が候補を確かめ、同じ人だと判断したものに印を付ける(電話・メールが一致した候補は確認を軽くする)
- 【自動】 Claude が、印の付いた記録だけを使って部署ごとの申し送りの案を作る。どの文がどの記録から来たかの引用を付ける
- 【人】 担当者が申し送りの案を読み、直して確定する。朝の打ち合わせで使う
7番目が、この設計の分かれ目です。 名前だけの一致は、同姓同名の別人かもしれません。 候補を自動で結びつけると、別人の苦情やアレルギーの記録が申し送りに載ります。結びつけるのは人で、結びつけた記録は次回から強い手がかりとして使います。
8番目で印の付いた記録だけを使うのも、意図してのことです。 候補のうち確かめていないものまで要約に入れると、誰の記録か分からない文が申し送りに混ざります。
02今回想定するシステム構成
【取り込み】宿泊の管理システム/苦情の対応記録/レストランの予約台帳 ▼【トリガー】毎晩の定時 AWS Lambda ── 氏名を漢字・ふりがな・ローマ字に分け、電話・メールを正規化 ▼ Claude(Amazon Bedrock)── 苦情・アレルギーの記録から部署・要点・対応の結果を取り出す ▼ Amazon OpenSearch Service(宿泊客の記録の索引) ├─ name_kana:ICU の変換でひらがなをカタカナに、cjk_width で半角を全角に ├─ name_latin:ICU の変換でローマ字に、小文字にそろえる └─ phone/email:keyword 【到着前】翌日の到着予定の一覧(前日15時) ▼ Amazon OpenSearch Service ── 電話・メールの一致+ふりがなの一致+ローマ字の近い一致(fuzziness) ▼【人】担当者が同じ人の候補を確かめる Claude(Amazon Bedrock)── 確かめた記録を検索結果のブロックで渡し、引用付きで申し送りの案 ▼【人】担当者が確定 → 朝の打ち合わせ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(ICU と kuromoji の解析、fuzziness、細かなアクセス制御) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude(Amazon Bedrock。記録の要点の取り出しと、引用付きの申し送りの案) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込み、到着前の検索、申し送りの書き出し) | AWS Step Functions |
| 保管 | Amazon S3(取り込んだ記録の写しと、申し送りの記録) | ― |
| 宿泊管理 | 既存の宿泊の管理システム | ― |
宿泊の管理システムには、書き込みません。 プロフィールの統合(名寄せ)も、この構成からは行いません。同じ人だと確かめた結びつきは、検索基盤の側に持ちます。 宿泊の管理システムの統合は、確かめた結びつきがたまってから、管理システムの手順で別に行います。
表記ゆれを吸収するのは、OpenSearch の解析の機能です。 Amazon OpenSearch Service では、日本語(kuromoji)の解析と ICU の解析のプラグインがすべてのドメインに入っています。 追加の作業なしに、索引の設定だけで使えます。
ICU の変換(icu_transform)は、文字の種類を写し替えるフィルタです。 公式のドキュメントでは、Hiragana-Katakana(ひらがなをカタカナに)や Any-Latin(どの文字もローマ字に)などの変換を、セミコロンでつないで重ねられるとされています。NFD; [:Nonspacing Mark:] Remove; NFC を足すと、長音記号の付いたローマ字(ō など)から記号を外せます。
cjk_width は、半角カタカナを全角に、全角の英数字を半角にそろえるフィルタです。 旅行会社の団体の名簿で届く「ワタナベ」と、自社サイトの「ワタナベ」が同じ語になります。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは毎晩の定時です。 宿泊の管理システムからは前日までのチェックアウトの記録と顧客のプロフィールの変更を、苦情の対応記録とレストランの予約台帳からは前日に追加・更新された行を取り出します。苦情の記録は対応が終わってから書き足されることが多いので、更新された行も取り直します。
検索は、到着前日の15時に動かします。 この時刻なら、翌日の到着予定がほぼ出そろい、担当者が候補を確かめて申し送りを確定するまでの時間が夕方までに残ります。当日の朝に入った予約は、10時にもう一度動かして拾います。
過去5年分の記録は、別に一括で取り込みます。 このときは結びつきの確認が取れていないので、どの記録も「未確認」の状態から始めます。 一括の取り込みで名寄せをしようとしないでください。確認は、実際に到着する人の分から順に積み上がります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 予約 | 予約番号、到着日、氏名(漢字/ふりがな/ローマ字のうち入っているもの)、電話、メール、予約の経路 | 宿泊の管理システム |
| 滞在の履歴 | 過去の宿泊日、客室のタイプと階、備考、利用した施設 | 宿泊の管理システム |
| 苦情とご意見の記録 | 日付、内容、対応した部署、対応の結果、再発防止のメモ | 苦情の対応記録 |
| アレルギーと好み | 日付、申し出の内容、レストランの対応 | レストランの予約台帳 |
| 確かめた結びつき | 同じ人だと担当者が判断した記録の組と、判断の日付 | 検索基盤(この構成で作る) |
質を決めるのは、苦情の対応記録の氏名の書き方です。 表計算に「渡辺様(1205号室)」とだけ書かれていると、氏名の手がかりが漢字だけになり、部屋番号と日付から予約に結び直す必要があります。取り込みの段で、日付と部屋番号から予約番号を引き、予約の氏名・電話・メールを記録に付けます。
アレルギーの記録は、申し出の日付を必ず持たせます。 何年も前の申し出が今も同じとは限りません。申し送りでは「いつの申し出か」を必ず書き、本人への確認を前提にします。
データの取得方法を決める
宿泊の管理システムからは、予約と顧客のプロフィールを API か定時の書き出しで取ります。苦情の対応記録とレストランの予約台帳は、共有の場所に置かれた表計算のファイルを毎晩読むだけで足ります。
索引の項目は、次のように持たせます。
| 項目 | 型と解析 | 使いどころ |
|---|---|---|
name_kanji | text(kuromoji) | 表示と、漢字だけの記録の検索 |
name_kana | text(ICU の Hiragana-Katakana と cjk_width) | ふりがなの一致 |
name_latin | text(ICU の Any-Latin と記号の除去、小文字) | ローマ字の近い一致 |
phone/email | keyword(正規化済み) | 強い手がかり |
record_type | keyword(stay、complaint、allergy、preference) | 部署ごとの申し送りの振り分け |
guest_key | keyword | 確かめた結びつき |
recorded_at | date | 記録の新しさ |
ふりがなが入っていない記録は、kuromoji の読みの変換で補います。 kuromoji_readingform は、トークンを読み(カタカナ、または use_romaji でローマ字)に置き換えるフィルタで、漢字には読みが複数あるため、kuromoji の辞書の読みを使うとされています。人名の読みは辞書どおりとは限らない(「東海林」「小鳥遊」など)ので、補った読みには印を付け、一致しても弱い手がかりとして扱います。
AIへ渡す前に整形する
- 電話番号の正規化 … ハイフンと空白を除き、国番号付き(+81)と0始まりを同じ形にそろえます
- メールアドレスの正規化 … 小文字にそろえます。予約サイトが中継用に発行するアドレスは、手がかりから外します
- 氏名の分解 … 姓と名の区切りを判定し、ローマ字の姓名が逆順で入った予約は両方の順で持たせます
- ふりがなの補完 … ふりがなが無い記録は、読みの変換で補い、補ったことを印にします
- 苦情の記録と予約の結び直し … 日付と部屋番号から予約を引き、氏名・電話・メールを付けます
- 記録の文からの要点の取り出し … Claude で、苦情とアレルギーの記録から部署・要点・対応の結果を取り出します
2番目を見落とすと、名寄せが崩れます。 予約サイトによっては、宿泊客の本当のアドレスではなく予約ごとの中継用のアドレスが届きます。それを強い手がかりに使うと、一致しないのが普通になり、強い手がかりが働きません。
3番目の逆順は、海外の予約サイトで頻繁に起きます。 「TARO WATANABE」と「WATANABE TARO」は、ローマ字の一致では別の語の並びです。両方の順で索引に入れ、どちらで当たったかを候補に書きます。
AIに処理させる
AIの仕事は2か所です。取り込み時の要点の取り出しと、確かめた記録からの申し送りの案です。 同じ人の候補を探すのは検索基盤で、AIに名寄せをさせません。
| 場面 | させること |
|---|---|
| 取り込み | 苦情の記録から、関係する部署(フロント/客室/レストラン/設備)、要点、対応の結果、次回の配慮のメモを取り出す |
| 取り込み | アレルギーの記録から、申し出の内容(食材の名前)と、レストランが行った対応を取り出す |
| 到着前 | 確かめた記録だけを使い、部署ごとの申し送りの案を作る。各文に記録の引用を付ける |
| 到着前 | アレルギーの申し出には日付を添え、本人への確認の一文を付ける |
| させないこと | 理由 |
|---|---|
| 同じ人かどうかの判断 | 同姓同名の別人の記録が載る。担当者が確かめる |
| 宿泊客の人柄や「要注意」の評価 | 苦情は対応の記録で、人の評価ではない |
| アレルギーへの対応の決定 | 内容と程度は本人とレストランが確かめて決める |
| 記録に無い好みの推測 | 「前回は和朝食だったので和食がお好み」のような推測は書かない |
| 古い記録を今も有効なものとして書くこと | 記録の日付を必ず添える |
2行目がいちばん外せない線です。 苦情の記録を要約させると、AIは「クレームの多いお客様」「要注意」のような言葉でまとめたがります。その一言が申し送りに載ると、スタッフの接し方が変わります。 書くのは「前回、何があり、何をしたか」までです。
指示内容を固定する
取り込み時(苦情の記録の要点):
あなたはホテルのゲストリレーションの担当です。
苦情とご意見の対応記録から、次回の滞在に役立つ要点を取り出します。
記録に書かれたことだけを根拠にしてください。推測で埋めないでください。
【取り出す項目】
- departments:関係する部署(front/housekeeping/restaurant/facility)
- issue:何があったか(1〜2文。事実だけ)
- resolution:ホテルが行った対応(返金、部屋の変更、お詫びの品など)
- next_time:記録に書かれた「次回の配慮」。書かれていなければ空
【厳守事項】
- 宿泊客の人柄、性格、態度を表す言葉を使わないでください。
「要注意」「クレーマー」「気難しい」などの評価を書かないでください。
- 記録に書かれていない対応や配慮を足さないでください。
- 健康状態やアレルギーに関する記載があれば、内容を要約せず
health_mention を true にしてください(別の扱いにします)。
到着前(申し送りの案):
あなたはホテルのフロントの担当で、翌日到着のお客様の申し送りを作ります。
渡された検索結果(担当者が同じ人だと確かめた記録)だけを根拠にしてください。
【予約】{reservation}
【確かめた過去の記録】検索結果として渡します
【書くこと】部署ごとに分けて
1. フロント:過去の滞在の回数と直近の日付、客室の希望
2. 客室:部屋の位置や設備についての過去の要望と対応
3. レストラン:アレルギーの申し出(申し出の日付を必ず添える)
4. 前回の滞在での苦情と、ホテルが行った対応
【厳守事項】
- アレルギーは「○年○月の申し出」と日付を書き、
「到着時に本人へ現在の内容を確認」の一文を必ず付けてください。
- お客様の人柄や評価を書かないでください。
- 記録に無い好みを推測しないでください。
- 記録が3年以上前のものは、その旨を書いてください。
検索結果は、Claude の検索結果ブロックで渡します。 1件の記録を1つの search_result にし、source に記録の番号、title に記録の種類と日付、content に記録の本文を入れます。公式の説明では、引用は content の中のテキストブロックを単位に付き、引用された範囲がブロックの番号で返ります。 申し送りの1文ごとに、どの記録から来たかを担当者が辿れます。この仕組みは Amazon Bedrock でも使えます。
出力形式を固定する
到着前の候補の一覧は、次の形で担当者の画面に出します。
{
"reservation_id": "R-20261008-0412",
"arrival": "2026-10-08",
"guest_on_booking": { "name_latin": "watanabe taro", "channel": "ota_overseas" },
"candidates": [
{
"profile_id": "P-0031877",
"match": ["phone_exact", "name_kana", "name_latin_fuzzy"],
"name_kanji": "渡邊 太郎",
"last_stay": "2025-11-14",
"records": { "stay": 4, "complaint": 1, "allergy": 1 },
"status": "unconfirmed | confirmed_same | confirmed_different"
}
]
}
1つ目の理由は、match に一致の種類を並べられることです。 電話の完全一致があるか、名前だけの一致かで、担当者の確かめ方が変わります。 名前だけの候補は、過去の住所や年齢層を開いて確かめます。
2つ目は、confirmed_different を残せることです。 別人だと判断した組を記録しておくと、次回の検索で同じ候補を出し続けずに済みます。
3つ目は、records の件数で、開く順番を決められることです。 苦情とアレルギーの記録がある候補を先に確かめます。
検索の要求は、次のように組みます。
{
"query": {
"bool": {
"should": [
{ "term": { "phone": { "value": "+819012345678", "boost": 5 } } },
{ "term": { "email": { "value": "[email protected]", "boost": 5 } } },
{ "match": { "name_kana": { "query": "ワタナベ タロウ", "boost": 2 } } },
{ "match": { "name_latin": { "query": "watanabe taro",
"fuzziness": "AUTO", "operator": "and" } } }
],
"minimum_should_match": 1
}
}
}
ローマ字の近い一致は、fuzziness の AUTO に任せます。 公式のドキュメントでは、AUTO は語の長さで許す違いの数を変え、0〜2文字は完全一致、3〜5文字は1文字まで、6文字以上は2文字までとされています。「sato」と「satou」、「ono」と「ohno」は1文字の違いで拾えます。operator を and にするのは、姓だけ・名だけの一致で候補が膨らむのを防ぐためです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 宿泊の管理システム | API または定時の書き出し | 予約、プロフィール、滞在の履歴を取る |
| 苦情の対応記録/レストランの予約台帳 | 共有の場所のファイルを毎晩読む | 追加・更新された行を取る |
| Claude(Amazon Bedrock) | Lambda からの呼び出し | 記録の要点の取り出しと、申し送りの案 |
| Amazon OpenSearch Service | 索引への登録と検索 | 同じ人の候補を一致の種類付きで返す |
| 申し送りの画面 | 書き込み | 候補の確認、申し送りの案の修正と確定 |
宿泊の管理システムと2つの台帳には、書き込みません。 確かめた結びつき(guest_key)は検索基盤の側に持ち、管理システムのプロフィールの統合は、管理システムの手順で人が行います。
人が確認する
確認は2か所です。同じ人の候補と、申し送りの案です。
- 電話かメールが一致した候補 … 名前と最後の滞在日を見て、同じ人として確定します。ほとんどはここで済みます
- 名前だけが一致した候補 … 過去の住所、同伴者、利用の傾向を開いて確かめます。決めきれなければ「未確認」のまま残し、申し送りには使いません
- 申し送りの案を読む … 引用を辿り、部署ごとの文を直して確定します。アレルギーの行に日付と確認の一文があるかを必ず見ます
- 到着時に本人に確かめる … アレルギーと前回の要望は、フロントかレストランが本人に現在の内容を確かめます
1件あたり3分を目安にします。 電話やメールが一致する候補は数十秒で確定し、名前だけの候補とアレルギーの記録がある予約に時間を使います。ならして3分です。
2番目で「未確認」のまま残すことを、失敗と考えないでください。 決めきれない候補を無理に結びつけるより、到着時にフロントが「以前にもお泊まりいただいていますか」と一言たずねるほうが確かです。本人の答えで結びつきを確定し、その場で記録に残します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 候補が1件も無い | 「過去の記録は見つかりませんでした」と出す。初めてのお客様と断定しない |
| 名前だけの候補が多数 | 上位5件までにし、電話・メールの一致が無いことを画面に出す |
| 同姓同名の別人と判断した | confirmed_different として残し、次回の候補から外す |
| 補った読みでだけ一致した | 弱い手がかりとして表示し、担当者に必ず確かめてもらう |
| 予約サイトの中継用アドレス | 手がかりから外す |
| アレルギーの記録が古い | 日付を出し、本人への確認を申し送りに入れる |
| 健康に関する記載が苦情の記録にある | 要約せず、閲覧できる役割を限った項目に分ける |
| Bedrock の呼び出しに失敗した | 候補の一覧だけを出し、申し送りは担当者が書く |
1行目を軽く見ないでください。 見つからないことは、初めてのお客様であることを意味しません。 旧姓、勤務先の名義、同伴者の名義で泊まっていた可能性があります。
7行目は、取り込みの段で分けます。 苦情の記録には「体調を崩された」「持病の薬を部屋に忘れた」のような記載が混ざることがあります。要点に含めると、苦情の要点を見られる役割の全員に健康の情報が見えてしまいます。 取り込みの指示で health_mention を立てさせ、その記録だけ閲覧の役割を絞った項目に移します。
記録を残す
- 取り込んだ記録の元の台帳と行、取り込んだ日時
- 到着前の検索ごとの予約、候補、一致の種類
- 担当者が同じ人・別人と判断した記録 … 誰が、いつ、何を見て判断したか
- Claude に渡した記録と、返ってきた申し送りの案と引用
- 担当者が確定した申し送りと、案からの直し
- 到着後に、記録の結びつきが誤っていたと分かった件
最後の行が、この構成の精度を測る材料です。 別人の記録を結びつけていた件は、どの一致の種類で起きたかを見て、名前だけの一致の扱いを見直します。
04実装レベルの3段階
半自動化で、電話やメールが一致する予約の多くは片付きます。 ただし海外の予約サイトのローマ字だけの予約と、苦情の記録との結び直しは手作業のままです。本格構成で1件3分になり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化で1か月運用すると、確かめた結びつき(guest_key)が到着の多い常連の分から積み上がります。 本格構成の名前だけの一致は、この積み上がった結びつきがあるほど候補が絞れ、確認が軽くなります。
05工数削減シミュレーション
導入後 900件 × 3分 ÷ 60 = 45 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 客室数が数百室あり、自社サイト・電話・複数の予約サイトから予約が入るため、同じ宿泊客の記録が氏名の書き方の違いで別々の顧客として残っているホテル。苦情の対応記録やレストランのアレルギーの記録が、宿泊の管理システムとは別の台帳にあり、到着前に突き合わせるのがフロントのベテランの記憶頼みになっている場合。AWS を使っており、検索基盤と生成AIを同じ環境で動かせる場合。
- 客室数が少なく、リピーターの顔と名前をスタッフ全員が覚えている宿。宿泊の管理システムの顧客の名寄せがすでに機能しており、過去の記録が1つのプロフィールにまとまっている場合。苦情やアレルギーの記録をそもそも残していない場合(先に記録の取り方を決める必要がある)。なお、同じ人かどうかの最終判断と、アレルギーへの対応の内容はスタッフが本人に確かめて決め、この構成はそれを代わりに行いません。
07最小構成で試す方法
- 来週到着する予約から、過去に泊まったことがありそうな30件を選ぶ
- ベテランの担当者に、その30件の申し送りを今のやり方で書いてもらう
- 30件について、宿泊の管理システム・苦情の対応記録・レストランの予約台帳から、氏名の候補になる記録を手で抜き出す(ふりがなとローマ字の違いを含めて広めに)
- 手元のAIサービスに貼り、「同じ人の可能性がある記録を、一致した手がかりごとに分けて並べてください。同じ人だと断定しないでください」と指示する
- 出てきた候補と、ベテランの申し送りを見比べる
ベテランと一緒に見てください。 ベテランが覚えていて記録から拾えなかったもの、記録にあってベテランも気づかなかったものの両方を数えます。
| 出てきた内容 | 判断 |
|---|---|
| ベテランの申し送りと同じ記録が拾えた | 索引と表記の変換の構築に進む |
| 同じ人だと断定して別人の記録を混ぜた | 指示と確認の手順で直る。構成は有効 |
| 苦情の記録に氏名が無く、結び直せない | 苦情の記録の書き方が先。 検索の問題ではない |
3行目が出たら、苦情の対応記録に予約番号の列を足します。 1列あるだけで、結び直しの手間がなくなります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 別人の記録が申し送りに載る | 名前だけの一致を自動で結びつけない。 確かめた記録だけを使う |
| 異体字で見つからない | ふりがなで束ねる。 漢字の一致に頼らない |
| ローマ字の綴りの違いで当たらない | fuzziness を AUTO にする |
| 姓だけの一致で候補が膨らむ | operator を and にする |
| 姓名が逆順で当たらない | 両方の順で索引に入れる |
| 半角カタカナで当たらない | cjk_width で全角にそろえる |
| 補った読みで誤って一致する | 補った読みは弱い手がかりにする |
| 中継用のアドレスで一致しない | 手がかりから外す |
| 申し送りに「要注意」と書かれる | 人柄・評価の言葉を禁じる |
| 古いアレルギーの記録をそのまま伝える | 日付と本人への確認を必ず付ける |
上の2行が、この構成の失敗のほとんどです。 1行目は結びつけすぎ、2行目は結びつけなさすぎで、どちらも名前をどう扱うかから出ています。 強い手がかりと弱い手がかりを分けて候補に出せば、両方の失敗が減ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 宿泊客の氏名・電話・メール、滞在の履歴、苦情の内容、そしてアレルギーなどの健康にかかわる記録です。
- 健康にかかわる記録を見られる役割を限る … 細かなアクセス制御の項目レベルのセキュリティで、アレルギーの項目をフロントの申し送りの担当とレストランの役割だけが見られるようにします。公式の説明では、役割ごとに見せる項目・見せない項目を指定できるとされています
- 苦情の詳細を見られる役割を限る … 文書レベルのセキュリティで、苦情の記録の全文はゲストリレーションの責任者の役割だけが見られるようにし、他の役割には要点と対応の結果だけを返します
- 細かなアクセス制御は最初に有効にする … 有効にするには HTTPS、保存時の暗号化、ノード間の暗号化が必要で、有効にしたあと無効にはできません
- 人を評価する言葉を記録に残さない … 申し送りに書くのは出来事と対応です。評価の言葉は、記録としてもスタッフの接し方としても、お客様に向かいます
- 記録を集める範囲を、宿泊の接遇に要るものに限る … 外部のSNSや口コミの書き込みを、氏名で結びつけて集めることはしません
- アレルギーへの対応を記録だけで決めない … 過去の申し出は、到着時に本人へ確かめる材料です
誤りが起きた場合のリスクは、別人の記録で接し方を変えることと、アレルギーの記録を見落とすことの2つです。 前者は名前だけの一致を自動で結びつけると起き、後者は表記の違いで見つからないと起きます。一致の種類を分けて出し、人が確かめることで両方を防ぎます。
10まず何から始めるか
1週目:台帳に予約番号の列を足す
苦情の対応記録とレストランの予約台帳に、予約番号の列を足します。過去の行は埋めなくて構いません。あわせて、アレルギーの申し出に日付が書かれているかを確かめます。
2週目:30件で試す
来週到着する30件で、ベテランの申し送りとAIの候補を見比べます。拾えなかった記録が、どの表記の違いで落ちたかを数えます。
3週目:索引の解析を決める
ふりがな・ローマ字・電話・メールの4つの形を持つ索引を作り、2週目に落ちた例で当たるかを確かめます。fuzziness の効き方と、候補の膨らみ方を見ます。
4週目:電話・メール・ふりがなの一致で候補を出す
到着前日の15時に候補の一覧を出し、担当者が確かめる運用を始めます。この時点では申し送りの案を作らず、候補の確認だけを積みます。
2か月目: ローマ字の近い一致と、苦情とアレルギーの要点の取り出しを足します。3か月目以降: 引用付きの申し送りの案と、細かなアクセス制御を整えます。ベテランが休みの日の申し送りが、いる日と同じ厚さになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Amazon OpenSearch Service で、日本語(kuromoji)の解析と ICU の解析のプラグインがすべてのドメインに入っていること | Amazon OpenSearch Service: Plugins by engine version | 2026-10-07 |
icu_transform が文字の種類を写し替え、Hiragana-Katakana・Any-Latin などの変換をセミコロンで重ねられること。NFD; [:Nonspacing Mark:] Remove; NFC で記号を外せること | OpenSearch Documentation: ICU transform | 2026-10-07 |
cjk_width が全角の英数字を半角に、半角カタカナを全角にそろえること | OpenSearch Documentation: CJK width | 2026-10-07 |
kuromoji_readingform が kuromoji の読みの情報でトークンをカタカナ(または use_romaji でローマ字)に置き換えること | OpenSearch Documentation: Kuromoji reading form | 2026-10-07 |
match クエリの fuzziness の AUTO が、0〜2文字は完全一致、3〜5文字は1文字、6文字以上は2文字までの違いを許すこと | OpenSearch Documentation: Match query | 2026-10-07 |
| 細かなアクセス制御で、文書レベル・項目レベルのセキュリティとフィールドマスキングを役割ごとに設定できること。有効化に HTTPS・保存時の暗号化・ノード間の暗号化が必要で、有効にしたあと無効にできないこと | Amazon OpenSearch Service: Fine-grained access control | 2026-10-07 |
検索結果ブロック(source・title・content)で自社の記録を渡すと引用付きで答え、引用がテキストブロックの番号で返ること。Amazon Bedrock でも使えること | Claude Docs: Search results | 2026-10-07 |
健康にかかわる記録の扱いと、宿泊客の情報を結びつける範囲は、自社のプライバシーポリシーと個人情報の取扱いの規程に照らして決めてください。 本記事は公開仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0683)についてのご相談はこちらから。
