スカウトを送る候補者を要件に照らして選び、一人ずつに合わせた文面の下書きを作る
候補者の職務経歴と募集要件を入力に、要件のどこに当たっているかを根拠付きで示し、その根拠を引いたスカウト文の下書きを作ります。採用担当の作業は、探して書くことから、示された候補と文面を確かめて送ることに変わります。
- 利用ツール
- ChatGPT/Claude/Gemini/Google Apps Script/Make/n8n/Power Automate/Python/Zapier
- 対象業界
- IT・SaaS/人材/建設/製造
- 対象部門
- 人事/採用
- 対象業務
- 情報検索/書類作成
- 主な課題
- 人手が足りない/属人化している/書類作成に時間がかかる
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- SaaS追加(小)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 媒体の検索画面で、職種・経験年数・地域などの条件を入れる
- 出てきた候補者を一覧で見て、目についた人を開く
- 職務経歴を読み、募集要件に合うかを判断する
- 合いそうなら、テンプレートを開く
- 候補者の経歴から1〜2行を拾って、冒頭に差し込む
- 職種に合わせて本文を調整する
- 送信する
- スプレッドシートに送信記録を付ける
- 採用担当が、媒体の検索で広めの条件をかけ、候補者リストを書き出す
- 自動送信済みリストと突き合わせ、重複を外す
- 自動募集要件の項目ごとに、経歴のどこが当たっているかを判定する
- 自動当たり方の強さで順位をつけ、上位だけを残す
- 自動残った候補者ごとに、根拠を引いたスカウト文の下書きを作る
- 人採用担当が、候補と文面を見て、直して送る
- 自動送信結果を記録し、次回の重複判定に使う
各工程の詳しい説明を読む
- 媒体の検索画面で、職種・経験年数・地域などの条件を入れる
- 出てきた候補者を一覧で見て、目についた人を開く
- 職務経歴を読み、募集要件に合うかを判断する
- 合いそうなら、テンプレートを開く
- 候補者の経歴から1〜2行を拾って、冒頭に差し込む
- 職種に合わせて本文を調整する
- 送信する
- スプレッドシートに送信記録を付ける
問題は4つあります。
(a)検索条件では絞り切れない。 「Javaの経験3年以上」で検索しても、出てくるのは数百人です。実際に合うかは経歴を開かないと分かりません。
(b)読む時間が足りず、テンプレートのまま送る。 忙しい週は、冒頭の差し込みを省いて送ることになります。返信率が目に見えて落ちます。
(c)選定の基準が担当者によって違う。 2名で判断がそろっていません。片方が見送った人に、もう片方が送ることもあります。
(d)送った人をまた送ってしまう。 媒体が2社あり、同じ人が両方に登録していることがあります。
- 採用担当が、媒体の検索で広めの条件をかけ、候補者リストを書き出す
- 【自動】 送信済みリストと突き合わせ、重複を外す
- 【自動】 募集要件の項目ごとに、経歴のどこが当たっているかを判定する
- 【自動】 当たり方の強さで順位をつけ、上位だけを残す
- 【自動】 残った候補者ごとに、根拠を引いたスカウト文の下書きを作る
- 【人】 採用担当が、候補と文面を見て、直して送る
- 【自動】 送信結果を記録し、次回の重複判定に使う
自動化されるのは「絞る」「読む」「下書きを作る」の3つです。残るのは「送ってよいかを決めて、文面を仕上げる」だけになります。
4で上位だけを残すところが要です。 200人を全員見るのではなく、当たりの強い60人を見て、そのうち送る人を決める形にします。
02今回想定するシステム構成
媒体の検索 → 候補者リストの書き出し(CSV) │ ▼ Googleスプレッドシート(受け皿) │ ▼【トリガー】新しい行が追加されたとき Zapier │ ├──▶ 送信済みリストとの突合(重複を外す) │ ├──▶ LLM API ── 要件との当たり判定(項目ごとに根拠を引く) │ ├──▶ 当たりの強さで順位づけ・上位のみ残す │ └──▶ LLM API ── スカウト文の下書き生成 │ ▼ 確認用シート(候補・根拠・文面を1行に並べる)──【人が確認して送信】 │ ▼ 送信記録の追記 + 採用管理システムへ登録
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Zapier | Make、Power Automate、n8n |
| 生成AI | Claude API | ChatGPT、Gemini |
| 集計 | Google Apps Script | Python |
媒体側の機能を先に確認してください。 スカウト媒体には、テンプレートの差し込みや自動送信の機能が用意されていることがあります。それで足りるなら、自前で組む必要はありません。 自前で組む価値があるのは、媒体が2社以上あって、判定の基準を自社でそろえたい場合です。
03どうやって実装するのか
処理の起点を決める
スプレッドシートに新しい行が追加されたことを起点にします。媒体からの書き出しを人が貼り付ける形にすると、媒体の利用規約に触れずに済みます。
媒体の画面を自動で操作して候補者を集める構成にはしないでください。多くの媒体で、自動取得は規約違反にあたります。 検索は人が行い、書き出したものを処理する形にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 候補者リスト | 候補者ID、職務経歴の本文、経験年数、希望条件 | 媒体からの書き出し |
| 募集要件 | 職種ごとの必須要件・歓迎要件・NG条件 | 社内の要件定義書 |
| 送信済みリスト | 候補者ID、送信日、職種、結果 | 過去の送信記録 |
| 自社の紹介文 | 職種ごとの仕事内容、条件、魅力 | 求人票 |
| 返信のあった文面 | 過去に返信が来たスカウト文 | 送信記録 |
データの取得方法を決める
候補者リスト: 媒体の検索結果を書き出します。書き出せる項目は媒体によって違います。 職務経歴の本文が書き出せない媒体では、この構成は成り立ちません。導入前に確認してください。
募集要件: 職種ごとに、必須要件・歓迎要件・NG条件を分けて書きます。「コミュニケーション能力が高い」のような書き方では判定できません。 「◯◯の設計経験3年以上」のように、経歴に書かれているかどうかで判定できる形にします。
送信済みリスト: 候補者IDだけでなく、氏名・生年・在籍企業の組み合わせでも照合できるようにします。 媒体が違えばIDも違うため、IDだけでは重複を外せません。
返信のあった文面: 過去に返信が来た文面を10通ほど集めます。これを文例として渡すと、下書きの質が安定します。
AIへ渡す前に整形する
- 重複の除外 … 送信済みリストと突き合わせます。同一人物が複数の媒体に登録していることがあるため、IDだけでなく属性の組み合わせでも見ます
- 在籍企業の除外 … 取引先や、採用を控えている企業に在籍する候補者を外します。この一覧は人が管理します
- 職種の割り当て … 1人の候補者が複数の職種に当たることがあります。もっとも当たりの強い1職種に寄せます
- 個人を特定する情報の最小化 … 判定に使わない項目(氏名、連絡先、住所)は、AIに渡す前に落とします
- 経歴が短すぎる候補の除外 … 本文が数行しかない場合は判定できません。人が見る列に回します
AIに処理させる
2つの処理を分けます。
1回目(判定): 候補者の経歴を、募集要件の項目ごとに当てはめます。当たった/当たらない/読み取れない の3つで返させ、当たった場合は経歴のどの記述かを引用させます。
2回目(生成): 判定で残った候補者について、引用された記述を使って文面を作ります。
| 処理 | 内容 |
|---|---|
| 要件との照合 | 必須要件・歓迎要件の各項目に当たるかを、根拠の引用付きで返す |
| 順位づけの材料 | 必須が何項目当たったか、歓迎が何項目当たったかを数える |
| 冒頭の一文 | 経歴のどこに関心を持ったかを、引用に基づいて書く |
| 本文の調整 | 求人票のうち、その人の経験とつながる部分だけを選ぶ |
順位そのものはプログラムで計算します。 AIに点数を付けさせると、同じ経歴でも実行のたびに揺れます。AIには「当たったかどうかと、その根拠」だけを返させ、数えるのはプログラムの仕事にします。
200人分をまとめて処理する場合、非同期のバッチ処理が使えます。Claude APIのバッチでは、1バッチあたり10万件または256MBまでを受け付け、多くは1時間以内に終わり、料金は通常の半額です。即時の応答が要らないこの用途に向きます。
指示内容を固定する
あなたは採用担当を支援する担当者です。
候補者の職務経歴を、募集要件の項目ごとに照らしてください。
【厳守事項】
- 経歴に書かれていないことを補わないでください。
推測で「おそらく経験がある」と判定しないでください。
- 当たったと判定した項目には、経歴本文からの引用を必ず添えてください。
引用できない項目は「読み取れない」にしてください。
- 点数や順位を付けないでください。項目ごとの判定だけを返してください。
- 年齢、性別、国籍、家族構成、出身地、信条に関する記述を
判定の材料に使わないでください。これらに言及もしないでください。
- 候補者の人物像を評価しないでください。
「優秀」「意欲的」などの言葉を使わないでください。
【募集要件】
必須要件: {must_have}
歓迎要件: {nice_to_have}
NG条件: {disqualifiers}
【候補者の職務経歴】
{resume_text}
「年齢・性別・国籍などを判定の材料に使わない」の指示は必ず入れてください。 職務経歴には、判断に使ってはならない情報が書かれていることがあります。この一行があっても完全ではないため、後述のとおり、渡す前に落とす処理も併せて入れます。
文面の生成には、別のプロンプトを使います。
判定で引用された記述を使って、スカウト文の下書きを作ってください。
【厳守事項】
- 求人票に書かれていない条件(給与、勤務地、雇用形態)を
書かないでください。書く場合は求人票の記載をそのまま使ってください。
- 候補者の経歴について、引用された記述の範囲を超えて書かないでください。
- 誇張表現を使わないでください(「業界No.1」「急成長」など)。
- 冒頭は、引用された記述に触れる1文から始めてください。
- 全体で400字以内にしてください。
【引用された記述】
{matched_quotes}
【求人票(この職種の記載)】
{job_posting}
【返信のあった文例】
{reference_messages} 出力形式を固定する
{
"candidate_id": "",
"assigned_job": "",
"must_have": [
{
"requirement": "",
"result": "matched | not_matched | unreadable",
"quote": ""
}
],
"nice_to_have": [
{ "requirement": "", "result": "", "quote": "" }
],
"disqualifier_hit": [],
"draft_message": "",
"excluded_reason": ""
}
quote を必ず持たせます。引用がない判定は、採用担当が確かめようがありません。 引用が空の項目は、順位の計算から外します。
システムへ連携する
| つなぎ先 | 何をするか |
|---|---|
| スプレッドシート | 候補・根拠・文面を1行に並べ、確認と編集の場にする |
| スカウト媒体 | 送信は媒体の画面で人が行う。自動送信はしない |
| 採用管理システム | 送信した候補者を登録し、その後の進捗を追う |
| 送信記録 | 候補者ID・属性・送信日・職種・返信の有無を残す |
送信を自動化しない理由は2つあります。 ひとつは、多くの媒体で自動送信が規約に触れること。もうひとつは、送信が候補者に対する募集行為そのものであり、内容の責任が企業にあることです。
人が確認する
全件、人が確認してから送ります。自動送信はしません。
スカウトは、求人情報を候補者に示す行為です。令和4年の職業安定法改正で、求人等に関する情報の的確な表示が義務付けられました。 虚偽または誤解を生じさせる表示が禁じられ、内容を正確かつ最新に保つ措置が求められます。AIが生成した文面をそのまま送る構成では、この義務を果たしているとは言えません。
確認を速くするための設計が重要です。
- 1行に 候補者の要約・当たった要件・引用・文面 を並べる
- 引用は経歴本文へのリンクを付け、原文をすぐ開けるようにする
- 必須要件の当たり数で並べ替える
- 「読み取れない」が多い候補は、別の列にまとめる
これらがないと、確認に10分かかり、削減効果が出ません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 経歴が短くて判定できない | unreadable を返し、人が見る列に回す。推測で判定しない |
| 送信済みの候補者が別IDで出てきた | 属性の組み合わせで照合し、重複として外す |
| NG条件(取引先在籍など)に当たった | disqualifier_hit に入れ、文面を生成しない |
| 1人が複数職種に当たった | もっとも当たりの強い職種に寄せる。複数通を送らない |
| 判定は当たったが引用が空 | 順位の計算から外し、人が見る列に回す |
| 求人票にない条件が文面に出た | 機械的に検査する。給与・勤務地・雇用形態の記述を求人票と突き合わせる |
| 文面が400字を超えた | 生成をやり直す。切り詰めない |
| 媒体の書き出し項目が変わった | 列名で読む。列番号で読むと無言でずれる |
| 同じ候補者に半年以内に送っていた | 送信記録の期間条件で外す |
記録を残す
- 候補者IDと、判定の結果(引用を含む)
- 生成した文面と、人が直したあとの文面
- 送信日、職種、返信の有無
- 除外した候補者と、その理由
- 判定に使った募集要件の版
2番目の項目が、文面の質を上げる材料になります。「冒頭は毎回そのまま通るが、本文は毎回書き換えられている」と分かれば、直すべき場所が決まります。
最後の項目も省かないでください。要件を変えたあとに「なぜこの人に送ったのか」を追えなくなります。
なお、候補者の職務経歴そのものを社内に長く残す設計にはしないでください。 必要なのは判定の結果と送信記録で、経歴本文ではありません。
04実装レベルの3段階
半自動化の時点で、18分が9分程度になります。 検索と読解が自動化されるためです。本格構成にすると7分程度になりますが、採用管理システムとの連携が必要です。
05工数削減シミュレーション
導入後 200件 × 7分 ÷ 60 = 23.3 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- ダイレクトリクルーティング(スカウト送信)を月100通以上行っていて、採用担当が1〜3名の企業。募集要件が職種ごとに文書化されていること。候補者情報を媒体から書き出せること。
- 月に数十通で、担当者が一人ひとり丁寧に書けている場合。人材紹介経由が中心でスカウトを使っていない場合。募集要件が固まっておらず、何を基準に選ぶかが決まっていない場合(先に要件の整理が必要)。
07最小構成で試す方法
- 直近で送ったスカウト20通を選ぶ(返信が来たもの10通、来なかったもの10通)
- その候補者の経歴と募集要件を、生成AIに1件ずつ渡す
- 要件のどこに当たるかを、引用付きで出させる
- 採用担当が見て、自分が見たときと同じ箇所を引いているかを確かめる
- 20件のうち、納得できる判定が何件かを数える
この検証だけは必ずやってください。 要件が判定できる形に書けているかは、ここで分かります。判定が合わないときの原因は、たいていAIではなく要件の書き方です。
判断の目安は次のとおりです。
| 納得できる判定の割合 | 判断 |
|---|---|
| 8割以上 | 自動化する価値がある |
| 5〜8割 | 要件の書き方を直す。とくに「読み取れない」が多い項目を具体化する |
| 5割未満 | 要件が判定できる形になっていない。先に要件の整理を行う |
文面の下書きは、ChatGPTやClaudeに経歴と求人票を貼って試せます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 要件が抽象的で判定できない | 「経歴に書かれているか」で判定できる文に直す。ここが最大の作業 |
| AIが推測で「経験ありそう」と判定する | 引用を必須にする。引用のない判定は順位から外す |
| 年齢や性別が判定に混ざる | 渡す前に該当項目を落とす。プロンプトの禁止だけに頼らない |
| 同じ人に2つの媒体から送ってしまう | 属性の組み合わせで照合する。候補者IDだけでは外せない |
| 文面が求人票にない条件を書く | 給与・勤務地・雇用形態を機械的に突き合わせる |
| 文面が長くなり読まれない | 字数の上限をプロンプトで指定し、超えたら生成をやり直す |
| 媒体の書き出し形式が変わる | 列名で読む。列番号で読むと無言でずれる |
| 自動送信を作ってしまう | 媒体の規約を先に確認する。送信は人の操作に残す |
| 経歴本文を社内に溜め込む | 判定結果と送信記録だけを残し、本文は保持期間を決めて消す |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 候補者の職務経歴、在籍企業、経験年数。すべて個人情報です。 転職の意思という、本人にとって知られたくない情報も含まれます。
- 利用目的の範囲 … 媒体から取得した候補者情報を、どの範囲まで利用してよいかは媒体との契約で定まります。 外部のAIサービスへ送ることが含まれるかを、契約と規約で確認してください
- 自動取得をしない … 媒体の画面を自動操作して情報を集める構成にしないでください。多くの媒体で規約違反です
- 渡す情報の最小化 … 氏名・連絡先・住所は判定に使いません。渡す前に落としてください
- 判断に使ってはならない情報 … 年齢、性別、国籍、家族構成、出身地、信条。これらを選考の材料にすることは避けるべきものです。 落とす処理と、プロンプトでの禁止の両方を入れてください
- 学習利用 … 入力を学習に使わないことが契約で保証されるサービスを選びます
- 保持期間 … 候補者の経歴本文を残す期間を決めてください。「念のため残す」をしないでください
- 表示の正確性 … スカウト文は求人情報の提示です。給与・勤務地・雇用形態が求人票と食い違わないよう、機械的な検査を入れてください
- 自動実行してよい範囲 … 重複除外、判定、順位づけ、下書きの生成までです。送信は必ず人が行います
誤りが起きた場合のリスクは、事実と違う条件を候補者に示すことです。入社後に条件が違うと分かれば、信頼を失うだけでなく、法令上の問題にもなります。送信前の確認を省ける設計にしないでください。
10まず何から始めるか
1週目:返信が来た文面を集める
過去に返信が来たスカウト文を10通集め、返信が来なかった文面と何が違うかを並べてください。 多くの場合、違いは冒頭の1文にあります。この10通が、あとで文例になります。
2〜3週目:募集要件を判定できる形に書き直す
常時募集の3職種について、必須要件・歓迎要件・NG条件を分けて書きます。基準は「経歴に書かれているかどうかで判定できるか」です。
- ×「設計力がある」 → ○「複数人のチームでの設計を主担当として経験」
- ×「コミュニケーション能力」 → ○「顧客との要件定義の経験」
- ×「若手歓迎」 → 年齢を要件にしない
この書き直しが、この構成でいちばん時間のかかる作業です。 そしてAIを使わなくても効きます。
4週目:20件で試す
過去に送った20通で判定を試し、採用担当が見たときと同じ箇所を引いているかを確かめます。
2か月目:半自動化を作る
書き出し → 重複除外 → 判定 → 文面までを作り、採用担当1名が2週間使います。18分が何分になるかを実測してください。
3か月目以降: 採用管理システムとの連携と、返信率の集計を追加します。あわせて、職種ごとの返信率を月次で見てください。 返信率が低い職種は、文面ではなく求人の条件そのものを見直す材料になります。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 令和4年の職業安定法改正により、求人等に関する情報の的確な表示が義務化されたこと。的確表示とは、虚偽または誤解を生じさせる表示を禁止し、最新かつ正確な内容に保つための措置を講じることであること。改正は令和4年10月1日施行(一部は同年4月1日施行)であること | 厚生労働省:令和4年職業安定法の改正について | 2026-09-21 |
| Claude APIの構造化出力が、制約付きデコードによりスキーマに沿ったJSONの生成をモデル側で保証すること。列挙・定数・参照は使えるが、再帰スキーマや数値の範囲指定は使えないこと | Claude Docs: Structured outputs | 2026-09-21 |
| Claude APIのバッチ処理が、1バッチあたり10万件または256MBのいずれか先に達するまでを受け付けること。多くのバッチが1時間以内に完了し、24時間で期限切れになること。結果は作成から29日間取得できること。料金が通常の50%であること | Claude Docs: Batch processing | 2026-09-21 |
候補者情報の取り扱いは、媒体との契約と個人情報保護に関する法令の両方に関わります。 媒体から取得した情報を外部の生成AIサービスへ送ってよいかは、媒体の利用規約と、自社の個人情報の利用目的の記載を確認してください。 媒体の画面を自動操作して候補者情報を収集する構成は、多くの媒体で規約違反にあたります。スカウト文は求人情報の提示にあたるため、給与・勤務地・雇用形態などの記載が実際の条件と食い違わないよう、送信前に人が確認してください。 年齢・性別・国籍などを選考の基準に用いることは避けるべきものであり、これらを判定の材料として渡さない設計にしてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。媒体から書き出せる項目は媒体によって異なるため、導入前に確認が必要です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0131)についてのご相談はこちらから。
