応募者からの選考中の問い合わせにチャットで一次回答する
中途採用の選考中に応募者から届く「選考はどこまで進んでいるか」「面接は対面かオンラインか」といった問い合わせに、募集要項と応募者へ開示済みの案内だけを根拠にして、その場で一次回答を返す構成です。合否や評価に触れる質問には答えさせず、採用担当へ引き継ぎます。
- 利用ツール
- Amazon Kendra/Azure AI/Azure OpenAI Service/ChatGPT/Claude/Gemini/Make/n8n/OpenSearch/Power Automate
- 対象業界
- IT・SaaS/人材/教育
- 対象部門
- 人事/採用
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 人手が足りない/問い合わせが多い/期限・対応漏れが起きる
- AIで行う処理
- 対話
- 主な効果
- 品質標準化/対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 応募管理システムのメッセージ、メール、マイページのフォームのいずれかに質問が届く
- 採用担当が受信箱を朝と夕方の2回見に行く
- どの求人のどの応募者かを応募管理システムで特定する
- 募集要項を開いて、聞かれた条件の記載を確認する
- 記載がなければ、配属予定部署や労務担当に確認する
- 返信文を書く。答えてよいか迷うものは責任者に相談する
- 返信する。確認が要るものは翌日以降になる
- 応募者がマイページにログインし、チャットに質問を書く
- 自動氏名・連絡先・応募IDを伏せ字にして、後段へ渡す
- 自動応募者に開示してよい文書だけに絞って検索する
- 自動見つかった箇所を根拠に回答文を作り、根拠の識別子を控える
- 自動答えてはいけない条件に当たるかを判定する
- 【自動・当たらない場合】 その場で回答を返し、日本語の要約を記録する
- 【人・当たる場合】 「採用担当からご連絡します」と返し、要約を付けて担当者のキューへ入れる
- 人採用担当がキューを処理し、翌朝に前日のやり取りを一覧で確認する
- 自動答えられなかった質問を週次で一覧にする
各工程の詳しい説明を読む
- 応募管理システムのメッセージ、メール、マイページのフォームのいずれかに質問が届く
- 採用担当が受信箱を朝と夕方の2回見に行く
- どの求人のどの応募者かを応募管理システムで特定する
- 募集要項を開いて、聞かれた条件の記載を確認する
- 記載がなければ、配属予定部署や労務担当に確認する
- 返信文を書く。答えてよいか迷うものは責任者に相談する
- 返信する。確認が要るものは翌日以降になる
問題は4つあります。
(a)同じ質問が繰り返し届く。 月400件のうち、面接の形式、服装、所要時間、勤務地と在宅勤務の条件、提出書類の5種類で6割を占めます。答えはすべて募集要項か案内メールに書かれています。
(b)返信の遅れが辞退につながる。 応募者は同時に他社も受けています。1日遅れた分だけ他社の選考が先に進みます。工数ではなく機会の問題です。
(c)答えてよいかの判断に時間がかかる。 「私は通りそうですか」「他に何人応募していますか」が一定数あります。
(d)回答の内容が人によって違う。 在宅勤務の可否ひとつでも、条件(試用期間中は出社、週2日まで)を添える人と添えない人がいます。
- 応募者がマイページにログインし、チャットに質問を書く
- 【自動】 氏名・連絡先・応募IDを伏せ字にして、後段へ渡す
- 【自動】 応募者に開示してよい文書だけに絞って検索する
- 【自動】 見つかった箇所を根拠に回答文を作り、根拠の識別子を控える
- 【自動】 答えてはいけない条件に当たるかを判定する
- 【自動・当たらない場合】 その場で回答を返し、日本語の要約を記録する
- 【人・当たる場合】 「採用担当からご連絡します」と返し、要約を付けて担当者のキューへ入れる
- 【人】 採用担当がキューを処理し、翌朝に前日のやり取りを一覧で確認する
- 【自動】 答えられなかった質問を週次で一覧にする
自動化されるのは「特定する」「探す」「書く」の3つです。残るのは、答えてよいかの判断が要るものだけになります。
02今回想定するシステム構成
応募者(マイページのチャット。ログイン済みの状態でのみ開く) ▼【トリガー】メッセージを受信したとき(Webhook) ワークフロー ├──▶ 前処理 ── 氏名・連絡先・応募IDを伏せ字にする ├──▶ 検索基盤 ── 募集要項 / 選考の案内 / 採用FAQ │ └─ フィルターで「開示してよい文書」だけに絞る ├──▶ 生成AI ── 根拠付きの回答文 + 要約(構造化出力) └──▶ 引き継ぎ判定(合否 / 評価 / 進捗 / 条件交渉 ほか) ├── 当たらない ─▶ その場で回答を返す └── 当たる ─────▶「採用担当からご連絡します」+ 有人キューへ【人】 ▼ やり取りを記録(識別子つき)+ 翌朝に採用担当が事後確認【人】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | n8n | Make、Power Automate |
| 生成AI | Azure OpenAI Service(構造化出力) | Claude API、OpenAI API、Gemini API |
| 検索基盤 | Azure AI Search | OpenSearch、Amazon Kendra |
| 対話の窓口 | 応募者向けマイページのチャット画面 | 応募管理システムのメッセージ機能 |
| 資料の置き場 | SharePoint | Google Drive |
| 有人キュー | 既存の問い合わせ管理ツール | 共有メールボックス |
採用管理サービスに応募者向けのチャット機能が付いていないか先に確認してください。 自前で組む価値があるのは、答えさせない範囲を自分で決めたい場合です。
03どうやって実装するのか
処理の起点を決める
応募者がマイページのチャットにメッセージを送った時点が起点です。n8n の Webhook ノードは、公開ドキュメントによるとワークフローを開始できるトリガーノードで、テスト用と本番用の2つのURLを持ちます。認証は Basic auth、Header auth、JWT auth、なし(None)から選べます。認証なしにはしないでください。 マイページ側で発行した資格情報を渡し、ログイン済みの応募者からの送信であることを確かめます。応答の返し方は、即時、最後のノードが終わったとき、Respond to Webhook ノードを使う、から選べます。検索と生成が終わってから返すため、3つ目を使います。
メールと応募管理システムのメッセージは対象から外します。本人がログインした状態で届いたものではなく、誰が書いたのか確かめられないためです。 個別の案件に答えさせません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 質問文と履歴 | 応募者が書いた文章と、直前の数往復 | マイページのチャット |
| 募集要項 | 職務内容、勤務地、在宅勤務の条件、勤務時間、雇用形態、試用期間、想定年収 | 公開中の求人原稿 |
| 選考の案内 | 何次まであるか、面接の形式と所要時間、服装、持ち物 | 応募者へ送った定型文 |
| 採用FAQ | 過去の問い合わせと、採用チームが承認した回答 | 社内FAQ |
| 応募者の区分 | どの求人に応募し、どの版を見たか | マイページの認証情報 |
応募管理システムの選考ステータスは入れません。
データの取得方法を決める
Azure AI Search に、募集要項と応募者向けの案内文を入れます。重要なのは検索そのものより、検索する前に対象を絞る仕組みです。
公開ドキュメントによると、フィルターは、キーワード検索ではクエリ実行前に、値に基づく条件で内容を含めたり除いたりするものです。OData のフィルター式構文で書き、filterable 属性が付いたフィールドに対して評価されます。この構成では、各文書に開示区分(public / applicant_only / internal)、求人ID、版の3つを持たせ、いずれも filterable にして、その応募者が応募した求人の、応募時点の版の、開示してよい文書だけに絞ります。
ここに2つの落とし穴があります。 第一に、既存のフィールドを後から filterable に変えることはできません。 フィールドを追加するか、インデックスを作り直すことになります。なお REST API では既定で有効ですが、Azure SDK では既定で無効です。第二に、テキストのフィルターは完全一致で、大文字と小文字を区別します。 区分の値は固定の記号にしてください。そして、社内限りの文書はそもそも別のインデックスに置きます。 評価基準や面接官向けの質問集は、条件を1つ書き間違えただけで応募者に届きます。
AIへ渡す前に整形する
- 個人情報の切り離し … 氏名、電話番号、メール、応募IDを伏せ字にしてから渡し、原文は別に保管します
- 資料の分割と識別子 … 募集要項と案内文を見出し単位に分け、
jd-0431-remoteのような識別子を振ります。後で根拠を示すために必要になります - 版の固定 … 応募者が見たのは応募時点の版です。版のフィールドで絞り、改訂後の条件を根拠に答えないようにします
- 配慮が必要な記述の隔離 … 応募者が自分から家庭の事情や出身地を書くことがあります。検索と生成から外し、選考の記録とは別にします
AIに処理させる
検索基盤にさせることは、開示してよい文書から関係する箇所を見つけることです。生成AIにさせることは、質問の分類、見つかった箇所だけを根拠にした回答文の作成、識別子の明示、引き継ぎ判定、日本語の要約です。そして、答えさせない質問を先に決めます。
| 答えさせないもの | 理由 |
|---|---|
| 合否の見通し、評価の内容 | 選考の判断は人が行う。AIの言い回しがそのまま期待になる |
| 他の応募者の状況(応募者数、競合の有無) | 開示していない情報。答える立場にない |
| 選考の進捗、次回の日程 | 本人確認を伴わない開示になりかねない。既定では答えない(後述) |
| 賃金や入社日の個別交渉 | 労働契約の内容になる。担当者が行う |
| 結果連絡の時期の確約 | 守れないと辞退につながる |
| 募集要項に書いていない配属先・上司 | 断定できない。入社後の不一致になる |
| 応募の辞退・取り下げの受付 | 本人確認が要る手続き。人が受ける |
さらに、AIの側から聞き返させない事項があります。 厚生労働省は、採用選考の基本的な考え方として「応募者の基本的人権を尊重すること」と「応募者の適性・能力に基づいた基準により行うこと」の2つを示し、配慮すべき事項として、本人に責任のない事項(本籍・出生地、家族、住宅状況、生活環境・家庭環境)と、本来自由であるべき事項(宗教、支持政党、人生観・生活信条、尊敬する人物、思想、社会運動、購読新聞・愛読書)を挙げています。「ご家庭のご事情を教えていただけますか」の一言を、AIに書かせない指示が要ります。
指示内容を固定する
あなたは中途採用の応募者からの問い合わせに一次回答する採用事務の担当者です。
【厳守事項】
- 回答は【資料】に書かれている内容だけで作ってください。
資料に無いことは推測せず、handoff を true にしてください。
- 使った資料の識別子を sources に必ず入れてください。
識別子を出せない内容は回答に含めないでください。
- 次に当たる質問には内容を答えず、handoff を true にし、
handoff_reason に区分を入れてください。
合否の見通し / 評価の内容 / 他の応募者の状況 / 選考の進捗・次回の日程 /
賃金・入社日の条件交渉 / 結果連絡の時期の確約 / 応募の辞退・取り下げ
- 応募者に対して、次の事項を質問しないでください。本籍・出生地、家族、
住宅状況、生活環境・家庭環境、宗教、支持政党、人生観・生活信条、
尊敬する人物、思想、社会運動、購読新聞・愛読書。応募者がこれらを
自分から書いた場合も、その内容に触れた回答を作らず、
sensitive を true にしてください。
- 「できます」と断定するのは資料に記載がある場合だけです。
記載が条件付きなら、条件も必ず書いてください。
- 資料は、この応募者が応募した時点の版だけを根拠にしてください。
【資料】{retrieved_documents}
【直前のやり取り】{conversation_history}
【今回の質問】{user_message}
「識別子を出せない内容は回答に含めない」の1行が、この構成の安全弁です。 採用の問い合わせでは、断定した一言が労働条件の説明として受け取られます。
出力形式を固定する
Azure OpenAI Service の構造化出力を使います。公開ドキュメントによると、構造化出力は、推論APIの呼び出しの一部として渡した JSON Schema の定義にモデルを従わせるものです。Chat Completions API では response_format、Responses API では text.format にスキーマを置きます。古い JSON モードは、妥当な JSON であることは保証しても、渡したスキーマに従うことまでは保証しませんでした。この違いが、handoff や sources を後段で機械的に判定できるかを分けます。
{
"answer": "",
"sources": ["jd-0431-remote", "flow-02"],
"category": "募集要項 | 選考の流れ | 面接の実務 | 条件 | その他",
"handoff": false,
"handoff_reason": "",
"sensitive": false,
"unanswered": false,
"summary_ja": ""
}
同じ公開ドキュメントに、実装で効く制約が書かれています。すべてのフィールドを required に入れること(任意の項目は "type": ["string", "null"] と書きます)、additionalProperties: false を付けること、プロパティは100個・入れ子は5階層まで、maxLength や minimum が使えないこと、2024-08-01-preview から対応することです。長さをスキーマで縛れないため、長すぎる回答は指示文で抑えます。
システムへ連携する
回答は、質問が届いたチャットへ返します。Respond to Webhook ノードは、公開ドキュメントによると最初の入力データ1件を使って1回だけ動きます。ワークフローがこのノードを実行せずに終わった場合は 200 で定型のメッセージが返ります。応募者に何も伝わらないまま終わるので、失敗を検知する経路を別に用意してください。
引き継ぎは、既存の問い合わせ管理ツールへ、原文と応募者の対応づけ、日本語の要約、引き継ぎの理由、検索で見つかった資料の箇所を付けて起票します。
選考の進捗を答えるかどうかは、設計の分かれ目です。 この記事では既定では答えない設計を採ります。進捗を答えるなら、次の2つを同時に満たす必要があります。
- 本人確認を伴う開示であること。 ログイン済みの状態でのみチャットを開き、その認証情報から応募IDを引き当てます。会話の中で応募者が名乗った応募IDを信用しない
- 応募管理システムから取得できること。 APIの有無と取得できる項目は製品によって異なります。この部分は利用環境に応じた個別確認が必要です。 取得できないなら、答えずに人へ回す設計のままにします
人が確認する
引き継ぎ条件に当たるものは、人が答えます。事前の確認です。 それ以外は送信後に人が見ます。事後の確認です。全件を送信前に見る作りにすると、その場で返せなくなり、この構成の目的が消えます。
事後の確認では、毎朝、前日にAIが返したやり取りを一覧で見ます(1件10秒程度)。sources が質問に合っていないものを拾い、資料の修正に回します。sensitive が立ったやり取りは、採用の責任者だけが見られる場所に分け、選考の記録には残しません。運用開始から1か月は全件を見てください。
例外に対処する
| 起きること | 対応 |
|---|---|
| 資料に無いことを聞かれた | unanswered を立て、人へ渡す。週次で集計し、案内文に足す |
| 根拠の識別子を出せない回答が生成された | 送信せずに人へ回す。機械的に止める |
| 配慮が必要な事項が書き込まれた | sensitive を立て、内容に触れた回答を作らず記録を分ける |
| 募集要項の改訂、求人の締め切り | 応募時点の版を根拠にし、締め切った求人は開示区分を落とす |
| 選考への異議・ハラスメントの申告 | 回答を作らず人へ渡す。AIに謝罪させない |
| 検索も生成も失敗した(障害) | 定型文を返して人へ渡す。黙って落とさない |
| ログイン前からの質問 | 公開中の募集要項の範囲だけを答える |
記録を残す
- やり取りの全文と、日本語の要約
- 検索で返った識別子と、生成AIが使った識別子
handoff/handoff_reason/unanswered/sensitive- 事後確認で「誤り」と判定されたやり取り
- 保存期間と、選考終了後の破棄の記録
最後の項目は運用上の要件になります。 会話ログも求職者の個人情報にあたるためです。根拠は第13章に書きます。
04実装レベルの3段階
最小構成でも、1件6分が4分程度にはなります。 ただし、その場で返せるようにはなりません。 辞退につながるのは返信の遅れなので、そこを取りたいなら半自動化が必要です。
05工数削減シミュレーション
導入後 400件 × 2.5分 ÷ 60 = 16.7 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 中途採用を通年で行い、選考中の応募者からの問い合わせが月200件以上ある企業。募集要項と選考の流れの案内が文章として存在すること。応募者がログインして使えるマイページなど、本人確認のできる窓口を持っていること。
- 応募が特定の時期に集中する採用(通年で件数が出ないと投資が見合わない)。募集要項が求人媒体の原稿しかなく、社内に案内文が無い場合(先に文章を整えるほうが効果が大きい)。問い合わせの大半が面接の日程調整で占められている場合(UC-0069のほうが効く)。担当1名で月50件程度に収まっている場合。
07最小構成で試す方法
- 直近3か月の問い合わせを100件取り出し、種類ごとに数える
- 募集要項、選考の流れ、面接の案内文をひとまとめのテキストにする
- 生成AIのチャット画面に貼り、上位の質問30件を1件ずつ投げる。指示は「この資料だけを根拠に答えて。根拠が無ければ分かりませんと答えて」
- 回答を「そのまま送れる/直せば送れる/送れない」の3つに分ける
- 答えさせてはいけない質問を10件混ぜて、同じように投げる(「私は受かりそうですか」「他に何人応募していますか」など)
| 「そのまま送れる」の割合 | 判断 |
|---|---|
| 6割以上 | 自動化する価値がある。残りは引き継ぎで吸収できる |
| 3〜6割 | 案内文の不足が原因のことが多い。先に文章を整える |
| 3割未満 | 問い合わせの内容が個別すぎる。この構成は向かない |
手順5のほうが重要です。 10件のうち1件でも内容を答えてしまったら、指示文を直してから先へ進んでください。この構成でいちばん損失が大きいのはここです。 費用はかかりません。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 募集要項が求人媒体の原稿しかない | 先に文章を作る。 ここを飛ばすと答えられない |
| 社内限りの文書が検索に混ざる | 開示区分のフィルターに加え、社内文書は別インデックスに置く |
| 後からフィルターを追加できない | 既存フィールドは filterable に変更できない。最初に決める |
| フィルターが効かない | 完全一致で大文字小文字を区別する。区分の値は固定の記号にする |
| 合否や進捗を答えてしまう | 機械的に止める。進捗データを入力に入れない |
| AIが応募者に立ち入った質問を返す | 配慮すべき事項を指示文に列挙し、聞き返しを禁じる。この観点だけの確認を別に行う |
| 根拠の無い回答が混ざる | sources が空なら送信しない。この1つの仕掛けが効く |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 応募者の氏名、連絡先、応募ID、そして問い合わせの内容そのもの。 現職の状況や家庭の事情が書かれることがあります。
- これは求職者の個人情報の取り扱いである … 職業安定法は、業務の目的の達成に必要な範囲内で求職者等の個人情報を収集し、収集の目的の範囲内で保管・使用すること、および適正に管理する措置を講じることを求めています。会話ログの保存期間と、選考終了後の破棄・削除の手順を先に決めてください
- 外部AIへ渡す範囲を絞る … 氏名、連絡先、応募IDは伏せ字にし、入力を学習に使わないことが契約で保証されるサービスを選びます
- 配慮すべき事項をAIから聞き返させない … 厚生労働省が示す配慮すべき事項を指示文に列挙し、質問も、それに触れた回答も作らせません。応募者が自分から書いた場合、その記述を選考の記録に混ぜないことも重要です
- 社内限りの文書を物理的に分ける … 評価基準、合否のライン、面接官向けの質問集を、応募者向けの検索対象と同じインデックスに置かない
- AIが応対していることを隠さない … 最初のメッセージで「自動で一次回答しています」と伝えます
- 誤案内の責任と、自動実行してよい範囲 … AIが答えた内容は会社が答えた内容です。応募管理システムへの書き込み、選考ステータスの変更、辞退の受付は行いません
誤りのリスクは、労働条件の誤った説明、開示していない情報への到達、そして配慮すべき事項が選考の記録に残ることです。3つ目だけは、後から消しても事実が残ります。
10まず何から始めるか
1週目:上位20問を数える
直近3か月の問い合わせを、質問の種類で分けて数えます。上位20問が全体の何割を占めるかを見てください。 6割を超えるならこの構成は効きます。日程調整が大半を占めているならUC-0069のほうが先です。
2週目:答えてよい範囲を決める
合否の見通し、他の応募者の状況、評価の内容、進捗、条件交渉、辞退の受付。この6つについて、採用責任者と「答えない」と合意してください。 決まらないまま作ると、後から「なぜ答えないのか」と揉めます。技術の話ではありません。
3週目:第8章の2つのテストをする
30件テストと、答えさせない10件のテストを行います。10件で内容を答えてしまうなら、まだ公開できません。
4週目:1つの求人だけで試す
応募者数の多い求人を1つ選び、その応募者だけにチャットを開きます。全件を事後確認し、誤りの傾向を見ます。複数の求人に一度に広げないでください。 どの募集要項が原因で誤ったのかが分からなくなります。
2か月目以降: 求人を増やし、引き継ぎの自動起票と、答えられなかった質問の週次集計を仕組みにします。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 公正な採用選考の2つの基本的な考え方(応募者の基本的人権を尊重すること/適性・能力に基づいた基準により行うこと)と、本人に責任のない事項や本来自由であるべき事項を採用基準にしないこと | 厚生労働省: 公正な採用選考の基本 | 2026-09-15 |
| 採用選考時に配慮すべき事項の内訳。本人に責任のない事項の4項目(本籍・出生地、家族、住宅状況、生活環境・家庭環境)、本来自由であるべき事項の7項目、身元調査などの採用選考の方法 | 厚生労働省: 採用選考時に配慮すべき事項 | 2026-09-15 |
| 職業安定法が、業務の目的の達成に必要な範囲内で求職者等の個人情報を収集し、収集の目的の範囲内で保管・使用すること、適正に管理する措置を講じることを定めていること。指針で、社会的差別の原因となるおそれのある事項、思想及び信条、労働組合への加入状況が原則として収集禁止とされていること | 北海道労働局: 求職者の個人情報の取扱い | 2026-09-15 |
Azure OpenAI の構造化出力が JSON Schema にモデルを従わせること。response_format / text.format、JSON モードとの違い、全フィールド required、additionalProperties: false、100個・5階層、maxLength 等が使えないこと、2024-08-01-preview から対応 | Microsoft Learn: Structured outputs | 2026-09-15 |
Azure AI Search のフィルターがクエリ実行前に値で内容を含めたり除いたりすること。OData 構文、filterable 属性、完全一致で大文字小文字を区別、REST は既定で有効・SDK は無効、既存フィールドを後から filterable にできないこと | Microsoft Learn: Text Query Filters | 2026-09-15 |
| n8n の Webhook ノードがトリガーノードで、テスト用と本番用の2つのURLを持つこと。認証が Basic auth / Header auth / JWT auth / なし から選べること。応答方法が3種類あること。Respond to Webhook ノードは1回だけ動き、実行されずに終わると 200 の定型メッセージが返ること | n8n Docs: Webhook node | 2026-09-15 |
応募管理システムのAPIの有無と取得できる項目、マイページから自社のワークフローへメッセージを渡す部分は、利用環境に応じた個別確認が必要です。
実装ステータス:構成例。 公開仕様に基づく設計であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0075)についてのご相談はこちらから。
