人材紹介会社のキャリアアドバイザーが、職務経歴書と面談記録から企業に出す推薦文の下書きを作り、本人が特定できる記載を伏せる
求職者の職務経歴書と面談記録、求人票から、求人企業に出す推薦文の下書きを作ります。現職の社名など本人が特定できる記載を伏せ、企業に渡すべきでない記載に印を付けてから、キャリアアドバイザーの確認に回します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Power Automate
- 対象業界
- 人材
- 対象部門
- 営業
- 対象業務
- 内容確認・チェック/書類作成
- 主な課題
- 営業フォローが追いつかない/書類作成に時間がかかる/確認ミスが多い
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 推薦すると決めた求職者と求人の組み合わせを、推薦の一覧で開く
- 職務経歴書を読み、求人票の必須の条件と歓迎の条件に合う経験に印を付ける
- 面談記録を読み、強み、転職の理由、志望の動機、希望の条件を拾う
- 前に別の企業へ書いた推薦文を開き、使える部分を写す
- 推薦文を書く。伏せると頼まれている社名や案件の名前を、業種と規模の言い方に置き換える
- 職務経歴書の側も、伏せる箇所を塗りつぶすか書き換える
- 読み直して、求人企業の採用管理の画面かメールで送る
- 人推薦すると決めた組み合わせを、推薦の一覧で「推薦文を作る」にする
- 自動Azure Functions が、職務経歴書、面談記録の使ってよい欄、求人票、同意の記録を読む
- 自動同意の記録で「伏せる」とされた社名・案件名などを、登録された置き換えの言い方に機械的に置き換える
- 自動Azure AI Language の PII 検出で、置き換えから漏れた人名・組織名・住所・電話番号・メールアドレスを拾う
- 自動Azure OpenAI に、推薦文の下書きと、根拠にした箇所、特定につながりうる記載の候補を作らせる
- 自動Azure Functions が、伏せた値が下書きに残っていないか、根拠の引用が原文にあるかを照合する
- 人キャリアアドバイザーが、下書きと印の付いた箇所を確かめて直す
- 人印の付いた記載のうち、企業に渡すか迷うものは求職者に確かめてから送る
各工程の詳しい説明を読む
- 推薦すると決めた求職者と求人の組み合わせを、推薦の一覧で開く
- 職務経歴書を読み、求人票の必須の条件と歓迎の条件に合う経験に印を付ける
- 面談記録を読み、強み、転職の理由、志望の動機、希望の条件を拾う
- 前に別の企業へ書いた推薦文を開き、使える部分を写す
- 推薦文を書く。伏せると頼まれている社名や案件の名前を、業種と規模の言い方に置き換える
- 職務経歴書の側も、伏せる箇所を塗りつぶすか書き換える
- 読み直して、求人企業の採用管理の画面かメールで送る
(a)書く時間が足りない。 推薦文1件に20分かかると、1日に何件も書けません。書く時間が、求職者との面談や企業との調整の時間を削っています。 推薦が遅れるほど、求職者は他社経由で同じ企業に応募してしまいます。
(b)伏せるはずの社名が残る。 職務経歴書には現職の社名が何度も出てきます。推薦文では置き換えたのに、職務経歴書の3ページ目の案件の説明に社名が残っていた、ということが起きます。4番目で前の推薦文を写したときに、別の求職者の情報が混ざることもあります。
(c)面談の話が混ざる。 転職の理由を書くときに、面談記録の「上司との関係」「家族の介護」がそのまま入ることがあります。求職者が企業に伝えるつもりで話したことではありません。
(d)書き方が人によって違う。 求人票の条件に一つずつ答える人もいれば、経歴を時系列でなぞる人もいます。企業から「この担当の推薦文は読みやすい」と言われる人とそうでない人がいて、書類選考の通り方にも差が出ます。
- 【人】 推薦すると決めた組み合わせを、推薦の一覧で「推薦文を作る」にする
- 【自動】 Azure Functions が、職務経歴書、面談記録の使ってよい欄、求人票、同意の記録を読む
- 【自動】 同意の記録で「伏せる」とされた社名・案件名などを、登録された置き換えの言い方に機械的に置き換える
- 【自動】 Azure AI Language の PII 検出で、置き換えから漏れた人名・組織名・住所・電話番号・メールアドレスを拾う
- 【自動】 Azure OpenAI に、推薦文の下書きと、根拠にした箇所、特定につながりうる記載の候補を作らせる
- 【自動】 Azure Functions が、伏せた値が下書きに残っていないか、根拠の引用が原文にあるかを照合する
- 【人】 キャリアアドバイザーが、下書きと印の付いた箇所を確かめて直す
- 【人】 印の付いた記載のうち、企業に渡すか迷うものは求職者に確かめてから送る
3番目が、この設計の分かれ目です。 伏せることは、AIの判断ではなく同意の記録とプログラムの置き換えで行います。AIの前で伏せておけば、AIが社名を見ることも、書くこともありません。
8番目を残しているのも、意図してのことです。 職業安定法第5条の5は、求職者の個人情報を業務の目的の達成に必要な範囲で、目的を明らかにして収集し、その範囲で使うことを求めています(本人の同意がある場合などを除く)。どこまでを企業に渡すかは、最後は求職者の意思です。
02今回想定するシステム構成
求職者の管理システム(職務経歴書・面談記録・同意の記録)+求人の管理システム(求人票) │ 「推薦文を作る」の操作 ▼【トリガー】推薦の一覧の状態の変更 Azure Functions ── 必要な欄だけを読み、伏せる値を置き換える ▼ Azure AI Language ── 置き換えから漏れた固有名の検出(PII 検出) ▼ Azure OpenAI(構造化出力)── 推薦文の下書き、根拠、特定につながる記載の候補 │ ① 求人票の条件ごとの合う経験 ② 強み ③ 転職の理由と志望の動機 │ ④ 希望の条件 ⑤ 根拠の引用 ⑥ 特定につながりうる記載 ▼ Azure Functions ── 伏せた値の残りの検索、引用の照合 ▼ 【キャリアアドバイザーが確認して直す】 ├──▶ 迷う記載 → 求職者に確認 └──▶ 求人企業へ送付(いまの経路のまま)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 連携 | Azure Functions(読み出し、置き換え、照合、下書きの書き込み) | Power Automate |
| 固有名の検出 | Azure AI Language(テキストの PII 検出) | 社名・人名の辞書による自前の検出 |
| 保管 | Azure Blob Storage(入力、下書き、確認の記録) | 求職者の管理システムの保管領域 |
求人企業への送付は、いまの経路のままです。 この構成は、求職者の管理システムの推薦文の欄に下書きを入れるところまでで、企業へ送るのはキャリアアドバイザーです。
Azure OpenAI を選ぶ理由は、構造化出力で JSON スキーマに沿った出力を受けられることです。 公式の説明では、構造化出力は指定した JSON スキーマに従うもので、Chat Completions API と Responses API の両方で使えるとされています。推薦文の各段落と、その根拠にした箇所を組で受けられるので、根拠の無い記述をプログラムで見つけられます。 求職者の情報を Azure の中で扱い、契約と権限の管理を一つにまとめられることも理由です。
03どうやって実装するのか
処理の起点を決める
キャリアアドバイザーが推薦の一覧で「推薦文を作る」にしたことを起点にします。 推薦するかどうかは人が決めるので、決めた組み合わせだけを処理します。 推薦の候補をAIが自動で選んで推薦文まで作る形にはしません。
下書きは数分で出る想定で、出たら担当者に通知します。 同じ求職者を複数の企業に推薦するときは、組み合わせごとに別々に処理します。前に書いた別の企業向けの推薦文は、入力に使いません。 第3章の(b)の混ざりの元を、最初から断ちます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 職務経歴書 | 職歴、担当した業務と案件、成果、使える技術、資格 | 求職者の管理システム(ファイルを文字にしたもの) |
| 面談記録(使ってよい欄) | 強み、転職の理由(企業に伝える版)、志望の動機、希望の条件 | 求職者の管理システム |
| 求人票 | 職種、必須の条件、歓迎の条件、仕事の内容、求める人物像 | 求人の管理システム |
| 同意の記録 | 推薦先の企業への提供の同意、伏せる項目と置き換えの言い方 | 求職者の管理システム |
質を決めるのは、面談記録の欄の分け方です。 転職の理由を「本人から聞いた理由」と「企業に伝える理由」の2つの欄に分けて書いておけば、AIに渡すのは後者だけにできます。 1つの自由記述の欄に全部書かれていると、どこまで渡してよいかを機械では分けられません。
同意の記録には、伏せる項目を値で持たせます。 「現職の社名:伏せる、置き換え:従業員3,000名の電機メーカー」「担当顧客名:伏せる、置き換え:大手通信会社」のように、伏せる値と置き換えの言い方を組で登録します。 面談のときにキャリアアドバイザーが求職者と一緒に決める欄です。
データの取得方法を決める
| 取るもの | どこから | どうやって |
|---|---|---|
| 職務経歴書 | 求職者の管理システム | 登録されたファイルを文字にしたものを読む(方式はシステムの仕様による) |
| 面談記録 | 求職者の管理システム | 使ってよい欄だけを項目を指定して読む |
| 求人票 | 求人の管理システム | 求人の番号で読む |
| 同意の記録 | 求職者の管理システム | 推薦先の企業への提供の同意と、伏せる値の一覧を読む |
面談記録は、欄を指定して読みます。 記録の全体を読んでから使う欄を選ぶのではなく、最初から使ってよい欄しか取り出しません。 渡さない欄は、Azure Functions のメモリにも載せないようにします。
推薦先の企業への提供の同意が無いときは、処理を止めます。 同意の記録を読み、その企業への推薦に同意が無ければ、下書きを作らずに担当者へ戻します。
AIへ渡す前に整形する
- 伏せる値の置き換え … 同意の記録の伏せる値を、職務経歴書と面談記録の中から探し、登録された置き換えの言い方に置き換えます。全角・半角、「株式会社」の前後、略称も一覧に入れて探します
- 固定で伏せる値 … 氏名、生年月日、住所、電話番号、メールアドレスは、同意の内容にかかわらず推薦文の材料から外します。企業には別の欄で渡るものです
- 漏れの検出 … Azure AI Language のテキストの PII 検出で、Person、Organization、Address、PhoneNumber、Email の区分を拾います。拾ったものは自動では伏せず、担当者に確かめてもらう一覧にします
- 渡すべきでない語の検出 … 本籍、出生地、家族の状況、宗教、政党、労働組合などに関わる語の一覧で検出し、その文を材料から外して担当者に知らせます
- 求人票の条件の分解 … 必須の条件と歓迎の条件を、1行1条件に分けて番号を付けます
1番目の置き換えは、AIには伏せ字と分かる形にします。 「〔現職:従業員3,000名の電機メーカー〕」のように括弧でくくり、初出だけ置き換えの言い方を付け、2回目以降は「〔現職〕」にそろえます。 こうしておくと、AIは同じ会社だと分かったうえで文章を組み立てられ、伏せ字を元の名前に戻そうとすることもありません。
3番目で拾ったものを自動で伏せないのは、拾いすぎるからです。 組織名の区分には、「AWS」「Salesforce」のような使える技術の名前も入ります。全部伏せると、推薦文から求職者の強みが消えます。伏せるかどうかは担当者が決め、決めたものは同意の記録に足して次から機械で置き換えます。
PII 検出は日本語に対応しています。 公式の言語の一覧では、テキストの PII 検出の対応言語に日本語(ja)が含まれています。区分は piiCategories で指定して絞れるとされているので、推薦文の材料で問題になる区分だけを指定します。
4番目は、厚生労働省の指針に合わせた一覧です。 職業紹介事業者は、人種、民族、社会的身分、門地、本籍、出生地その他社会的差別の原因となるおそれのある事項、思想及び信条、労働組合への加入状況を、原則として収集してはならないとされています。収集してはならない情報が、推薦文を通じて企業に渡ることも防ぎます。
AIに処理させる
させるのは、求人票の条件ごとに合う経験を職務経歴書から拾い、推薦文の下書きにし、根拠の箇所を示し、特定につながりうる記載に印を付けることです。
| 見るもの | させること | 判断できないときの扱い |
|---|---|---|
| 求人票の必須の条件 | 条件ごとに、合う経験を職務経歴書から拾って書く | 合う経験が見当たらなければ not_found とし、書かない |
| 求人票の歓迎の条件 | 同上 | 同上 |
| 強み | 面談記録の強みの欄と、職務経歴書の成果から書く | 根拠が無ければ書かない |
| 転職の理由と志望の動機 | 面談記録の「企業に伝える」欄だけから書く | 欄が空なら空にする |
| 特定につながりうる記載 | 珍しい受賞名、報道された案件、特許の番号など、置き換え後も本人を絞り込めそうな記述を引用する | 迷うものは印を付ける側に倒す |
一番上の行の右端が、この構成でいちばん大事な扱いです。 必須の条件に合う経験が見当たらないとき、AIは近い経験を広く解釈して「十分な経験があります」と書きます。推薦文に書かれた経験を、企業は書類選考の根拠にします。 書けないものは書かず、担当者に「この条件は経歴から読めない」と示します。
最後の行は、置き換えでは消えない特定の手がかりです。 社名を「大手電機メーカー」に置き換えても、「社内で初めて〇〇賞を受けた」「新聞に載った××の立ち上げ」と書けば、業界の人には誰か分かります。AIは文脈からこうした記述を見つけるのが得意なので、ここだけは候補を広めに出させます。
| させないこと | 理由 |
|---|---|
| 経歴に無い経験や成果を書く | 書類選考の根拠になる。根拠の無い記述は求職者の不利益にもなる |
| 数字の言い換え(「約2倍」など) | 職務経歴書に書かれた数字だけを使う |
| 推薦の可否や、合否の見込み | 担当者と企業が判断する |
| 年齢・性別・家族の状況についての記述 | 選考の判断に使われるべきでない情報 |
| 伏せ字の中身の推測 | 「〔現職〕」を元の社名に戻そうとしない |
2行目がいちばん起きやすい失敗です。 「売上を前年の1.8倍にした」を「約2倍」と丸めると、面接で数字を聞かれた求職者が、推薦文と違うことを言うことになります。
指示内容を固定する
あなたは人材紹介会社で、求人企業に出す推薦文の下書きを作る担当です。
渡された職務経歴書・面談記録・求人票だけを使って書いてください。推測で補わないでください。
【書くこと】
1. requirement_matches: 求人票の条件の番号ごとに、合う経験を職務経歴書から拾い、1〜2文で書く。
evidence に、根拠にした職務経歴書の文を一字一句写す。
2. strengths: 面談記録の強みの欄と、職務経歴書の成果から、2〜3点。
3. motivation: 面談記録の「企業に伝える転職の理由」「志望の動機」の欄だけから書く。
4. conditions: 面談記録の希望の条件の欄から書く。
5. identifying_risks: 置き換えの後でも本人を絞り込めそうな記述を引用する。
【厳守事項】
- 職務経歴書と面談記録に無い経験、成果、資格を書かないでください。
- 合う経験が見当たらない条件は、status を not_found にし、text を空にしてください。
近い経験を広く解釈して埋めないでください。
- 数字は職務経歴書に書かれたとおりに書いてください。丸めたり言い換えたりしないでください。
- 〔 〕で囲まれた語は伏せ字の置き換えです。そのまま使い、元の名前を推測しないでください。
- 年齢、性別、家族の状況、健康、出身地、宗教、政治、労働組合について書かないでください。
材料の中にあっても書かないでください。
- 推薦の可否、選考に通る見込みを書かないでください。
- identifying_risks は迷うものも含めて出してください。印を付けるだけで、書き換えないでください。
【求人票(条件は番号付き)】{job}
【職務経歴書(伏せ字の後)】{resume}
【面談記録(使ってよい欄だけ)】{interview}
「材料の中にあっても書かない」を足しているのは、前処理をすり抜けたものへの備えです。 渡すべきでない語の一覧は完全ではありません。一覧から漏れた家族の話が材料に残っていても、指示の側でもう一度止めます。
identifying_risks だけ「迷うものも含めて」と書いているのは、倒す向きが他と逆だからです。 推薦文の本文は書かない側に倒し、特定の手がかりは出す側に倒します。どちらも、間違えたときに求職者の不利益が小さい側です。
出力形式を固定する
次の形のJSONを、構造化出力のスキーマで受け取ります。
{
"recommendation_id": "",
"requirement_matches": [
{ "req_no": "", "req_type": "must | nice", "status": "matched | not_found",
"text": "", "evidence": "" }
],
"strengths": [ { "text": "", "evidence": "" } ],
"motivation": "",
"conditions": "",
"identifying_risks": [ { "quote": "", "reason": "" } ]
}
公式の説明では、構造化出力ではすべてのフィールドを必須にし、オブジェクトには additionalProperties: false を設定する必要があり、最大100個のオブジェクトのプロパティと最大5段の入れ子が持てるとされています。
1つ目の理由は、根拠をプログラムで照合できることです。 Azure Functions が evidence を伏せ字の後の職務経歴書と突き合わせ、一致しないものは「根拠を確認できない」として下書きの画面で赤く示します。
2つ目は、伏せた値の残りを機械で探せることです。 下書きのすべての文字列を、同意の記録の伏せる値と固定で伏せる値で検索します。1件でも見つかれば、下書きを担当者に出さずに止めます。 前処理で伏せているので通常は起きませんが、伏せる値の表記ゆれの一覧が足りないと起きます。
必須の条件の1つには、たとえば次のような要素が返ります。
{ "req_no": "M2", "req_type": "must", "status": "matched",
"text": "〔現職〕で基幹システムの刷新に5年携わり、要件定義から移行まで6名のチームを率いました。",
"evidence": "2019年4月〜現在 〔現職〕 基幹システム刷新プロジェクト(要件定義〜移行、チームリーダー、メンバー6名)" }
text の「5年」は根拠の「2019年4月〜現在」から読める範囲かを、担当者が見る箇所です。 期間の計算を伴う記述は、照合が通っても目で確かめる対象にします。
3つ目は、求人票の条件への答え方がそろうことです。 requirement_matches を条件の番号順に並べて推薦文の前半にすれば、第3章の(d)の書き方の違いが、構成のところでそろいます。
| 下書きの状態 | 条件 |
|---|---|
ready | 伏せた値の残りが無く、根拠の照合がすべて通り、identifying_risks が空 |
review | identifying_risks か PII 検出の拾い出しがある、または必須の条件に not_found がある |
blocked | 伏せた値が下書きに残っている、または提供の同意が無い |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 求職者の管理システム | 読み取りの API と、推薦文の欄への書き込み(製品の仕様による) | 経歴書・面談記録・同意を読み、下書きを入れる |
| 求人の管理システム | 読み取りの API | 求人票 |
| Azure AI Language | テキストの PII 検出の API | 漏れた固有名の拾い出し |
| Azure OpenAI | Chat Completions API(構造化出力) | 推薦文の下書き、根拠、特定の手がかり |
職務経歴書のファイルそのものは、この構成では書き換えません。 企業に出す職務経歴書の伏せ字は、同じ伏せる値の一覧を使って別の工程で作るか、担当者がいまの方法で行います。推薦文と職務経歴書で伏せ方がずれないよう、一覧は1つにします。
人が確認する
blockedを最初に見る … 伏せた値が残った理由を確かめ、表記ゆれを同意の記録の一覧に足してから作り直しますreviewの印を見る …identifying_risksと PII 検出の拾い出しを1つずつ見て、伏せるか残すかを決めますnot_foundの条件を確かめる … 経歴から本当に読めないのか、職務経歴書に書かれていないだけなのかを考えます。後者なら求職者に聞いて経歴書を直してもらいます- 本文を読んで直す … 求職者の人柄や、面談で感じた強みを担当者の言葉で足します
- 迷う記載は求職者に確かめる … 伏せるか迷った記載は、送る前に求職者に聞きます
確認の画面は、左に下書き、右に根拠の職務経歴書を並べます。 下書きの文を選ぶと、根拠にした箇所が右側で光るようにし、照合が通らなかった文は赤、identifying_risks の引用は黄色で示します。担当者が見る場所を色で先に示しておくことが、1件7分に収める工夫です。
3番目は、推薦文の外にも効きます。 条件に合う経験があるのに職務経歴書に書かれていないなら、直すべきは職務経歴書のほうです。 求職者と一緒に経歴書を直すと、他の企業への推薦でも同じ経験が拾えるようになります。
目標は、600件をならして1件7分です。 ready の下書きは読んで担当者の言葉を足すだけで数分、review の下書きは印を見て決める分だけ時間がかかります。
例外に対処する
| 起きること | 対応 |
|---|---|
| 推薦先の企業への提供の同意が無い | blocked。下書きを作らず、担当者が求職者に確かめる |
| 伏せた値が下書きに残った | blocked。表記ゆれを一覧に足して作り直す |
| 職務経歴書が画像のPDFで文字が取れない | 下書きを作らない。求職者に文字の入ったファイルをもらう |
| 職務経歴書が英語 | 推薦文は日本語で書かせる。根拠の引用は英語の原文のまま |
| 面談記録の「企業に伝える」欄が空 | motivation を空にする。担当者が求職者と話して書く |
| 求人票の条件が1つの長い文で書かれている | 前処理で分解できなければ、担当者が条件を分けて登録し直す |
| 同じ企業に別の担当から同じ求職者を推薦しようとした | 推薦の履歴で止める。二重推薦はこの構成の外で防ぐ |
上の2行は、AIの前で止める例外です。 同意が無いまま下書きを作れば、その時点で求職者の情報を推薦の目的で使ったことになります。作ってから捨てるのではなく、作る前に止めます。
記録を残す
- 推薦の番号ごとの入力(伏せ字の後の職務経歴書、渡した面談記録の欄、求人票)
- 適用した伏せる値の一覧の版と、置き換えた箇所の数
- PII 検出の結果と、担当者が伏せる・残すと決めた記録
- Azure OpenAI に渡した入力と、返ってきたJSONの全文
- 根拠の照合の結果と、下書きの状態
- 担当者が直した記録と、企業に送った最終版
3つ目が、伏せる値の一覧を育てる材料になります。 担当者が「伏せる」と決めた組織名は、次からその求職者の同意の記録に足し、機械で置き換えます。 使える技術の名前で「残す」と決めたものは、検出の除外の一覧に足します。
04実装レベルの3段階
半自動化で、1件20分が11分程度になります。 下書きは出ますが、伏せ字の漏れの見直しと根拠の確かめを、担当者が目で行います。本格構成で7分になり、この段階が本記事の想定です。 差が大きいのは、伏せた値の検索と根拠の照合が、目で行うと時間のかかる作業だからです。
05工数削減シミュレーション
導入後 600件 × 7分 ÷ 60 = 70 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 中途採用の人材紹介を行い、キャリアアドバイザーが求職者ごと・求人ごとに推薦文を書いて企業へ出している人材紹介会社。求職者の多くが在職中で、現職の社名や担当した案件を企業に伏せてほしいと頼まれることが多い場合。職務経歴書と面談記録を求職者の管理システムで持っている場合。Azure を使っている場合。
- 推薦文を書かず、職務経歴書をそのまま企業へ送っている場合。月の推薦が数十件で、文章の作成が負担になっていない場合。求職者の同意の範囲を管理システムで持っておらず、どこまで企業に渡してよいかが担当者の記憶にしか無い場合。なお、推薦するかどうか、どの企業に推薦するかの判断はこの構成では代替できません。
07最小構成で試す方法
- 先月送った推薦文から20件を選ぶ(現職の社名を伏せた求職者を半分以上入れる)
- 職務経歴書と面談記録から、伏せる社名・案件名を手で置き換えたものを作る
- 第7章の指示と求人票を使い、Azure OpenAI の画面で1件ずつ下書きを作らせる
- 出てきた下書きを、当時送った推薦文と並べて読む
- 根拠の無い記述、丸めた数字、特定につながる記述に印を付ける
20件は必ずやってください。 文章の上手さより先に、経歴に無いことを書いていないか、数字を丸めていないかを見ます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の推薦文と同じ経験が拾われ、根拠が付いている | 自動の処理に進む |
| 必須の条件を広く解釈して埋めた | not_found の指示を強める。構成は有効 |
| 当時の推薦文に、伏せるはずの記載が残っていた | 伏せる値の一覧と同意の記録の整備が先 |
3行目が出たら、それがこの構成をつくる理由です。 手で書いていたときの伏せ字の漏れが、20件の中で見えたということです。同意の記録に伏せる値を持たせる準備から始めてください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 伏せたはずの社名が表記ゆれで残る | 略称・英字・旧社名も一覧に入れる。 残りを機械で検索して止める |
| 必須の条件を広く解釈して埋める | not_found を明示して、空にしてよいと書く |
| 数字が丸められる | 職務経歴書のとおりに書かせ、根拠の照合で見る |
| PII 検出が技術の名前まで拾う | 自動では伏せない。除外の一覧を育てる |
| 置き換えても受賞名などで本人が分かる | identifying_risks を広めに出させ、担当者が決める |
| 面談記録の機微な話が混ざる | 使ってよい欄だけを読み出す。欄を分ける運用にする |
| 前の推薦文を写して別人の情報が混ざる | 前の推薦文を入力に使わない |
| 職務経歴書の側の伏せ字とずれる | 伏せる値の一覧を1つにして両方に使う |
| 同意の無い企業に推薦文を作る | 同意の記録を読み、無ければ blocked |
上の2行が、この構成の失敗のほとんどです。 前者は求職者の転職活動を現職に知らせる失敗、後者は企業に経歴を誤って伝える失敗です。どちらも、AIに気をつけさせるのではなく、伏せる値の検索と根拠の照合という機械の確認で止めます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 求職者の職務経歴書(職歴、担当した案件、成果)、面談記録の一部(強み、転職の理由、希望の条件)、同意の記録です。氏名・連絡先は推薦文の材料から外しますが、経歴の組み合わせだけで本人が分かることがあります。
- 使ってよい欄だけを読む … 職業安定法第5条の5は、求職者の個人情報を業務の目的の達成に必要な範囲で収集・保管・使用することを求めています。推薦文に要らない面談記録の欄は、AIに渡しません
- 収集してはならない情報を企業に渡さない … 指針は、本籍・出生地などの社会的差別の原因となるおそれのある事項、思想及び信条、労働組合への加入状況を、原則として収集してはならないとしています。前処理と指示の二重で止めます
- 処理の地域を決める … 公式の説明では、プロンプトと応答は顧客が指定した地域の中で処理され、Global や DataZone のデプロイの種類ではそれぞれの範囲で処理されうるとされています。日本の地域の標準のデプロイを選びます
- 学習への利用と不正利用の監視を確かめる … 公式の説明では、プロンプトと応答は他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないとされています。一方で、不正利用の監視で兆候が検知されると、プロンプトと応答の一部が確認の対象になり、必要に応じて人が確認するとされています。監視の扱いの変更を申請できる条件に当たるかを確かめます
- 履歴を残す機能を使わない … Responses API は会話の履歴を保存する機能とされています。推薦ごとに完結する処理なので Chat Completions API を使います
- 企業への送付を自動にしない … 送る前に担当者が読み、迷う記載は求職者に確かめます
誤りが起きた場合のリスクは、伏せるべき記載が企業に渡ることと、経歴に無いことが推薦文に書かれることの2つです。 前者は求職者の在職先との関係を、後者は求職者と企業の信頼を損ねます。どちらも、伏せる値をAIの前で機械的に置き換え、下書きを機械で検索し、根拠を照合することで防ぎます。
10まず何から始めるか
1週目:同意の記録に伏せる値の欄を足す
求職者の管理システムの同意の記録に、伏せる項目、伏せる値、置き換えの言い方の欄を足します。いま担当している求職者のうち、現職の社名を伏せている人から登録します。
2週目:20件で試す
先月送った推薦文から20件を選び、手で伏せた材料で下書きを作らせます。当時の推薦文と並べ、経歴に無いことを書いていないか、数字を丸めていないかを最優先で見ます。
3週目:面談記録の欄を分ける
転職の理由を「本人から聞いた理由」と「企業に伝える理由」に分けるなど、推薦文に使ってよい欄を決めます。 渡すべきでない語の一覧を作ります。Azure の処理の地域と、不正利用の監視の扱いを決めます。
4週目:置き換えから下書きまでをつなぐ
「推薦文を作る」の操作から、材料の読み出し、伏せる値の置き換え、下書きの作成までをつなぎます。この時点では伏せた値の残りの検索だけを入れ、PII 検出と根拠の照合は担当者が目で行います。
2か月目: PII 検出と根拠の照合を足し、review と blocked の件数を毎週数えます。3か月目以降: 推薦文の欄への書き込みをつなぎ、1件20分が何分になったかを実測します。伏せる値の一覧と除外の一覧が育ち、blocked がほとんど出なくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 職業紹介事業者などが、求職者等の個人情報を業務の目的の達成に必要な範囲で、目的を明らかにして収集し、その範囲で保管・使用しなければならないこと(本人の同意がある場合その他正当な事由がある場合を除く)。個人情報を適正に管理するために必要な措置を講じなければならないこと(第5条の5) | e-Gov 法令API: 職業安定法 | 2026-10-14 |
| 職業紹介事業者が、人種、民族、社会的身分、門地、本籍、出生地その他社会的差別の原因となるおそれのある事項、思想及び信条、労働組合への加入状況を原則として収集してはならないこと。同意を得る際は具体的に明示し、必要な範囲を超える同意を職業紹介の条件としないこと(平成11年労働省告示第141号 第5) | 新潟労働局: 指針(平成11年労働省告示第141号)(抄) | 2026-10-14 |
テキストの PII 検出の対応言語に日本語(ja)が含まれること | Microsoft Learn: PII detection language support | 2026-10-14 |
PII 検出の区分に Person、Organization、Address、PhoneNumber、Email などがあり、piiCategories で指定して取り出すこと | Microsoft Learn: Entity categories recognized by PII detection | 2026-10-14 |
構造化出力が指定した JSON スキーマに従い、Chat Completions API と Responses API の両方で使えること。すべてのフィールドを必須にし additionalProperties: false を設定すること。最大100個のオブジェクトのプロパティと最大5段の入れ子 | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-14 |
| プロンプトと応答が他の顧客や OpenAI に提供されず、基盤モデルの学習に使われないこと。プロンプトと応答は顧客が指定した地域で処理され、Global と DataZone のデプロイではそれぞれの範囲で処理されうること。Responses API が会話の履歴を保存すること。不正利用の監視で、兆候が検知されるとプロンプトと応答の一部が確認の対象になり、必要に応じて人が確認すること。監視の扱いの変更を申請できること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-14 |
求職者の個人情報の扱いと、企業に提供する範囲の同意の取り方は、自社の個人情報の取扱いの規程と職業紹介の手続きに沿って決めてください。 本記事は、上記の公開情報で確認できた範囲だけを扱っています。指針は新潟労働局の掲載した抄録で確認しています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1588)についてのご相談はこちらから。
