人材紹介のキャリアアドバイザーが候補者を推薦する前に、求人企業ごとの過去の選考結果と見送りの理由を探し、通りやすい経歴と見送られやすい点を根拠の記録付きで返す
キャリアアドバイザーが推薦の前に企業と候補者の経歴を入れると、その企業の過去の選考記録から経歴の近い推薦を探し、どこまで通り、何を理由に見送られたかを記録番号付きで返します。
- 生成AI
- ChatGPT/Claude/Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 対象業界
- 人材
- 対象部門
- 営業/採用
- 対象業務
- 情報検索/比較検討
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 判断支援/属人化解消/検索時間短縮/機会損失防止
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- キャリアアドバイザーが、推薦したい候補者と推薦先の求人を決める
- 案件管理の仕組みで、その企業の過去の推薦の一覧を開く
- 結果が見送りのものを開き、候補者の経歴と見送りの理由を読み比べる
- 似た経歴の推薦があったかを、職務経歴書を開いて確かめる
- 分からないときは、法人担当にチャットで聞く
- 推薦文を書き、経歴のどこを強調するかを決めて推薦する
- 自動案件管理の仕組みで推薦の結果が登録されると、企業・求人・職種・段階・結果・理由の文・候補者の経歴の要約を取り出す。候補者の氏名と連絡先は取り出さない
- 自動Claude が、理由の文を「経験・スキル」「志向・条件」「選考の進め方」「適性・能力と関係のない事柄」に仕分け、経歴の要約から経験の項目を取り出す
- 自動「適性・能力と関係のない事柄」に当たった理由は、索引に入れずに法人担当の確認の一覧へ回す
- 人法人担当が、仕分けと経験の項目を確かめて確定する
- 自動確定した記録を検索基盤に登録する
- 人キャリアアドバイザーが、推薦先の求人と、候補者の経歴の要約(氏名を入れない)を検索画面に入れる
- 自動企業と職種で絞り、経歴の近い推薦を、結果ごとに3件ずつ集める
- 自動見送りの理由の仕分けを、その企業の分だけ数える
- 自動Claude が、結果ごとの推薦と理由を記録番号付きでまとめる
- 人キャリアアドバイザーが結果を読み、推薦するか、推薦文で何を伝えるかを決める
各工程の詳しい説明を読む
- キャリアアドバイザーが、推薦したい候補者と推薦先の求人を決める
- 案件管理の仕組みで、その企業の過去の推薦の一覧を開く
- 結果が見送りのものを開き、候補者の経歴と見送りの理由を読み比べる
- 似た経歴の推薦があったかを、職務経歴書を開いて確かめる
- 分からないときは、法人担当にチャットで聞く
- 推薦文を書き、経歴のどこを強調するかを決めて推薦する
(a)経歴の近さで並ばない。 一覧は推薦日の順で、似た経歴の推薦がどれかは、1件ずつ開かないと分かりません。 推薦の多い企業では、見送りの記録だけで100件を超えます。
(b)通った例を見ない。 見送りの理由ばかりを読むと、何が足りなかったかは分かっても、何があれば通ったかが分かりません。 同じ職種で内定まで進んだ人の経歴と見比べて、初めて企業が見ているものが見えます。
(c)法人担当の記憶に頼る。 「この企業は転職回数より、直近の在籍年数を見る」といった傾向は、法人担当の頭の中にしかありません。 担当が替わると、傾向が一度消えます。
(d)推薦の機会を逃す。 確かめるのに時間がかかるので、推薦の締め切りがある求人では、確かめないまま推薦するか、推薦を見送るかになります。 前者は書類での見送りを増やし、後者は候補者の機会を減らします。
取り込み(選考の結果が届くたび)
- 【自動】 案件管理の仕組みで推薦の結果が登録されると、企業・求人・職種・段階・結果・理由の文・候補者の経歴の要約を取り出す。候補者の氏名と連絡先は取り出さない
- 【自動】 Claude が、理由の文を「経験・スキル」「志向・条件」「選考の進め方」「適性・能力と関係のない事柄」に仕分け、経歴の要約から経験の項目を取り出す
- 【自動】 「適性・能力と関係のない事柄」に当たった理由は、索引に入れずに法人担当の確認の一覧へ回す
- 【人】 法人担当が、仕分けと経験の項目を確かめて確定する
- 【自動】 確定した記録を検索基盤に登録する
検索(推薦の前に)
- 【人】 キャリアアドバイザーが、推薦先の求人と、候補者の経歴の要約(氏名を入れない)を検索画面に入れる
- 【自動】 企業と職種で絞り、経歴の近い推薦を、結果ごとに3件ずつ集める
- 【自動】 見送りの理由の仕分けを、その企業の分だけ数える
- 【自動】 Claude が、結果ごとの推薦と理由を記録番号付きでまとめる
- 【人】 キャリアアドバイザーが結果を読み、推薦するか、推薦文で何を伝えるかを決める
10番目が、この設計の分かれ目です。 似た経歴の人が書類で見送られたことは、今回の候補者も見送られることを意味しません。 求人の中身が変わっていることも、企業の担当者が替わっていることもあります。推薦するかを決めるのはキャリアアドバイザーで、迷うときは法人担当に聞きます。
3番目を取り込みの段に置いているのも、意図してのことです。 選考の基準にしてはならない事柄が書かれた理由を、検索の結果として見せると、キャリアアドバイザーがそれを避けるように候補者を選ぶことになりかねません。見せる前に分け、法人担当が企業との向き合い方を決めます。
02今回想定するシステム構成
【取り込み】案件管理の仕組み(選考の結果の登録) ▼【トリガー】結果の登録 AWS Lambda ── 企業・求人・段階・結果・理由・経歴の要約を取り出す(氏名・連絡先は除く) ▼ Claude(Amazon Bedrock)── 理由の仕分けと経験の項目の取り出し ├──▶ 適性・能力と関係のない事柄 → 法人担当の確認の一覧(索引に入れない) ▼【人】法人担当が確定 Amazon OpenSearch Service(選考記録の索引。Sudachi) 【検索】キャリアアドバイザーの検索画面(求人+経歴の要約) ▼ Amazon OpenSearch Service ├─ 企業・職種で絞り、経歴の言葉の検索 ├─ collapse(結果の区分)+ inner_hits で結果ごとに3件 └─ 理由の仕分けの集計 ▼ Claude(Amazon Bedrock)── 検索結果のブロックで渡し、引用付きでまとめる ▼ キャリアアドバイザーが確認・判断 → 推薦
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Amazon OpenSearch Service(Sudachi、collapse と inner_hits、細かなアクセス制御) | Azure AI Search、Vertex AI Search(Agent Search) |
| 生成AI | Claude(Amazon Bedrock。理由の仕分けと検索結果のまとめ) | Gemini API、OpenAI API |
| 連携 | AWS Lambda(取り込み、検索、集計) | AWS Step Functions |
| 保管 | Amazon S3(記録の写しと、取り込みの記録) | ― |
| 案件管理 | 既存の案件管理の仕組み | ― |
案件管理の仕組みと候補者の台帳には、書き込みません。 この構成が出すのは、過去の選考の一覧とまとめまでです。
日本語の言葉の検索は、Sudachi のプラグインで行います。 Amazon OpenSearch Service の対応プラグインの一覧では、Sudachi Analysis が日本語向けに推奨されるものとして載っており、OpenSearch 1.3以降で使えます。kuromoji と ICU は全ドメインに入っています。職務経歴の言葉は「SaaS」「インサイドセールス」のような外来語と略語が多いので、辞書は社内で育てます。
結果ごとに数件ずつ並べるのが、collapse です。 ドキュメントでは、collapse は検索結果を項目の値で束ね、束ごとに最上位の1件だけを返す機能とされ、inner_hits を使うと束ごとに複数件を返せます。 束ねる項目は keyword か数値の型である必要があります。結果の区分を keyword で持ち、区分ごとに上位3件を返します。
見せる範囲を絞るのが、細かなアクセス制御です。 索引・文書・項目の単位で制限でき、項目の値を伏せるフィールドマスキングもあります。候補者を特定できる項目を、キャリアアドバイザーの役割からは伏せます。
03どうやって実装するのか
処理の起点を決める
取り込みと検索で、起点が2つあります。
取り込みは、案件管理の仕組みで選考の結果が登録されたことを起点にします。 書類、一次、二次、最終のどの段階の結果でも取り込みます。「書類は通ったが一次で見送り」という経過そのものが、企業が何を見ているかを表すためです。 結果を通知できない仕組みなら、毎晩、結果の登録日で絞った一覧を取りに行きます。
過去の約3万件は、別に一括で取り込みます。 このときは法人担当の確認が取れないので、仕分けに「未確認」の印を付けます。企業の採用方針が変わっていることがあるので、推薦日も検索結果に必ず出します。
検索は、キャリアアドバイザーが推薦の画面で「過去の選考を見る」を押したときに動きます。 推薦文を書く前に押してもらいます。推薦文を書き終えてから見ても、経歴のどこを伝えるかを直す時間が残らないためです。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 選考の記録 | 推薦番号、企業、求人、職種、推薦日、到達した段階、結果、企業からの理由の文 | 案件管理の仕組み |
| 経歴の要約 | 推薦時の職務経歴書から作る。直近の職種、業界、経験年数、扱った商材、マネジメントの有無、資格 | 案件管理の仕組みに添付された推薦文 |
| 理由の仕分け | 取り込み時に作る。経験・スキル/志向・条件/選考の進め方/適性・能力と関係のない事柄 | 検索基盤 |
| 求人の版 | 求人ごとの必須・歓迎の条件と、改定の日付 | 案件管理の仕組み |
| 新しい推薦(検索時) | 推薦先の求人、候補者の経歴の要約 | 検索画面 |
質を決めるのは、理由の文の書き方です。 「総合的に判断」とだけ書かれた見送りは、何も教えてくれません。法人担当が企業に理由を聞くときに、経験・志向・条件のどれかを聞く習慣をつけることが、この構成のいちばんの準備です。
候補者の氏名・生年月日・連絡先・現職の社名は、最初から取り込みの対象にしません。 経歴の要約は、業界と職種と年数の言葉で書きます。同じ候補者が別の企業に推薦された記録を、検索基盤の中で結びつけることもしません。
データの取得方法を決める
選考の記録は、案件管理の仕組みから文字で取り出します。職務経歴書のファイルそのものは取り込みません。 推薦のときに書いた推薦文から、経歴の要約だけを作ります。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 経歴の要約 | 推薦文 | 言葉の検索の主な対象 |
| 企業からの理由の文 | 選考の記録 | 理由の仕分けと、引用の本文 |
| 企業・求人・職種 | 選考の記録 | 絞り込み |
| 到達した段階と結果 | 選考の記録 | collapse の束ね方と、一覧での表示 |
索引の項目は、次のように持たせます。
| 項目 | 型 | 使いどころ |
|---|---|---|
career_summary | text(Sudachi) | 経歴の言葉の検索 |
reason_text | text(Sudachi) | 引用の本文。検索の点数には使わない |
client_id/job_family | keyword | 絞り込み |
outcome | keyword(passed_offer、rejected_doc、rejected_interview、withdrawn) | collapse で束ねる |
reason_class | keyword | 理由の仕分けの集計 |
candidate_key | keyword(伏せる対象) | 同じ人の重複を数えるときだけ使う |
recommended_at | date | 古い記録の表示 |
reason_text を検索の点数に使わないのは、理由の言葉で当たった記録は、経歴が近いとは限らないためです。 「マネジメント経験不足」で当たった記録が、まったく違う職種のものということが起きます。
AIへ渡す前に整形する
- 経歴の要約の作成(取り込み時) … 推薦文から、直近の職種、業界、経験年数、商材、マネジメントの有無、資格だけを取り出します
- 個人を特定する言葉の除去 … 氏名、現職と前職の社名、学校名、生年を正規表現と Claude の確認で伏せます
- 理由の仕分け(取り込み時) … 企業からの理由の文を4つの区分に分けます
- 適性・能力と関係のない事柄の分離 … 仕分けで当たった文は、索引に入れず、法人担当の確認の一覧に入れます
- 求人の版の付与 … 推薦日に効いていた求人の版を記録に付けます
- 検索の入力の確認 … キャリアアドバイザーが入れた経歴の要約に、氏名や社名が入っていれば伏せてから検索します
4番目を軽く見ないでください。 厚生労働省の公正採用選考のページでは、採用選考は応募者の適性・能力に基づいた基準により行うことが基本とされ、本籍・出生地、家族、住宅状況、宗教、支持政党などを把握することが就職差別につながるおそれがある14事項として挙げられています。企業からの理由にこうした事柄が書かれていたら、それを「傾向」として検索に出すと、差別につながる判断を仕組みが広めることになります。
2番目で現職の社名を伏せるのは、候補者を特定しないためです。 「〇〇社でSaaSの新規開拓」と書けば、同じ業界の人には誰か分かります。社名は業界と規模の言葉に置き換えます。
AIに処理させる
AIの仕事は2か所です。取り込み時の仕分けと、検索結果のまとめです。
| 場面 | させること |
|---|---|
| 取り込み | 企業からの理由の文を、経験・スキル/志向・条件/選考の進め方/適性・能力と関係のない事柄に仕分ける |
| 取り込み | 推薦文から経歴の要約を作り、社名と氏名を伏せる |
| 検索 | 結果ごとに3件ずつの推薦について、経歴の要約と到達した段階と理由を記録番号付きでまとめる |
| 検索 | 通った推薦と見送られた推薦で、経歴の要約に書かれた違いを並べる |
| させないこと | 理由 |
|---|---|
| 今回の候補者が通るかの予測 | 求人の版も企業の担当者も変わる。決めるのはキャリアアドバイザー |
| 推薦するかどうかの判断 | 候補者の希望と機会に関わる |
| 経歴の書き方を事実から離れて変える提案 | 推薦文は事実に基づく。誇張は企業との信頼を崩す |
| 適性・能力と関係のない事柄の要約 | 取り込みの段で分けており、検索の結果に出さない |
| 候補者の人柄の評価 | 理由の文の言い回しから人物像を作らない |
1行目がいちばん外せない線です。 似た経歴の3件が全部書類で見送られていると、AIは「この候補者は書類で見送られる可能性が高い」と書きたくなります。その一文で推薦をやめると、候補者の機会が、数件の過去の記録で閉じます。
3行目は、指示に入れないと起きます。 「マネジメント経験不足」で見送られた例を見せると、AIは「推薦文でリーダー経験を強調しましょう」と書き、事実以上に書く方向の提案になりがちです。
指示内容を固定する
取り込み時(理由の仕分け):
あなたは人材紹介会社で、求人企業から届いた選考結果の理由を整理する担当です。
理由の文に書かれたことだけを根拠にしてください。推測で埋めないでください。
【仕分けの区分】
- skill:経験、スキル、実績、資格に関すること
- preference:志向、転職の理由、条件(年収、勤務地、働き方)の合わなさ
- process:選考の進め方(日程、他の候補者との比較、募集の停止)
- non_merit:本人の適性・能力と関係のない事柄(本籍・出生地、家族、住宅、
生活環境、宗教、思想・信条、支持政党、労働組合など)
【厳守事項】
- 1つの文に複数の区分が含まれるときは、文を分けてそれぞれに区分を付けてください。
- non_merit に当たる文は、内容を要約せず、該当箇所の位置だけを返してください。
- 理由の文に書かれていない理由を足さないでください。
「総合的に判断」とだけあれば、区分は unknown にしてください。
- 候補者の人柄や性格を表す言葉を、区分の名前にしないでください。
検索時(結果のまとめ):
あなたは人材紹介会社のキャリアアドバイザーの調べものを助ける係です。
渡された検索結果だけを根拠に、この企業の過去の選考を並べてください。
【推薦先の求人】{job}
【推薦したい候補者の経歴の要約】{career}
【過去の推薦(結果ごとに最大3件)】検索結果として渡します
【理由の区分ごとの件数】{reason_counts}
【書くこと】
1. 結果ごとに、各推薦の経歴の要約、到達した段階、理由(記録番号と推薦日を添える)
2. 通った推薦と見送られた推薦で、経歴の要約に書かれた違い
3. 推薦日が求人の改定より前の記録には、その旨
【厳守事項】
- 今回の候補者が通るか、見送られるかを書かないでください。
- 推薦するべきか、やめるべきかを書かないでください。
- 推薦文で経歴をどう書くかを提案しないでください。
- 件数の多い見送りの理由を、今回の候補者に当てはめないでください。
- 候補者の人柄や性格に触れないでください。
検索結果は、Claude の検索結果ブロックで渡します。 1件の推薦を1つの search_result にし、source に推薦番号、title に結果の区分と到達した段階と推薦日、content に経歴の要約と理由の文を別々のテキストブロックで入れます。 引用はテキストブロックを単位に付くので、まとめのどの文が経歴から、どの文が企業の理由から来たかが分かります。
出力形式を固定する
取り込み時の仕分けは、次の形のJSONで受け取ります。
{
"recommendation_id": "RC-2025-020417",
"client_id": "C-0381",
"job_family": "sales_saas",
"stage_reached": "first_interview",
"outcome": "rejected_interview",
"reasons": [
{ "class": "skill | preference | process | non_merit | unknown", "span": [0, 42] }
],
"career_summary": "",
"non_merit_flag": false,
"unconfirmed": false
}
1つ目の理由は、outcome を決まった値に限れることです。 collapse で束ねる項目は、値の揺れがあると束が割れます。「一次NG」「一次見送り」「1次不合格」を1つの値にそろえるのは、取り込みの段で行います。
2つ目は、reasons を区分と位置で持てることです。 理由の文の中のどの部分がどの区分かを位置で残すので、引用のときに non_merit の部分を除いて渡せます。
3つ目は、non_merit_flag で、企業ごとの件数を数えられることです。 同じ企業から繰り返し届くなら、法人担当がその企業の採用担当と話す材料になります。
検索の要求は、次のように組みます。
{
"query": {
"bool": {
"must": { "match": { "career_summary": "{career}" } },
"filter": [
{ "term": { "client_id": "C-0381" } },
{ "term": { "job_family": "sales_saas" } }
]
}
},
"collapse": {
"field": "outcome",
"inner_hits": { "name": "top3", "size": 3, "sort": [ { "_score": "desc" } ] }
},
"aggs": { "reasons": { "terms": { "field": "reason_class" } } }
}
集計は collapse の影響を受けません。 ドキュメントでは、collapse は上位の検索結果だけに効き、集計には効かないとされています。結果ごとに3件だけを見せながら、理由の区分の件数は、絞った範囲の全件で数えられます。 逆に、hits.total は束ねる前の件数なので、画面には「経歴の近い推薦 全N件のうち、結果ごとに上位3件」と書きます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 案件管理の仕組み | 結果の登録の通知、または毎晩の一覧の取得 | 選考の記録と推薦文を取り出す |
| 推薦の画面 | 「過去の選考を見る」ボタンから Lambda を呼ぶ | 結果ごとの一覧とまとめを推薦の横に表示する |
| Claude(Amazon Bedrock) | Lambda からの呼び出し | 理由の仕分け、経歴の要約、検索結果のまとめ |
| Amazon OpenSearch Service | 索引への登録と検索・集計 | 経歴の近い推薦を結果ごとに返す |
| 法人担当の確認の一覧 | 書き込み | 仕分けの確定と、non_merit の記録の確認 |
inner_hits を何組も足さないようにします。 ドキュメントでは、inner_hits の要求が多いと検索がかなり遅くなることがあるとされています。束は結果の区分の4つだけ、inner_hits は1組にします。
ページの送り方にも注意します。 collapse を search_after と使うときは、束ねる項目と並べ替えの項目が同じで、並べ替えは1つだけとされています。この構成では送る操作は作らず、もっと見たいときは案件管理の仕組みで元の一覧を開きます。
人が確認する
確認は2か所です。取り込み時の法人担当と、検索時のキャリアアドバイザーです。
- 法人担当が仕分けを確定する … 区分の付け方と経歴の要約を確かめます。
non_merit_flagの記録は必ず開き、企業への伝え方を決めます - キャリアアドバイザーが推薦を決める … 結果ごとの一覧と理由を読み、推薦するか、推薦文で何を伝えるかを自分で決めます
- 求人の改定より前の記録は割り引いて読む … 必須の条件が変わっていれば、当時の見送りの理由は今は当てはまらないことがあります
- 迷うときは法人担当に聞く … 一覧を見たうえで聞くので、「この人は通りそうですか」ではなく「この記録の理由は今も生きていますか」と聞けます
1件あたり4分を目安にします。 一覧とまとめを読み、必要なら元の記録を1件開く時間です。まとめの文を候補者にそのまま伝える運用にはしません。 候補者に伝えるのは、キャリアアドバイザーが選んだ言葉です。
例外に対処する
| 起きること | 対応 |
|---|---|
| その企業への推薦が過去に無い | 「この企業の過去の選考はありません」と出す。別の企業の記録を代わりに出さない |
| ある結果の区分が0件 | その区分を「該当なし」として表示する。他の区分で埋めない |
| 理由の文が「総合的に判断」だけ | 区分は unknown。一覧には段階だけを出す |
non_merit に当たる理由 | 索引に入れず、法人担当の確認の一覧へ。検索の結果には出さない |
| 求人が改定されている | 改定より前の記録に印を付ける |
| 入力に氏名や社名が入っている | 伏せたうえで検索する。伏せたことを画面に出す |
| 同じ候補者が同じ企業に再推薦された | candidate_key で重なりを数え、同じ人の記録を2件として数えない |
| Bedrock の呼び出しに失敗した | 一覧と集計だけを出し、まとめは再試行を促す |
4行目が、この構成でいちばん大事な例外です。 見送りの理由に書かれた事柄が企業の側の問題でも、それを避けて推薦する人を選べば、紹介会社が差別に加わることになります。 検索の段で見せないことで、その選び方ができない仕組みにします。
記録を残す
- 取り込んだ記録の推薦番号、結果の登録日、取り込んだ日時
- Claude が返した仕分けのJSONと、法人担当が確定したときに直した区分
non_merit_flagの記録と、法人担当が決めた企業への対応- 検索のたびの求人、伏せたあとの経歴の要約、結果ごとの上位3件、理由の区分の件数
- Claude に渡した検索結果と、返ってきたまとめと引用
- キャリアアドバイザーが推薦したか、しなかったかと、その後の選考の結果
最後の行は、仕組みの効き目を測る材料です。 一覧を見たうえで推薦した人の書類の通過率が、見なかったときと比べてどう動いたかを、半年ごとに確かめます。
04実装レベルの3段階
半自動化で、企業ごとの理由の件数までは見えます。 ただし経歴の近さで並ばないので、どの見送りが今回の候補者に近いかは、まだ1件ずつ開いて確かめます。 本格構成との差はここで、本記事の想定は本格構成です。
05工数削減シミュレーション
導入後 600件 × 4分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 法人担当(リクルーティングアドバイザー)と候補者担当(キャリアアドバイザー)が分かれている人材紹介会社で、求人企業からの選考結果と見送りの理由が案件管理の仕組みに文で残っている場合。同じ企業へ何人も推薦しているのに、前に誰がどこで見送られたかを推薦のたびに法人担当へ聞いている場合。担当の交代のたびに、企業ごとの選考の傾向が引き継がれずに途切れている場合。AWS を使っており、検索基盤と生成AIを同じ環境で動かせる場合。
- 求人企業から選考結果の理由をほとんど受け取っておらず、合否だけが記録されている場合。推薦の件数が少なく、法人担当が企業ごとの傾向を全部覚えていられる規模の場合。見送りの理由に、本人の適性・能力と関係のない事柄が書かれたまま残っており、それを分けて扱う運用が無い場合(先に記録の扱いを決める必要がある)。なお、推薦するかどうか、候補者にどう伝えるかはキャリアアドバイザーが決め、この構成はそれを代わりに行いません。
07最小構成で試す方法
- 推薦の多い企業を5社選び、各社の過去の推薦を100件ずつ集める(氏名と社名は伏せる)
- 各社について、法人担当に「この企業が見ているもの」を3行で書いてもらう
- 最近の推薦を各社6件、計30件選ぶ
- 手元のAIサービスに各社の100件を貼り、30件それぞれについて「経歴の近い推薦を、内定・書類で見送り・面接で見送りごとに3件ずつ選び、理由を記録番号付きで並べてください。通るかどうかは書かないでください」と指示する
- 出てきた一覧を、法人担当の3行と見比べてもらう
法人担当と一緒に見てください。 一覧から読める傾向が、法人担当の3行と合うかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 法人担当の3行と合う傾向が読める | 索引と collapse の構築に進む |
| 理由が「総合的に判断」ばかりで傾向が読めない | 理由の聞き方を先に直す。 検索の問題ではない |
| まとめに合否の予測や推薦文の書き方が混ざる | 指示の書き方で直る。構成は有効 |
2行目が出たら、法人担当が企業に理由を聞くときの質問の型を先に決めます。 理由が残っていない企業の傾向は、検索では作れません。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 上位が同じ結果ばかりで違いが見えない | collapse で結果の区分ごとに束ね、inner_hits で3件ずつ |
| collapse が効かない | 束ねる項目を keyword にする |
| 結果の区分の値が揺れて束が割れる | 取り込みで決まった値にそろえる |
| 件数の表示が多すぎる | hits.total は束ねる前の件数。画面の書き方を変える |
| 理由の言葉で関係の無い記録が当たる | 理由の文を検索の点数に使わない |
| 適性・能力と関係のない理由が一覧に出る | 取り込みで分け、索引に入れない |
| 候補者が誰か分かってしまう | 社名と学校名を伏せ、candidate_key をマスキングする |
| まとめが合否を予測する | 予測と、件数の多い理由の当てはめを別々に禁じる |
| まとめが推薦文の盛り方を提案する | 書き方の提案を禁じる |
| 検索が遅い | inner_hits を1組にする |
上の3行が、この構成の失敗のほとんどです。 どれも、結果の区分をどう持つかから出ています。区分の値がそろっていて、keyword で持たれていれば、結果ごとに並べる仕組みは崩れません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 候補者の職務経歴の要約、企業ごとの選考の結果と理由です。氏名と連絡先は取り込みませんが、経歴と選考の結果は、本人にとって知られたくない情報です。
- 候補者を特定できる項目を伏せる … 社名・学校名・生年を取り込みで伏せ、
candidate_keyはフィールドマスキングで伏せます。標準のマスキングは安全な乱数のハッシュとされ、集計の結果が不正確になることがあるので、重なりを数える処理だけが元の値を使える役割にします - 公開範囲を役割で分ける … 細かなアクセス制御の文書レベルのセキュリティで、取引を終えた企業や秘密保持の約束がある求人の記録は、法人担当の役割だけが見られるようにします
- 細かなアクセス制御は、有効にしたあと無効にできない … 有効にするには、HTTPS、保存時の暗号化、ノード間の暗号化が必要です。構築の最初に有効にします
- 適性・能力と関係のない事柄を扱わない … 厚生労働省のページでは、職業安定法第5条の5と指針により、社会的差別の原因となるおそれのある個人情報は原則として収集が認められないとされています。企業からの理由に書かれていても、索引に入れず、法人担当が企業と話す材料にだけ使います
- 推薦の判断を仕組みに渡さない … 返すのは過去の選考の事実までです。推薦するかどうかは、候補者の希望を知っているキャリアアドバイザーが決めます
誤りが起きた場合のリスクは、数件の過去の記録で候補者の機会を閉じることと、差別につながる理由を傾向として広めることの2つです。 前者は予測を禁じることで、後者は取り込みの段で分けることで防ぎます。
10まず何から始めるか
1週目:理由の聞き方と、取り込まない項目を決める
法人担当と、企業に見送りの理由を聞くときの質問の型(経験、志向、条件のどれか)を決めます。あわせて、取り込まない項目と、non_merit に当たったときの法人担当の対応を決めます。
2週目:5社・30件で試す
推薦の多い5社の記録で、結果ごとに選ばせます。法人担当の3行と合う傾向が読めるか、理由が残っていない企業がどれかを見ます。
3週目:理由の仕分けを作る
5社の記録を Claude に読ませ、4つの区分に仕分けます。法人担当が全件を見て、non_merit の取りこぼしと、書かれていない理由の足し込みが無いかを確かめます。
4週目:結果の登録のたびの取り込みを始める
新しく結果が登録される推薦から、法人担当の確定付きで仕分けをためます。この時点では、検索は企業で絞った一覧と区分の件数だけにします。
2か月目: 経歴の要約の言葉の検索と、collapse による結果ごとの上位3件を足し、推薦の画面に組み込みます。3か月目以降: 過去の記録を一括で取り込み、細かなアクセス制御を整え、引用付きのまとめを足します。キャリアアドバイザーから法人担当への「通りそうですか」という問い合わせが、「この理由は今も生きていますか」に変わった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Amazon OpenSearch Service の対応プラグインの一覧で、Sudachi Analysis が日本語向けに推奨され OpenSearch 1.3以降で使えること。kuromoji と ICU が全ドメインに入っていること | Amazon OpenSearch Service: Plugins by engine version | 2026-10-06 |
| 細かなアクセス制御が索引・文書・項目の単位の制限とフィールドマスキングを提供すること。標準のマスキングが安全な乱数のハッシュで、集計が不正確になりうること。有効化に HTTPS・保存時の暗号化・ノード間の暗号化が必要で、有効にしたあと無効にできないこと | Amazon OpenSearch Service: Fine-grained access control | 2026-10-06 |
collapse が検索結果を項目の値で束ねて束ごとに最上位の1件を返し、inner_hits で束ごとに複数件を返せること。束ねる項目が keyword か数値であること。集計には効かず、総件数は束ねる前の件数であること。inner_hits が多いと遅くなること。search_after と使うときの条件 | OpenSearch Documentation: Collapse search results | 2026-10-06 |
検索結果ブロック(source・title・content)で自社の文書を渡すと、Claude が引用付きで回答すること。引用がテキストブロックを単位に付くこと | Claude Docs: Search results | 2026-10-06 |
| 公正な採用選考の基本が、応募者に広く門戸を開くことと、適性・能力に基づいた採用基準とすることであること。職業安定法第5条の5と指針により、社会的差別の原因となるおそれのある個人情報は原則として収集が認められないこと | 厚生労働省 公正採用選考特設サイト: 公正な採用選考の基本 | 2026-10-06 |
| 就職差別につながるおそれがある14事項(本籍・出生地、住宅状況、家族、生活環境、宗教、人生観、思想、購読新聞、支持政党、尊敬する人物、労働組合・社会運動、身元調査、合理的・客観的に必要性のない健康診断、適性・能力に関係ない事項を含む応募書類) | 厚生労働省 公正採用選考特設サイト: 採用選考時に配慮すべき事項 | 2026-10-06 |
見送りの理由の扱いと、求人企業への伝え方は、社内の法務・コンプライアンスの担当と、必要に応じて労働局に確認してください。 本記事は公開仕様と厚生労働省のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0515)についてのご相談はこちらから。
