派遣先からの相談に、派遣先ごとの契約書・個別契約・抵触日の通知・過去のやり取りを検索して、契約の条件を根拠付きで返す
派遣先から「この業務も頼めるか」「いつまで続けられるか」と相談されたときに、その派遣先の契約書類と過去のやり取りを検索し、関係する条件を書類名と箇所付きで返します。営業は根拠を開いて確かめ、自分の言葉で答えます。
- 生成AI
- Gemini
- AIサービス
- Azure AI/Google Vertex AI/OpenSearch
- 連携・自動化
- Python
- 対象業界
- IT・SaaS/人材
- 対象部門
- 営業
- 対象業務
- 問い合わせ対応/情報検索
- 主な課題
- 属人化している/引き継ぎができていない/情報が見つからない
- AIで行う処理
- 検索(RAG)
- 主な効果
- 対応スピード向上/属人化解消/検索時間短縮
- 導入難易度
- ★★★☆☆
- 実装レベル
- 本格構成
- 費用感
- RAG・個別開発(大)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 派遣先から電話かメールで相談を受け、内容をメモする
- 共有ドライブの派遣先のフォルダを開き、該当するスタッフの最新の個別契約を探す
- 個別契約の業務の内容、就業の場所と組織単位、期間、就業時間、時間外の取り決めを読む
- 期間の相談なら、派遣先から届いた抵触日の通知と、延長の通知を探す
- 基本契約書と覚書に、関係する定めが無いかを確かめる
- メールと訪問記録を、派遣先の名前で検索し、過去に同じ話が出ていないかを見る
- 分からない点は前任の営業か管理部門に聞く
- 派遣先に回答する
- 人営業が相談の画面で派遣先を選び、相談の内容を入力する(対象のスタッフがいれば選ぶ)
- 自動中継プログラムが、派遣先コード・スタッフ・書類の種類で検索の範囲を絞る
- 自動Agent Search が契約書類を検索し、関係する条件を書類名・ページ付きで返す
- 自動同じく、やり取りの記録を検索し、関係する経緯を日付付きで返す
- 自動中継プログラムが、返ってきた個別契約が最新の版かを、派遣管理システムの契約の一覧と照らす
- 自動期間の相談なら、抵触日の通知の日付と、派遣管理システムの開始日を並べて表示する
- 人営業が根拠の書類を開いて確かめる
- 人判断の要るもの(業務の範囲外、期間の延長、条件の変更)は管理部門に回す
- 人営業が派遣先に回答し、回答の内容を記録に残す
各工程の詳しい説明を読む
- 派遣先から電話かメールで相談を受け、内容をメモする
- 共有ドライブの派遣先のフォルダを開き、該当するスタッフの最新の個別契約を探す
- 個別契約の業務の内容、就業の場所と組織単位、期間、就業時間、時間外の取り決めを読む
- 期間の相談なら、派遣先から届いた抵触日の通知と、延長の通知を探す
- 基本契約書と覚書に、関係する定めが無いかを確かめる
- メールと訪問記録を、派遣先の名前で検索し、過去に同じ話が出ていないかを見る
- 分からない点は前任の営業か管理部門に聞く
- 派遣先に回答する
(a)書類を探すのに時間がかかる。 個別契約は更新のたびに新しいファイルが増え、ファイル名の付け方も担当者ごとに違います。「最新の個別契約はどれか」を確かめるところから始まり、 古い版の条件で答えてしまう失敗もここで起きます。
(b)経緯が前任者の手元にしかない。 担当替えの引き継ぎは、派遣先の一覧と主な連絡先までで終わることが多く、「この派遣先とは、こういう取り決めになっている」という経緯は前任者のメールボックスに残ります。 前任者が退職していれば、聞く先がありません。
(c)確かめずに答えてしまう。 相談の多くは「すぐ返事がほしい」という形で来ます。電話口で「たぶん大丈夫です」と答え、後で個別契約の業務の範囲に入っていなかったと分かる。 書類を探す時間が長いほど、この答え方が増えます。
(d)期間の相談は、間違えると重い。 派遣先の事業所単位の期間と、派遣スタッフ個人の組織単位の期間は別に数えます。抵触日の通知、延長の通知、部署の異動の記録を組み合わせないと、「いつまで続けられるか」は答えられません。
- 【人】 営業が相談の画面で派遣先を選び、相談の内容を入力する(対象のスタッフがいれば選ぶ)
- 【自動】 中継プログラムが、派遣先コード・スタッフ・書類の種類で検索の範囲を絞る
- 【自動】 Agent Search が契約書類を検索し、関係する条件を書類名・ページ付きで返す
- 【自動】 同じく、やり取りの記録を検索し、関係する経緯を日付付きで返す
- 【自動】 中継プログラムが、返ってきた個別契約が最新の版かを、派遣管理システムの契約の一覧と照らす
- 【自動】 期間の相談なら、抵触日の通知の日付と、派遣管理システムの開始日を並べて表示する
- 【人】 営業が根拠の書類を開いて確かめる
- 【人】 判断の要るもの(業務の範囲外、期間の延長、条件の変更)は管理部門に回す
- 【人】 営業が派遣先に回答し、回答の内容を記録に残す
7番目が、この設計の分かれ目です。営業は、返ってきた要点だけで答えません。 要点は書類のどこを開けばよいかの案内で、営業は必ず根拠の箇所を開いて読みます。 その時間を含めて1件5分です。
5番目を機械の照合にしているのも、意図してのことです。 検索は「関係がありそうな書類」を返しますが、それが最新の個別契約かどうかは、検索の得意なことではありません。 契約の一覧は派遣管理システムが持っているので、そちらと照らします。
02今回想定するシステム構成
派遣先からの相談(電話・メール) ▼【トリガー】営業が相談の画面で派遣先と内容を送信 中継プログラム(Python、Cloud Run) ├──▶ 派遣管理システム:派遣先コード、スタッフ、有効な個別契約の一覧 ▼ Agent Search(Vertex AI Search)── answer メソッド(2回呼ぶ) │ ① 契約書類:基本契約/個別契約/抵触日の通知/覚書/就業条件の明示 │ ② やり取りの記録:メール/訪問記録/電話のメモ │ 絞り込み:client_id/staff_id/doc_type/status ▼ 中継プログラム ── 個別契約の版の照合、抵触日と開始日の並べ表示 └──▶ 画面:契約の条件(根拠付き)/経緯(日付付き)/確かめる点
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 検索基盤 | Vertex AI Search(Agent Search)の answer メソッド | Azure AI Search、Amazon OpenSearch Service |
| 生成AI | Gemini(answer メソッドの回答の生成に使うモデル) | ─ |
| 連携 | 中継プログラム(Python。Cloud Run で動かし、画面・派遣管理システム・検索をつなぐ) | Node.js で同じものを書く |
| 認証 | 社内の ID 基盤(Microsoft Entra ID など。Workforce Identity Federation でつなぐ) | Google の ID |
| 保管 | Cloud Storage(契約書類の PDF、やり取りの記録、メタデータ) | ─ |
派遣管理システム、共有ドライブ、メールはそのまま使います。 新しく作るのは、相談の画面と、契約書類とやり取りの記録を検索に入れる仕組みです。最初の準備は、派遣先ごとのフォルダのファイルに、派遣先コードと書類の種類を付けることです。
検索の土台は、Agent Search(Vertex AI Search から改称中)の answer メソッドです。 検索の結果から回答を作り、includeCitations を有効にすると、回答の中の記述に出典を付けられます。回答の本文は answerText、出典は citations と references に返り、references には元の文書と該当箇所の抜粋が入ります。 画面には、この抜粋と文書へのリンクを並べます。
取り込むデータは、Cloud Storage に置いた PDF と、メタデータを書いた JSONL です。 対応する形式は TXT、JSON、Markdown、PDF、HTML、DOCX、PPTX、XLSX、XLSM で、1ファイル200MBまで、1回の取り込みで10万ファイルまでとされています。スキャンした PDF は、レイアウトパーサーを使って文字とテーブルを取り出します。 RAG に使う場合は、データストアを作るときにドキュメントのチャンク化を有効にします。
03どうやって実装するのか
処理の起点を決める
起点は、営業が相談の画面で派遣先を選び、相談の内容を送ったことです。 派遣先からのメールや電話を自動で拾って検索することはしません。相談の内容を営業が自分の言葉で入れ直すことで、何を確かめたいのかが一度はっきりします。 「来月から検品もお願いしたい」という電話なら、「スタッフ○○の個別契約で、検品が業務の内容に入っているか」と入れます。
派遣先とスタッフは、入力ではなく選択にします。 派遣先コードとスタッフの番号は派遣管理システムから引いた一覧から選ばせます。自由入力にすると、表記のゆれで派遣先の絞り込みが外れます。
書類の取り込みは、別に毎晩動かします。 共有ドライブの派遣先のフォルダで、前日に追加・更新されたファイルを Cloud Storage に写し、メタデータの JSONL を作り直して取り込みます。新しい個別契約が締結された日の夜には、検索に入ります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 相談 | 派遣先コード、スタッフの番号(任意)、相談の内容、相談の種類(業務の範囲/期間/時間・休日/その他) | 相談の画面 |
| 契約書類 | 基本契約書、個別契約書、抵触日の通知、延長の通知、覚書、就業条件の明示の控え | 共有ドライブの派遣先のフォルダ |
| やり取りの記録 | 派遣先とのメール、訪問記録、電話のメモ | メール、訪問記録のスプレッドシート |
| 契約の一覧 | 派遣先・スタッフごとの有効な個別契約、契約期間、就業の場所と組織単位、派遣開始日 | 派遣管理システム |
| 担当の情報 | 営業の所属、担当している派遣先 | 社内の ID 基盤 |
質を決めるのは、いちばん下から2つ目の契約の一覧です。 検索は書類を見つけてきますが、どれが今有効な個別契約かは、派遣管理システムの一覧にしか正しく書かれていません。 一覧と書類のファイルが、契約の番号でつながっている必要があります。
個別契約で定める事項は、労働者派遣法の第26条第1項に並んでいます。 業務の内容、就業の場所と組織単位、指揮命令者、派遣の期間と派遣就業をする日、就業の開始と終了の時刻と休憩時間、安全と衛生、苦情の処理などです。派遣先からの相談の多くは、この項目のどれかに当たります。 相談の種類の選択肢を、この項目に合わせて作ります。
やり取りの記録は、メールの全部ではなく、営業が「経緯として残す」と印を付けたものに限ります。 すべてのメールを入れると、日程の調整や挨拶のメールが検索の結果を埋めます。
データの取得方法を決める
契約書類とやり取りの記録は、Cloud Storage に置いてデータストアに取り込みます。 メタデータは JSONL の各行に id、structData、content.mimeType、content.uri を書きます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 派遣先コード、スタッフの番号 | メタデータ | 派遣先ごと・スタッフごとの絞り込み |
| 書類の種類(基本契約/個別契約/抵触日の通知/覚書/記録) | メタデータ | 契約書類とやり取りの記録を分けて引く |
| 契約の番号、契約期間 | メタデータ | 派遣管理システムの一覧との照合 |
| 状態(有効/期間満了) | メタデータ | 期間満了の個別契約を参考に回す |
| 閲覧の範囲 | acl_info | 担当の営業と管理部門にだけ出す |
絞り込みの式は、派遣先コードを必ず含めます。 項目を索引可能にしておけば、client_id: ANY("C0123") AND doc_type: ANY("individual_contract", "notice", "master_contract", "memo") AND status: ANY("active") のように書けます。2回目の呼び出しでは doc_type を record に替え、契約書類とやり取りの記録が同じ回答に混ざらないようにします。 スタッフを選んだときは staff_id も足します。
閲覧の範囲は、ドキュメントのメタデータの acl_info に書きます。 readers の principals に、担当の営業チームと管理部門の group_id を入れます。アクセス制御は、データストアを作るときにしか有効にできず、既存のデータストアで後からオン・オフできません。 最初に作るときに有効にしておきます。
検索は、ログインした営業の ID で行います。 中継プログラムが広い権限で検索すると、他の営業チームが担当する派遣先の書類も答えの材料になりえます。 派遣先コードの絞り込みとアクセス制御の両方で守ります。
AIへ渡す前に整形する
- ファイルに派遣先コードを付ける … フォルダ名から派遣先を特定し、派遣管理システムのコードに置き換えます
- 書類の種類を付ける … ファイル名と1ページ目の表題から、基本契約・個別契約・抵触日の通知・延長の通知・覚書を見分けます
- 個別契約に契約の番号を付ける … 派遣管理システムの契約の一覧と、契約期間とスタッフで突き合わせます
- 状態を付ける … 契約期間が終わった個別契約を
expiredにします - スキャンした PDF を確かめる … 文字が取れないものはレイアウトパーサーで読み、読めないものは一覧に出します
- やり取りの記録を写す … 営業が印を付けたメールと訪問記録を、日付・相手・要旨・本文の形の文書にします
- 閲覧の範囲を付ける … 担当チームと管理部門の
group_idを書きます
3番目を省かないでください。 契約の番号が付いていないと、中継プログラムは「検索が返した個別契約が今有効なものか」を確かめられません。古い個別契約の業務の内容で答えてしまう失敗は、ここで防ぎます。
6番目のやり取りの記録には、派遣スタッフの評価や健康の話を入れません。 訪問記録には「本人が体調を崩している」「勤務態度について先方から指摘」といった内容が混ざります。契約の経緯として残すのは、業務・時間・期間・単価に関わる取り決めの話だけにします。
AIに処理させる
させるのは、相談に関係する契約の条件を書類から見つけ、書類名と箇所を付けて書き出すことと、関係するやり取りの経緯を日付付きで書き出すことです。 頼めるか、延長できるかの結論は書かせません。
| 返すもの | 中身 | 根拠 |
|---|---|---|
| 契約の条件 | 相談に関係する項目(業務の内容、就業の場所と組織単位、期間、時間、時間外・休日など)と、その記載 | 個別契約、基本契約、覚書 |
| 期間の情報 | 抵触日の通知に書かれた日付、延長の通知の有無 | 抵触日の通知、延長の通知 |
| 経緯 | 過去に同じ話が出たときの日付と要旨 | やり取りの記録 |
| 確かめる点 | 書類に書かれていない点、書類どうしで食い違う点 | 上のすべて |
answer メソッドの設定は次のようにします。
| 設定 | 値 | 理由 |
|---|---|---|
includeCitations | 有効 | 条件と経緯に出典を付ける |
ignoreLowRelevantContent | 有効 | 関係の薄い書類で答えない |
ignoreNonAnswerSeekingQuery | 有効 | 質問でない入力で回答を作らない |
filter | 派遣先コード、書類の種類、状態 | 派遣先ごとに閉じ、契約書類と記録を分けて引く |
preamble | 下の指示 | 答え方の規則を与える |
ignoreNonAnswerSeekingQuery で回答が作られなかったときは、answerSkippedReasons に理由が返ります。 画面には「回答を作れませんでした」と出し、検索の結果だけを並べます。
| させないこと | 理由 |
|---|---|
| 頼めるか・延長できるかの結論 | 契約の条件のほか、本人の意向と法令上の制限が関わる |
| 書かれていない条件の補い | 「一般的には」で埋めると、契約の条件に見える |
| 他の派遣先の書類での代用 | 業務の範囲・時間・単価が派遣先ごとに違う |
| やり取りの記録を契約の条件として書くこと | 口頭の話は、個別契約に入るまで条件ではない |
| 抵触日の計算 | 日付の計算は中継プログラムが行い、AIには通知の記載を写させる |
2行目と4行目が、いちばん起きやすい失敗です。 「残業は月何時間までか」と聞かれて個別契約に記載が無いと、モデルはメールに書かれた「月20時間まで」を条件として答えたがります。それは経緯であって、契約の条件ではありません。 経緯として分けて書かせ、個別契約に反映されていないことを確かめる点に出させます。
指示内容を固定する
answer メソッドの preamble に、次の指示を入れます(1回目の契約書類の呼び出し用)。
あなたは人材派遣会社で、派遣先から受けた相談について、
その派遣先との契約書類に何が書かれているかを示す担当です。
読むのは、派遣先を担当している営業です。
【前提】
検索の文の最初に、派遣先コード、スタッフの番号(あれば)、
相談の種類、相談の内容が並んでいます。
検索の対象は、その派遣先との契約書類だけです。
【答え方】
1. 相談に関係する契約の項目を1つずつ書いてください。
項目ごとに、書類の名前、契約の番号、記載をそのまま書いてください。
2. 期間についての相談なら、抵触日の通知に書かれた日付と、
延長の通知があるかを書いてください。
3. 書類に書かれていない点と、書類どうしで食い違う点を、
「確かめる点」として最後に書いてください。
【厳守事項】
- 検索結果の書類に書かれていることだけで答えてください。
一般的な派遣の決まりや、他の派遣先の例で補わないでください。
- 書類に記載が無い項目は「記載なし」と書いてください。
推測で埋めないでください。
- 頼めるか、延長できるか、問題ないか、といった結論を書かないでください。
- 日付の計算をしないでください。書類に書かれた日付をそのまま写してください。
- 状態が expired の書類は、「期間満了の契約」と明記して分けて書いてください。
- 同じ項目について書類どうしで記載が違うときは、両方を写し、
どちらが正しいかを決めないでください。
- 派遣スタッフの評価、健康、私生活に関わる内容を書かないでください。
2回目のやり取りの記録の呼び出しでは、1行目の役割を「過去のやり取りの経緯を示す担当」に替え、答え方を「日付、相手、要旨を古い順に書く」にします。厳守事項に、次の1行を足します。
- やり取りの記録に書かれた取り決めを、契約の条件として書かないでください。
「経緯」として日付付きで書き、契約書類に反映されているかは書かないでください。
「結論を書かない」と「日付の計算をしない」を明記しないと、どちらもやります。 抵触日の通知と派遣開始日があれば、モデルは残りの期間を計算して「あと8か月続けられます」と書きます。派遣先の事業所単位の期間とスタッフ個人の組織単位の期間を取り違えたまま計算することがあり、 その数字が派遣先にそのまま伝わると取り返しがつきません。日付の並べ表示は中継プログラムが行います。
出力形式を固定する
answer メソッドの回答とは別に、中継プログラムが画面用に次の形にまとめます。
{
"client_id": "C0123",
"staff_id": "S04567",
"inquiry_type": "scope | period | hours | other",
"contract_terms": [
{ "item": "業務の内容", "text": "", "doc_name": "", "contract_no": "",
"page": 0, "status": "active | expired", "is_latest": true }
],
"period_info": {
"conflict_date_notice": "", "extension_notice": "none | found",
"assignment_start": "", "org_unit": ""
},
"history": [
{ "date": "", "counterpart": "", "summary": "", "source": "" }
],
"to_confirm": [""],
"answer_skipped": false
}
1つ目の理由は、契約の条件と経緯を別の配列に置けることです。 画面でも左右に分けて表示し、営業が経緯を契約の条件と読み違えないようにします。
2つ目は、is_latest を中継プログラムが付けることです。 検索が返した個別契約の契約の番号を派遣管理システムの一覧と照らし、最新でなければ画面で灰色にして「この契約は更新されています」と出します。 AIの回答の中身には手を入れません。
3つ目は、period_info に日付を並べるだけにすることです。 抵触日の通知の日付は AIが書類から写し、派遣開始日と組織単位は派遣管理システムから入れます。残りの期間は表示しません。 期間の相談は、この3つを見たうえで管理部門と確かめます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 相談の画面 | 中継プログラムの画面 | 派遣先・スタッフの選択、相談の入力、結果の表示 |
| 派遣管理システム | 読み取り(CSVの出力か API) | 派遣先コード、スタッフ、有効な個別契約の一覧 |
| 共有ドライブ | 毎晩の写し | 契約書類の PDF を Cloud Storage へ |
| Agent Search | answer メソッドの呼び出し | 契約書類と記録の検索、出典付きの回答 |
| 社内の ID 基盤 | Workforce Identity Federation | 営業の ID で検索し、閲覧の範囲を効かせる |
派遣管理システムには書き込みません。 この構成が出すのは回答の根拠までで、契約の条件を変えるのは、派遣先と合意して個別契約を結び直す手続きです。 検索の結果から契約の登録を直す経路は作りません。
派遣管理システムに API が無いときは、毎晩の CSV の出力で足ります。
人が確認する
営業は、返ってきた結果だけで派遣先に答えません。 確かめる順は次のとおりです。
is_latestを見る … 灰色の個別契約が根拠になっていれば、最新の契約で検索し直します- 根拠の箇所を開く … 契約の条件の各行のリンクから PDF の該当ページを開き、記載を読みます
- 確かめる点を読む … 「記載なし」と「食い違い」があれば、管理部門に回します
- 期間・業務の範囲の変更は、管理部門に回す … 延長や業務の追加は、契約の変更になります
- 回答の内容を記録に残す … 何を根拠に何と答えたかを、訪問記録に書きます
4番目を省かないでください。 業務の内容に入っていない業務を頼みたいという相談は、個別契約の変更が要る話です。 営業がその場で「大丈夫です」と答えると、スタッフは契約に無い業務に就くことになります。
目標は、相談1件を5分で根拠まで確かめることです。 それを超える相談は、たいてい確かめる点に「記載なし」が出ていて、管理部門の判断を待つものです。
例外に対処する
| 起きること | 対応 |
|---|---|
| 関係する書類が見つからない | 回答を作らず「該当する書類なし」と出す。フォルダに書類が無いのか、取り込めていないのかを管理部門が確かめる |
| 返った個別契約が最新でない | is_latest が false。最新の契約の番号で検索し直す |
| 書類どうしで記載が食い違う | 両方を出し、確かめる点に載せる。どちらが優先かは管理部門が決める |
| スキャンが粗く文字が取れない | 取り込み時に一覧に出し、スキャンし直す |
| 抵触日の通知が見つからない | 期間の相談では「抵触日の通知なし」と出す。派遣先に通知を求める必要がないか、管理部門が確かめる |
| スタッフの部署が変わっている | 派遣管理システムの組織単位と個別契約の組織単位が違えば、確かめる点に載せる |
| 相談が契約の話でない | answerSkippedReasons が返る。画面で相談の内容を書き直してもらう |
| 検索の呼び出しが失敗する | 画面に失敗と出し、共有ドライブのフォルダへのリンクを出す |
上から1行目と5行目は、AIの問題ではありません。 書類が共有ドライブに保存されていない、抵触日の通知を派遣先から受け取った後にどこにも保存していない、という書類の管理の問題が、検索で見えるようになっただけです。 件数を数えて、管理部門で書類をそろえる材料にします。
記録を残す
- 相談の内容、派遣先コード、スタッフの番号、相談の種類、日時、営業の ID
- answer メソッドへの要求と、返ってきた回答の全文(
answerText、citations、references) - 中継プログラムが付けた
is_latestと、そのとき参照した派遣管理システムの契約の一覧 - 営業が派遣先に答えた内容と、管理部門に回したかどうか
- 「該当する書類なし」「抵触日の通知なし」になった派遣先の一覧
3つ目で「そのときの契約の一覧」を残すのは、後から契約が更新されるためです。 半年後に「あのとき何を根拠に答えたのか」を聞かれたとき、当時有効だった個別契約が分からないと、回答が正しかったかを確かめられません。
最後の行は、書類の整備の順番を決める材料になります。
04実装レベルの3段階
最小構成では、書類を毎回添付し直すので、160社には使えません。 確かめるための段階です。 半自動化で、1件15分が8分程度になります。 書類を探す時間は消えますが、過去のやり取りを探す時間と、最新の契約かを確かめる時間が残ります。本格構成で5分になり、この段階が本記事の想定です。 差が出るのは、経緯の検索と版の照合が、半自動化ではまだ手作業だからです。 段階を飛ばさないでください。 半自動化で1か月使うと、「該当する書類なし」になる派遣先が先に分かります。そこを直してから記録の取り込みに進みます。
05工数削減シミュレーション
導入後 480件 × 5分 ÷ 60 = 40 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 派遣先が100社を超え、1人の営業が数十社を受け持っている人材派遣会社。派遣先から「この業務も頼めるか」「延長できるか」「残業はどこまでか」といった相談が電話やメールで日常的に届き、そのたびに契約書のフォルダと過去のメールを探している場合。担当替えや退職で、派遣先との取り決めの経緯が前任者のメールボックスに残ったままになっている場合。契約書類がPDFで共有ドライブに保存されている場合。
- 派遣先が数社に限られ、契約の条件を営業が覚えていられる場合。契約書類が紙のままで、電子化の予定が無い場合(読み込む書類が無いと、検索の対象がありません)。派遣の可否や違法性の判断そのものをAIに任せたい場合(この構成は契約書類に書かれた条件を根拠付きで示すだけで、可否の判断は営業と管理部門が行います)。
07最小構成で試す方法
- 相談の多い派遣先を3社選ぶ
- その3社の契約書類(基本契約、最新の個別契約、抵触日の通知、覚書)を PDF でそろえる
- 手元の AI サービスで、派遣先1社ずつ、書類を添付して会話を始める
- 先月実際に受けた相談を、1件ずつそのまま入力し、「この書類に書かれていることだけで、関係する条件を書類名と箇所付きで書いてください。書かれていなければ記載なしと書いてください。頼めるかどうかの結論は書かないでください」と指示する
- 出てきた結果を、当時の営業の回答と突き合わせる
派遣先を1社ずつに分けるのが大事です。 3社の書類を1つの会話に入れると、他社の条件で答える失敗がすぐに起き、 本格構成で派遣先コードの絞り込みが要る理由がよく分かります。
| 出てきた内容 | 判断 |
|---|---|
| 当時の回答と同じ条件を、根拠付きで返した | データストアと絞り込みの設計に進む |
| 書かれていない条件を一般論で埋めた | 指示の書き方で直る。構成は有効 |
| 最新でない個別契約の条件を返した | 契約の番号と状態のメタデータが要る。 本格構成で照合する |
| 当時の回答が書類と食い違っていた | 今の運用の問題が見つかった。 管理部門と確かめる |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 他の派遣先の条件で答える | 派遣先コードの絞り込みを必ず入れる。 画面で派遣先を選ばないと送れないようにする |
| 古い個別契約の条件を返す | 契約の番号と状態をメタデータに持ち、派遣管理システムの一覧と照合する |
| メールの取り決めを契約の条件として返す | 契約書類と記録を別の呼び出しにし、記録は経緯として分けて表示する |
| 残りの期間を計算して書く | 日付の計算を禁じ、日付の並べ表示は中継プログラムが行う |
| 書かれていない条件を一般論で埋める | 「記載なし」と書かせ、確かめる点に出させる |
| アクセス制御を後から足せない | データストアを作るときに有効にする。 既存のデータストアでは切り替えられない |
| 中継プログラムの権限で検索する | 営業の ID で検索し、閲覧の範囲を効かせる |
| スキャンした契約書の文字が取れない | レイアウトパーサーを使い、それでも読めないものはスキャンし直す |
| 訪問記録にスタッフの評価が混ざる | 取り込む記録を、契約の経緯に関わるものに限る |
| 営業が要点だけ読んで答える | 根拠の箇所を開く手順を決め、回答の根拠を記録に残させる |
上の2行が、この構成の失敗のほとんどです。 どちらも「書類としては正しいが、この相談の根拠ではない」書類が返る失敗です。派遣先と版の2つで範囲を絞れているかどうかで、運用に乗るかが決まります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 派遣先との契約書類(業務の内容、就業の場所、期間、時間、派遣料金)、派遣スタッフの氏名と配属、派遣先とのやり取りです。
- 派遣先ごとに閲覧の範囲を閉じる … 派遣料金と条件は派遣先ごとの取引の情報です。担当の営業チームと管理部門の外に出さないよう、
acl_infoで閲覧の範囲を付けます - スタッフ個人の情報を検索に入れない … 評価、健康、私生活に関わる内容は、訪問記録に書かれていても取り込みません。契約の経緯に関わる話だけを写します
- この構成は可否を判断しない … 業務の追加や期間の延長ができるかは、契約の条件、本人の意向、法令上の期間の制限を合わせて、営業と管理部門が判断します。 労働者派遣法では、派遣先の事業所単位の派遣可能期間は3年とされ、延長には過半数労働組合等の意見の聴取が要るとされています。この構成が出すのは、書類に書かれた日付と記載だけです
- 抵触日の通知を、検索の結果だけで扱わない … 新たな派遣契約を結ぶとき、派遣先は抵触日を派遣元に通知しなければならず、通知が無いときは派遣元は契約を結んではならないとされています。検索で「通知なし」と出たら、書類の保存漏れか、本当に受け取っていないかを管理部門が確かめます
- 回答の根拠を残す … 何を根拠に何と答えたかを記録に残すことで、後から派遣先との認識が食い違ったときに確かめられます
誤りが起きた場合のリスクは、他の派遣先や古い契約の条件で答えることと、期間を取り違えることの2つです。 前者は絞り込みと版の照合で、後者は日付の計算をAIにさせないことで防ぎます。どちらも、AIの回答の正しさではなく、何を検索の範囲に入れるかの設計で守ります。
10まず何から始めるか
1週目:相談の多い派遣先3社の書類をそろえる
相談の多い派遣先を3社選び、基本契約、最新の個別契約、抵触日の通知、覚書を PDF でそろえます。このとき、最新の個別契約がどれかを派遣管理システムと照らして確かめます。 ここで迷うなら、本格構成でも同じところで迷います。
2週目:先月の相談で試す
先月の相談を20件選び、派遣先1社ずつ手元の AI サービスに書類を添付して試します。当時の回答と突き合わせ、一般論で埋めていないか、古い契約の条件を返していないかを最優先で見ます。
3週目:ファイルに派遣先コードと書類の種類を付ける
160社分のフォルダについて、ファイルに派遣先コード・書類の種類・契約の番号を付ける規則を決めます。 相談の多い上位40社から付けていきます。あわせて、抵触日の通知が保存されていない派遣先を一覧にします。
4週目:データストアを作って半自動化を始める
アクセス制御を有効にしたデータストアを作り、上位40社の契約書類を取り込みます。この時点ではやり取りの記録は入れず、契約書類だけで派遣先コードの絞り込みが効くかを見ます。
2か月目: 残りの派遣先の書類を取り込み、派遣管理システムとの版の照合を足します。3か月目以降: 営業が印を付けたやり取りの記録を取り込み、1件15分が何分になったかを実測します。「該当する書類なし」の派遣先がなくなり、相談の根拠が記録に残るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Vertex AI Search が Agent Search へ改称中であること。answer メソッドが検索結果から回答を作り、includeCitations で出典を付けられること。応答が answerText、citations、references、steps を含むこと。ignoreAdversarialQuery、ignoreNonAnswerSeekingQuery で回答を作らなかったときに answerSkippedReasons が返ること。ignoreLowRelevantContent、filter、preamble を指定できること | Google Cloud: Get answers and follow-ups | 2026-10-07 |
メタデータで絞り込む式に ANY() と AND/OR が使えること。絞り込みに使う項目をスキーマで索引可能にする必要があること | Google Cloud: Filter by metadata | 2026-10-07 |
非構造化データのアクセス制御を acl_info の readers と principals(group_id/user_id)で付けること。Microsoft Entra ID などを Workforce Identity Federation でつなげること。アクセス制御はデータストアの作成時に設定し、既存のデータストアでは切り替えられないこと | Google Cloud: Use data source access control | 2026-10-07 |
メタデータ付きの非構造化データを JSONL(id、structData、content.mimeType、content.uri)で取り込むこと。対応形式(TXT、JSON、Markdown、PDF、HTML、DOCX、PPTX、XLSX、XLSM)、1ファイル200MB、1回の取り込み10万ファイル。スキャンした PDF にレイアウトパーサーが勧められること。RAG にはチャンク化を有効にすること | Google Cloud: Prepare data for ingesting | 2026-10-07 |
| 労働者派遣契約で定める事項(第26条第1項:業務の内容、就業の場所と組織単位、指揮命令者、期間と就業日、時刻と休憩時間、安全衛生、苦情の処理など)。派遣先が抵触日を派遣元に通知すること、通知が無いときは派遣元が契約を結んではならないこと(第26条第4項・第5項)。派遣可能期間が3年であること、延長に過半数労働組合等の意見の聴取が要ること、延長したときの抵触日の通知(第40条の2) | e-Gov 法令API: 労働者派遣事業の適正な運営の確保及び派遣労働者の保護等に関する法律 | 2026-10-07 |
派遣の可否と期間の扱いは、自社の管理部門と、必要に応じて社会保険労務士・労働局に確かめてください。 本記事は上の公式情報で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0690)についてのご相談はこちらから。
