社員紹介の受付から選考の進捗までを回して、紹介した社員へ状況を返す
社員が知人を紹介する制度の受付を1つのフォームに寄せ、募集中のポジションの候補を出し、選考の段階が変わるたびに紹介した社員へ返す文面を下書きします。担当者の作業は、経路をまたいだ情報集めから、下書きの確認に変わります。
- 利用ツール
- ChatGPT/Claude/Gemini/Make/Power Automate/Zapier
- 対象業界
- IT・SaaS/人材/介護/建設/飲食
- 対象部門
- 人事/採用
- 対象業務
- 台帳・マスタ管理/問い合わせ対応
- 主な課題
- 人手が足りない/引き継ぎができていない/期限・対応漏れが起きる
- AIで行う処理
- 生成
- 主な効果
- 対応スピード向上/工数削減/機会損失防止
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 社員から紹介の話が入る(チャット、メール、口頭のいずれか)
- 担当者が内容をメモし、足りない情報(連絡先、現職、希望)を紹介者に聞き返す
- 候補者本人がこの話を知っているかを、紹介者に確かめる
- 募集中の求人一覧を開き、どのポジションに当たるかを考える
- 採用管理システムへ候補者を手で登録する
- 候補者へ連絡し、応募の意思を確かめる
- 選考の段階が進むたび、紹介者へ状況を返す文面を書いて送る
- 報奨金の条件と支払の期限を、スプレッドシートに書き足す
- 人社員が受付フォームから紹介を出す。口頭で聞いたものは、聞いた人がその場で代理入力する
- 自動送信をきっかけにワークフローが動き、受付番号を採番して受付台帳に記録する
- 自動紹介者を社員名簿と突き合わせ、社員番号と部署を確定させる
- 自動代理入力のものは、紹介者本人へ「この内容で受け付けました」の確認を1通送る
- 自動「本人に話をしたか」が「まだ」なら選考の手前で止め、紹介者へ先に本人へ話すよう返す
- 自動募集中のポジション一覧と突き合わせ、候補を3つまで出す。該当が無ければ空で返す
- 人採用担当がポジションを決め、候補者へ連絡し、応募の意思と同意を確かめる
- 人応募の意思が確認できたものだけを、採用管理システムへ登録する
- 自動受付台帳の段階が変わったら、紹介者へ返す文面の下書きを作る
- 人採用担当が下書きを承認する。承認されたものだけが紹介者へ送られる
- 自動毎日の定時実行が、報奨金の期限が近いものと、段階が長く変わっていないものを一覧にする
各工程の詳しい説明を読む
- 社員から紹介の話が入る(チャット、メール、口頭のいずれか)
- 担当者が内容をメモし、足りない情報(連絡先、現職、希望)を紹介者に聞き返す
- 候補者本人がこの話を知っているかを、紹介者に確かめる
- 募集中の求人一覧を開き、どのポジションに当たるかを考える
- 採用管理システムへ候補者を手で登録する
- 候補者へ連絡し、応募の意思を確かめる
- 選考の段階が進むたび、紹介者へ状況を返す文面を書いて送る
- 報奨金の条件と支払の期限を、スプレッドシートに書き足す
(a)受け付けたこと自体が記録に残らない。 口頭で聞いた紹介は、担当者の記憶とメモ帳にしかありません。その担当者が休むと、紹介があったこと自体が消えます。 数週間後に紹介者から「あの件どうなりました」と聞かれて思い出します。
(b)紹介者へ返す線引きが担当者ごとに違う。 「書類で見送りになりました」と伝える人もいれば、「今回はご縁がなかったようです」で止める人もいます。親切な担当者ほど、聞かれるままに面接での様子まで話してしまいます。
(c)忙しい月に、状況返しが止まる。 4番から6番までは選考を進めるために必要ですが、7番は止めても選考は進みます。だから最初に落ちるのが7番です。 そして7番が落ちた月の翌月から、紹介の件数が落ちます。
(d)本人が知らないうちに選考が始まることがある。 3番を飛ばして5番へ進み、人事から連絡を受けた候補者が「そんな話は聞いていない」と驚く。紹介者と候補者の関係のほうが、会社と候補者の関係より先にあります。 ここを壊すと、その社員はもう紹介しません。
(e)報奨金の期限が落ちる。 入社から6か月後の支払は、半年先の話です。台帳に書いても、見に行く習慣がなければ期日は過ぎます。 紹介者から催促されて気づくのが、いちばん悪い形です。
- 【人】 社員が受付フォームから紹介を出す。口頭で聞いたものは、聞いた人がその場で代理入力する
- 【自動】 送信をきっかけにワークフローが動き、受付番号を採番して受付台帳に記録する
- 【自動】 紹介者を社員名簿と突き合わせ、社員番号と部署を確定させる
- 【自動】 代理入力のものは、紹介者本人へ「この内容で受け付けました」の確認を1通送る
- 【自動】 「本人に話をしたか」が「まだ」なら選考の手前で止め、紹介者へ先に本人へ話すよう返す
- 【自動】 募集中のポジション一覧と突き合わせ、候補を3つまで出す。該当が無ければ空で返す
- 【人】 採用担当がポジションを決め、候補者へ連絡し、応募の意思と同意を確かめる
- 【人】 応募の意思が確認できたものだけを、採用管理システムへ登録する
- 【自動】 受付台帳の段階が変わったら、紹介者へ返す文面の下書きを作る
- 【人】 採用担当が下書きを承認する。承認されたものだけが紹介者へ送られる
- 【自動】 毎日の定時実行が、報奨金の期限が近いものと、段階が長く変わっていないものを一覧にする
9番目が、この設計の要です。 文面を作るときにAIへ渡すのは、段階のコードと紹介者の名前と受付番号だけです。候補者の氏名も、現職も、面接の記録も渡しません。渡していない情報は、文面に出しようがありません。 線引きを指示で守らせるのではなく、入力の設計で守ります。
8番目を人の作業のまま残しているのも、意図してのことです。 応募の意思を示す前に採用管理システムへ登録すると、本人が知らないうちに応募者として数えられます。 同意の確認と登録のあいだに人を置くことで、第3章の(d)が起きなくなります。
10番目は、件数にかかわらず全件です。 月15件に対して送る文面は50通前後にすぎません。1通も自動で送りません。
02今回想定するシステム構成
社員からの紹介(チャット・メール・口頭) │ 口頭のものは、聞いた人がその場で代理入力する ▼【トリガー1】受付フォームの送信 Zapier ├──▶ 必須項目の確認と、紹介者の社員名簿との突合 ├──▶ 代理入力なら、紹介者本人へ確認の1通 ▼ 受付台帳(受付番号/紹介者/段階/報奨金の期限) │ ├──▶ Claude API ── 募集中のポジションとの突き合わせ │ │ 候補は3つまで。該当が無ければ空で返す │ ▼ │ 【人】ポジションを決め、候補者へ連絡し、応募の意思を確かめる │ ▼ │ 採用管理システムへ人が登録(同意の確認が済んだものだけ) │ ▼【トリガー2】受付台帳の段階の変化 Claude API ── 紹介者へ返す文面の下書き │ 入力は「段階のコード・紹介者の名前・受付番号」だけ │ 候補者の情報は渡さない ▼ Human in the Loop ── 採用担当が承認(全件) ▼ 紹介者へ送信 + 送った文面の全文を台帳へ記録 【トリガー3】毎日の定時実行(Schedule by Zapier) ▼ 報奨金の期限が近いもの/段階が長く変わっていないものの一覧
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Zapier | Make、Power Automate |
| 処理 | Claude API | OpenAI API、Gemini API |
採用管理システムと社員名簿は、新しく足すものではありません。 採用管理システムへは書き込まず、人が手で登録します。社員名簿は紹介者の確認のために読むだけです。受付台帳だけが、この構成で新しく作るものです。
受付の入口は、Zapier Forms で作ります。 送信内容は接続したテーブルに自動で入り、そこで表示・絞り込み・検索・書き出しができるとされています。受付の記録が、別に台帳を作らなくてもその時点で残ります。すべてのプランで利用できるとされており、受付の一本化だけなら追加の費用がかかりません。条件によって表示する項目を変える設定もできるため、「本人に話をしたか」の答えで後続の項目を変えられます。
毎日の見張りは、Schedule by Zapier で行います。 毎時/毎日/毎週/毎月と、3か月ごとのような独自の間隔が選べ、実行する時刻の指定と、週末を含めるかどうかの切り替えもあります。タイムゾーンはアカウントの設定に従い、実行は予定時刻の数分以内に起こるとされています。数分のずれは、この用途では問題になりません。
承認は Human in the Loop の Request Approval で挟みます。 Zapを特定のステップで止めて人の確認を待たせる仕組みで、承認・却下・内容の変更ができます。Professional、Team、Enterprise のプランで利用でき、無料プランでは使えません。
03どうやって実装するのか
処理の起点を決める
起点は3つです。ここを3つに絞ることが、最初の設計です。
| トリガー | 何をきっかけにするか | 何が動くか |
|---|---|---|
| 1 | 受付フォームの送信 | 受付の記録、紹介者の確認、ポジションの突き合わせ |
| 2 | 受付台帳の段階の列が変わったこと | 紹介者へ返す文面の下書きと承認 |
| 3 | 毎日の定時実行 | 報奨金の期限、段階が止まっているものの一覧 |
チャットやメールを直接のトリガーにしません。 そこから始めると、紹介者が誰かの確定と本人の同意の確認が、自由文の読み取りに依存します。読み取りを間違えると、報奨金の支払先が違う人になります。
口頭の紹介は、代理入力で受けます。 「あとでフォームから出しておいてください」と言うと、半分は出ません。聞いた人が、その場で紹介者の名前を入れて代理で入れます。 代理入力のものは紹介者本人へ確認の1通が飛び、紹介者が「自分が紹介した」と認識している状態が記録に残ります。なおトリガー2は、半自動化の段階では人が段階の列を変えることを起点にします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 受付フォームの回答 | 紹介者、候補者の氏名、現職、連絡先、本人に話をしたか、代理入力か | Zapier Forms(接続したテーブル) |
| 募集中のポジション一覧 | 求人ID、職種、求める経験、勤務地、募集の状態 | 求人票のスプレッドシート |
| 社員名簿 | 社員番号、氏名、部署、在籍状況 | 人事システムから書き出した一覧 |
| 受付台帳 | 受付番号、段階、段階が変わった日、最後に紹介者へ送った日 | 受付台帳(テーブル) |
| 報奨金の条件 | 支払の段階、金額の区分、在籍期間の条件、期限 | 報奨金の台帳 |
この表でいちばん大事なのは、1行目と4行目が別の場所にあることです。 候補者の情報は1行目に、紹介者へ返すための情報は4行目にあります。文面を作るときは4行目だけを読みます。 同じテーブルに全部を入れると、全列を渡す事故が起きます。
「本人に話をしたか」は3択で聞きます。 「話した」「まだ話していない」「本人から言われて出した」。2番目を選んだ紹介は、候補者へ連絡しません。 社員名簿を引くのは紹介者の確定のためで、同姓の社員も退職済みの名前も、報奨金の支払条件に直結します。
データの取得方法を決める
受付フォームの回答は、接続したテーブルに自動で入ります。 取得のための処理を書く必要がありません。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 受付の回答 | フォームに接続したテーブル | 受付番号の採番と、突き合わせの入力 |
| 募集中の求人 | 求人票のスプレッドシート(状態が「受付中」の行だけ) | ポジションの候補を出す材料 |
| 紹介者の在籍 | 社員名簿の一覧 | 社員番号の確定と、退職者の検出 |
| 段階と日付 | 受付台帳 | 文面の下書きと、止まっているものの検出 |
求人一覧には、募集の状態の列を必ず持たせてください。 締め切った求人が残っていると、無い募集に候補者を当てることになります。
段階の列は、次の5つだけにします。 received(受け付けた)、contacted(本人と連絡がついた)、in_process(選考が進んでいる)、closed(結果が出た)、joined(入社が決まった)。書類選考、一次面接と細かく分けません。 細かくするほど、紹介者へ返す情報が選考の中身に近づきます。段階の粒度が線引きの一部です。
AIへ渡す前に整形する
- 必須項目の確認 … 紹介者、候補者の氏名、本人に話をしたか、が空なら受け付けません
- 受付番号の採番 …
REF-2026-0231のような通し番号を振り、以降は氏名でなくこの番号で扱います - 紹介者の確定 … 社員名簿と突き合わせ、社員番号と部署を入れます。無ければ人へ回します
- 代理入力の確認 … 紹介者本人へ確認の1通を送り、台帳に「未確認」の印を残します
- 同意の確認 … 「まだ話していない」なら止めます。この状態では候補者へ連絡しません
- 重複の照合 … 氏名と連絡先の組み合わせで、既に応募している人かを見ます
- 求人一覧の絞り込み … 募集の状態が「受付中」の行だけを渡します
- レコードの分離 … 候補者の情報を持つレコードと、紹介者へ返す情報を持つレコードを分けます
8番目を省かないでください。 省くと、あとの工程で「候補者の情報を渡さない」ために毎回列を選ぶことになり、選び忘れは必ず起きます。 2番目の受付番号も同じ道具です。 紹介者は自分が誰を紹介したか知っているので番号で通じ、AIには氏名が渡りません。
AIに処理させる
させることは2つだけです。どちらも判断ではありません。
| させること | 入力 | 出力 |
|---|---|---|
| ポジションの突き合わせ | 受付の内容(候補者の現職・経験・希望)と、募集中の求人一覧 | 候補の求人を3つまで。該当が無ければ空 |
| 紹介者へ返す文面の下書き | 段階のコード、紹介者の名前、受付番号、最後に送った日からの日数 | 件名と本文の下書き |
2行目の入力の欄を見てください。候補者に関する情報が1つもありません。
| させないこと | 理由 |
|---|---|
| 合否の判断 | 選考の判断は人の仕事。AIの出力を判断の材料にもしない |
| 適性の評価 | 「向いていそう」と書かせない。求人との照合と評価は別 |
| 年収や条件の推定 | 書かれていない条件を埋めると、紹介者へ漏れる経路ができる |
| 候補者の情報を紹介者向けに要約すること | 要約という形でも、渡してはいけない情報が渡る |
| 報奨金の支払可否の判断 | 在籍期間と制度の条件で決まる。人事が人事システムで確認する |
| 該当が無い紹介への無理な当てはめ | 空の候補を返せるようにする |
最後の行が、いちばん見落とされます。 候補を出せと言われたAIは、経験が合わない求人にもそれらしい理由を付けて3つ埋め、採用担当がその3つから選んでしまいます。 合わない求人で選考を受けた候補者は二度とその会社を受けず、紹介した社員にもその話が伝わります。「今は該当する募集がありません」と正しく言えることが、この機能の半分です。
指示内容を固定する
1つ目は、ポジションの突き合わせです。
あなたは採用担当者を補助する立場です。社員紹介で入ってきた候補者の情報と、
現在募集中のポジション一覧を見て、当てはまりそうな求人の候補を挙げてください。
【厳守事項】
- 候補は最大3件です。無理に3件を埋めないでください。
- 当てはまる求人が無い場合は position_matches を空の配列にし、
no_match_reason に「なぜ当てはまらないか」を1文で書いてください。
これは正しい回答です。空で返すことを避けようとしないでください。
- 書かれていない経験、年数、スキル、年収、待遇を推測しないでください。
- 合否、適性、採用すべきかを書かないでください。あなたが出すのは
「どの求人の要件と、書かれている経験が重なるか」だけです。
- reason には、求人の要件のどの記述と、紹介内容のどの記述が重なるかを、
それぞれ原文から引いて書いてください。言い換えないでください。
- confidence は high / medium / low から選び、経験の記述がほとんど無い
場合は low にしてください。
- 必須項目の記載が無い場合は、missing_fields にその項目名を入れてください。
【紹介の内容】{referral_text} 【募集中のポジション一覧】{open_positions}
「空で返すことを避けようとしないでください」を明記しないと、必ず3件埋まります。 「最大3件」とだけ書くと、上限の指示として読まれます。
2つ目は、紹介者へ返す文面の下書きです。入力に候補者の情報が無いことを確かめてください。
あなたは人事部の採用担当として、社員紹介をしてくれた社員へ、
選考の状況をお知らせする短い文面の下書きを書きます。
【あなたが受け取る情報】
- 受付番号 / 紹介してくれた社員の名前 / 現在の段階 / 前回お知らせした日からの日数
(段階は received / contacted / in_process / closed / joined のいずれか)
【厳守事項】
- 候補者の氏名、連絡先、経歴、現職、応募先のポジション名を書かないでください。
これらはあなたに渡されていません。思い出そうとしないでください。
候補者を指すときは「ご紹介いただいた方」と受付番号だけを使ってください。
- 選考の評価、面接の様子、見送りの理由、提示した条件を書かないでください。
段階が closed の場合も、書くのは「結果が出た」ことと、
改めて人事から連絡する旨だけです。
- 段階から推測して先の見通しを書かないでください。
「次は面接になりそうです」「順調のようです」と書かないでください。
- 日程、時期、いつまでに結果が出るかを書かないでください。
- 本文は200文字以内、3文以内にしてください。
- 前回から日数が空いている場合は一言触れ、理由を推測しないでください。
- 段階に対応する次の言い回しから外れないでください。
received:受け付けたこと/contacted:ご本人と連絡がついたこと/
in_process:選考が進んでいること/closed:結果が出たこと、改めて連絡すること/
joined:入社が決まったこと、お礼、報奨金について人事から案内すること
【受付番号】{referral_id} 【紹介してくれた社員】{referrer_name}
【段階】{stage} 【前回お知らせした日からの日数】{days_since_last}
「思い出そうとしないでください」を入れている理由があります。 同じやり取りの中に前の呼び出しの内容が残っていると、渡されていないはずの氏名が文面に出ます。文面を作る呼び出しは、突き合わせの呼び出しと完全に別にしてください。
「先の見通しを書かないでください」も必要です。 段階が in_process だとだけ渡しても、文面を書けと言われれば「順調に進んでいるようです」と書きます。順調かどうかは渡されていません。 紹介者はその一文を本人に伝え、落ちたときに二重に気まずくなります。
出力形式を固定する
2つの呼び出しは、それぞれ別のJSONで受け取ります。まず突き合わせのほうです。
{
"referral_id": "",
"referrer": { "employee_no": "", "name": "", "department": "", "on_roster": true },
"consent": { "told_candidate": "yes | no | from_candidate" },
"entry_route": "form | proxy",
"position_matches": [
{ "job_id": "", "job_title": "", "reason": "", "confidence": "high | medium | low" }
],
"no_match_reason": "",
"missing_fields": [],
"needs_human": true
}
次に、文面のほうです。候補者に関する項目が1つも無いことを確かめてください。
{
"referral_id": "",
"referrer_name": "",
"stage": "received | contacted | in_process | closed | joined",
"message_subject": "",
"message_body": ""
}
この2つを1つのJSONにまとめないでください。 まとめた瞬間、文面を作る呼び出しが候補者の項目を持つスキーマを受け取ります。スキーマに項目があれば、AIはそこを埋めようとします。
受け取りは、Claude API の structured outputs を使います。 output_config.format に json_schema 型の指定とスキーマを渡す形で、制約付きデコードによって型と必須項目が保証されるとされています。この構成で効くのは enum です。 enum、const、required、additionalProperties(オブジェクトでは false である必要があります)がサポートされており、stage を5つの値の enum にしておけば、それ以外の段階名が出てきません。 線引きが、スキーマの側で担保されます。
一方で、縛れないものもあります。 minLength / maxLength などの文字列の制約と、minimum / maximum などの数値の制約はサポートされず、配列の minItems は 0 と 1 だけです。つまり「本文は200文字以内」はスキーマでは縛れません。 指示に書いたうえで、送信の前に機械で文字数を数えます。
その検査のついでに、もう1つ照合してください。 受付台帳が持っている候補者の氏名、現職の会社名、連絡先の文字列が message_body に含まれていないかを見て、含まれていたら送らずに人へ回します。 入力に渡していない以上、本来は出るはずがありません。出たときに気づける仕掛けです。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受付フォーム | Zapier Forms のトリガー | 送信をきっかけにワークフローを起動する |
| 受付台帳 | テーブルの読み書き | 受付番号、段階、日付、送信の記録 |
| 社員名簿 | スプレッドシートの読み取り | 紹介者の社員番号と在籍の確認 |
| 求人票 | スプレッドシートの読み取り | 募集中のポジション一覧 |
| Claude API | API呼び出し(2回、別々に) | ポジションの突き合わせ/文面の下書き |
| 承認 | Human in the Loop の Request Approval | 送信前に採用担当が承認する |
| 紹介者への連絡 | 社内チャットまたはメール | 承認された文面だけを送る |
| 採用管理システム | つながない | 人が手で登録する |
| 報奨金の台帳 | テーブルの読み書き | 条件、期限、支払の記録 |
採用管理システムにつながないことが、この構成の安全装置です。 自動で登録できると、本人の同意が取れていない紹介が応募者として登録される経路ができます。
報奨金の期限の持ち方には、注意が要ります。 Delay by Zapier で待たせたくなりますが、遅延は最大で1か月(30日)までとされており、入社から6か月後の期日は持てません。期限は台帳の列として持ち、毎日の定時実行で当日到来分を拾います。 遅延中にZapのステップを変更すると続行されず、Zapを止めると処理が実行されないとも記載されています。半年待たせる作りは、そもそも壊れやすいのです。
人が確認する
人が確認するのは3か所です。件数ではなく、場所で決めます。
- ポジションの決定 … 候補の3つ(または空)を見て決めます。空で返ってきたときに「無理に当てない」と決められるのは人だけです
- 候補者へ連絡してよいか … 「本人に話をしたか」の回答と、代理入力の確認の返事を見ます
- 紹介者へ送る文面 … 全件です。1通も自動で送りません
3番目は Request Approval で挟みます。
| 設定 | 選べるもの | この構成での決め方 |
|---|---|---|
| Type of reviewer | Specific members of my account / Anyone | 採用担当2名を指定する |
| Let Reviewer edit content? | 有効/無効 | 有効にする。 文面を直して送れるようにする |
| Timeout value / Timeout unit | 数値と Minutes / Hours / Days / Weeks | 2 Days 程度 |
| On timeout | Skip and continue / End run | End run にする |
| Send to | Email / Slack / Trigger a Zap | 担当者が毎日見るところへ |
On timeout を Skip and continue にしないでください。 承認のステップを飛ばして先へ進むと、承認されていない文面が、そのまま次の送信のステップへ流れます。 End run にしておけば送られずに終わり、翌日の定時実行が未送信として拾います。
待ち時間を2日程度にしているのは、承認が滞ることを前提にしているからです。 採用担当は2名で兼務で、承認できない日は必ずあります。 そのときに「勝手に送られる」のではなく「送られずに残る」ほうに倒します。なお、承認を完了できるのは1名だけとされているため、2名を指定しても二重に送られません。
例外に対処する
| 起きること | 対応 |
|---|---|
| 「本人に話していない」で入ってきた | 選考に進めない。候補者へ連絡しない。 紹介者へ先に本人へ話すよう返す |
| 紹介者が社員名簿に無い | 退職者、業務委託、氏名の表記ゆれ。報奨金に直結するので人へ回す |
| 該当する募集が無い | position_matches が空。「今は該当する募集がありません」と返す |
| 候補者が既に応募している | 氏名と連絡先で照合し、人へ回す。先着の扱いは制度で決める |
| 候補者が辞退した | 段階は closed。辞退の理由は紹介者へ返さない |
| 承認が期限切れになった | End run で終わる。翌日の定時実行が未送信として拾う |
| 紹介者が退職した | 在籍を条件とする支払の扱いを人事が確認する。自動で判断させない |
| 段階が長く変わらない | 定時実行で検出し、段階が同じままでも「選考中です」を返す |
| 同じ紹介が二度入った | 代理入力と本人の入力が重なる型。受付番号を1つにまとめる |
| フォーム以外の経路で来た | 受けた人が代理入力する。経路を増やさない |
| 文面に候補者の情報が混じった | 送信前の照合で検出し、送らずに人へ回す |
上から2行目までが、運用で最も多く出ます。 どちらもAIの精度の問題ではなく、制度と受付の決めごとの問題です。 「本人に話していない紹介をどう扱うか」を先に決めていないと、その場の判断で候補者へ連絡してしまいます。
8行目を軽く見ないでください。 選考が1か月動かないことは普通にあり、何も返さないと、紹介者からは「止まっている」のか「忘れられている」のか区別がつきません。 これが第3章の(c)への直接の対策です。
記録を残す
- 受付番号、受付日時、経路(フォーム/代理入力)、紹介者の社員番号
- 「本人に話をしたか」の回答と、いつ本人の応募の意思が確認できたか
- 代理入力の確認の1通と、紹介者からの返事
- ポジションの候補と、採用担当が最終的に選んだ求人
- 段階の変化の履歴と、変わった日
- 紹介者へ送った文面の全文、承認した人、承認の日時
- 文面を作るときにAIへ渡した入力の全文
- 報奨金の条件、期限、支払の記録
最後から2行目が、この構成でいちばん大事なログです。 渡した入力を残しておけば、候補者の情報を渡していないことを、後から確かめられます。 「渡していないはずです」と言うのと、記録を開いて見せるのは、意味がまったく違います。
04実装レベルの3段階
本記事が想定するのは半自動化です。 月15件という件数では、採用管理システムとのAPI連携を作る手間が見合いません。段階の列を人が選び直す数秒のほうが、連携の維持より安く済みます。 最小構成でも効果の半分は出ます。受付フォームを1つ置いて経路をそろえるだけで、第3章の(a)はほぼ消えます。 半自動化で1件40分が14分になります。 効いているのは、受付の記録や突き合わせより、状況返しの文面が承認するだけの形で出てくることです。書き出しから始めると9分かかる文面が、読んで押すだけなら4分です。しかも、忙しい月にも出てきます。 本格構成へ進む判断は、件数ではなく段階の更新漏れで決めてください。 台帳の段階を変え忘れる回数が月に何度も出るようになったら、自動で拾う価値が出ます。
05工数削減シミュレーション
導入後 15件 × 14分 ÷ 60 = 3.5 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 社員紹介の制度がすでにあり、月に10件以上の紹介が入る企業。紹介がチャット・メール・口頭とばらばらの経路で届き、受け付けた記録が担当者の手元にしか残っていない場合。「紹介しても音沙汰がない」と社内で言われたことがあり、紹介の件数が落ちてきている場合。募集中のポジションが常時5つ以上あり、どの求人に当てるかの判断が紹介のたびに発生する場合。
- 社員紹介の制度がまだ無く、報奨金の条件も決まっていない場合。先に制度を決めてください。紹介が年に数件で、担当者が全件を覚えていられる場合。採用管理システムに紹介専用の受付とステータス共有の機能があり、それで足りている場合。なお、候補者の合否や適性の判断は、この構成では代替できません。
07最小構成で試す方法
- 直近3か月に入った紹介を、思い出せる限り紙に書き出す(経路、紹介者、いつ何を返したかの3つだけ)
- そのうち、紹介者へ一度も状況を返さないまま終わったものが何件あるかを数える
- 受付フォームを1つ作る。項目は8つまで(紹介者、候補者の氏名、現職、連絡先、本人に話をしたか、代理入力か、紹介の一言、希望する職種)
- 募集中の求人票と、書き出した紹介の内容を手元のAIサービスの画面に貼り、「当てはまる求人の候補を最大3件。無ければ空で返し、理由を1文で」と指示する
- 空で返ってきた件数を数える。 当時どう扱ったかと突き合わせる
- 段階ごとの文面の型を5つ作らせ、採用担当と人事で読み合わせる
2番目と5番目が、この検証の目的です。 組む前に、返せていなかった件数と、当てはまる募集が無かった件数を知ります。どちらも普段は数えていません。
| 出てきた内容 | 判断 |
|---|---|
| 返さないまま終わったものが半分近くあった | 状況返しの自動化から作る。 突き合わせは後でよい |
| 空で返る紹介が3割以上あった | 「今は無い」と返す文面の型を先に作る。 ここが一番使われる |
| 文面の型に候補者の情報が入っていた | 指示の書き方で直る。入力を分ける設計が効く |
3行目は、最小構成の段階では必ず起きます。 手元の画面に貼り付けて試す限り、同じ会話の中に候補者の情報があるからです。本番の構成では呼び出しを分けることで消えます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 文面に候補者の個人情報が混じる | 文面を作る呼び出しへ候補者の情報を渡さない。 入力は段階のコードと受付番号だけ |
| 2つの呼び出しを1つにまとめてしまう | スキーマに項目があると埋めようとする。呼び出しもスキーマも分ける |
| 本人の同意がないまま選考に乗る | フォームで「本人に話をしたか」を必須にし、未確認は候補者へ連絡しない |
| 口頭の紹介が台帳に載らない | 聞いた人がその場で代理入力する。 あとでフォームから、は出されない |
| 紹介者が誰か確定しない | 受付番号と紹介者を先に確定させる。報奨金の支払先が後から揉める |
| 該当する募集が無いのに当てはめる | position_matches を空で返せるようにし、no_match_reason を書かせる |
| 不合格の理由が返ってしまう | 段階を5つの enum に固定する。選考の細かい段階を台帳に持たない |
| 承認の On timeout を Skip and continue にする | 承認されていない文面が送られる。 End run にする |
| 報奨金の期限を遅延で持とうとする | 遅延は最大1か月(30日)。 期限は台帳の列にし、定時実行で見張る |
| 段階が長く変わらず、何も返さない期間ができる | 定時実行で検出し、段階が同じままでも決めた日数で一度返す |
| 文字数をスキーマで縛ろうとする | minLength / maxLength はサポートされない。指示に書き、送信前に数える |
| AIに合否や適性を書かせてしまう | 評価の項目をスキーマに作らない。作らなければ埋められない |
上の2行が、この構成で起きうる最悪の失敗です。 紹介者へ送った1通に候補者の評価が書かれていたとき、失うのはその紹介だけではありません。「あの会社は紹介した人の情報を社内で流す」という話が、紹介者を通じて外へ出ます。 対策はどちらも設計の側にあり、プロンプトの書き方では守り切れません。
下から4行目と5行目も、早い段階で効いてきます。 承認の設定を1つ間違える、期限の持ち方を間違える。どちらも動いているように見えたまま、静かに目的を外します。 承認を飛ばして送られた文面は、送られたことにすら気づきません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 候補者の氏名、連絡先、現職、経歴の要点。紹介者の氏名、社員番号、部署。選考の段階。そして、候補者本人がまだ知らない段階の情報です。
- 社内の人へ渡すことは、法律上の第三者提供ではありません。だから危ないのです … 個人情報保護委員会のFAQでは、同一事業者内での個人データの提供は第三者提供には該当しないため、第三者提供に関する本人の同意は必要ないとされています。紹介者へ候補者の情報を渡すことに、第三者提供という歯止めは効きません
- 効くのは利用目的のほうです … 同じFAQでは、他の部署が当初特定した利用目的の範囲を超えて個人情報を利用する場合には、あらかじめ本人の同意を得る必要があるとされています。候補者へ最初に連絡するときに示す利用目的に、「紹介した社員へ選考の段階をお知らせすること」を含めるかどうかを、受付の時点で自社で判断してください
- 返す範囲を、段階の事実だけに固定する … 評価、不合格の理由、提示した条件、面接での様子は返しません。段階を5つの
enumに固定することが、この線引きの実装です。 語彙が無ければ、書けません
- 本人が知らない段階の情報が、いちばん危ない … 紹介された時点で、候補者は自分の名前が会社に伝わったことを知りません。この段階の情報は採用管理システムへ入れず、受付台帳に留めます
- 紹介者へ送る文面は、1通も自動で送らない … 承認を全件に付けます。関係がこじれると、次の紹介が来なくなるだけでなく、その話が社内に広がります
- 渡していないことを記録で示せるようにする … AIへ渡した入力の全文を残し、社員から「紹介した人の情報はどう扱われているのか」と聞かれたときに、記録を開いて見せられる状態にします
- 選考に進まなかった紹介の保存期間を決める … 保留になった紹介も、辞退で終わった紹介も、候補者の情報を持っています。いつまで持ち、いつ消すかを決めてください
誤りが起きた場合のリスクは、候補者の情報が紹介者に渡ることと、本人の同意がないまま選考が始まることの2つです。 前者は入力の分離が崩れると起き、後者は「本人に話をしたか」を飛ばせると起きます。どちらも設計で通れなくできます。 運用の注意で守る設計にしないでください。
10まず何から始めるか
1週目:返してよいことと、返してはいけないことを紙1枚で決める
採用担当と人事で、5つの段階それぞれについて、紹介者へ返す一言を決めます。 同時に、返さないものを並べます。評価、不合格の理由、提示した条件、面接の様子、日程。この紙が無いまま仕組みを作ると、文面の型が作れません。
2週目:受付フォームを作り、入口を1か所にする
Zapier Forms でフォームを作り、社内ポータルと人事のチャットチャンネルの固定メッセージにURLを置きます。項目は8つまでです。「本人に話をしたか」と「代理入力か」は必須にします。
3週目:過去の紹介10件で突き合わせを試す
書き出した過去の紹介と現在の求人票を使い、ポジションの候補を出させます。空で返る件数を数えます。 当時どう扱ったかと比べ、無理に当てはめていたものがあれば拾い出します。
4週目:文面の型を5つ作り、承認を挟んで1通だけ送る
段階ごとの文面を作らせ、Request Approval を挟みます。On timeout は End run にします。 実際に紹介者1名へ1通だけ送り、受け取った側の感想を聞きます。
2か月目: フォームの送信から台帳への記録、名簿との突合、候補出しまでをつなぎます。送信前に候補者の氏名が文面に入っていないかを照合する検査を、この時点で入れます。 3か月目以降: 毎日の定時実行で、報奨金の期限と、段階が長く変わっていない紹介を一覧にします。1件40分が何分になったかを実測し、紹介者へ一度も返さないまま終わった件数が0になっているかを見ます。 この数が0で安定すれば、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 送信内容が接続したテーブルに入り、表示・絞り込み・検索・書き出しができること。送信時にZapの起動などが選べ、条件で表示する項目を変えられること。すべてのプランで利用できること | Zapier: Zapier Forms | 2026-09-23 |
| 毎時/毎日/毎週/毎月と独自の間隔、実行時刻、週末を含めるかの切り替えが選べること。タイムゾーンがアカウントの設定に従い、実行が予定時刻の数分以内に起こること。スケジュールの利用がタスクを消費しないこと | Zapier: Schedule Zap workflows | 2026-09-23 |
| Request Approval がZapを止めて承認・却下・内容の変更を待たせること。Type of reviewer、Let Reviewer edit content?、Timeout value と Timeout unit、On timeout(Skip and continue / End run)、Send to が設定できること。承認を完了できるのは1名だけで、Professional・Team・Enterprise のプランで利用でき無料プランでは使えないこと | Zapier: Human in the Loop | 2026-09-23 |
| Delay For/Delay Until/Delay After Queue があり、遅延が最大で1か月(30日)、最短1分であること。遅延中にZapのステップを変更すると続行されず、Zapを止めると予定の処理が実行されないこと | Zapier: Add delays to Zaps | 2026-09-23 |
output_config.format に json_schema 型の指定とスキーマを渡すこと。制約付きデコードで型と必須項目が保証されること。enum/const/required/additionalProperties がサポートされ、minLength/maxLength/minimum/maximum がサポートされず、配列の minItems が 0 と 1 のみであること | Claude Docs: Structured outputs | 2026-09-23 |
| 同一事業者内での個人データの提供は第三者提供に該当せず、第三者提供に関する本人の同意は必要ないこと。他の部署が当初特定した利用目的の範囲を超えて個人情報を利用する場合には、あらかじめ本人の同意を得る必要があること | 個人情報保護委員会: FAQ 1-7-2 | 2026-09-23 |
紹介者へどこまで返してよいかは、自社の利用目的の定め方によって変わります。 報奨金の支払条件と在籍期間の扱いは、自社の制度と労務の担当で決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0186)についてのご相談はこちらから。
