派遣元が作る個別契約書と就業条件明示書の記載を、労働者派遣法の記載事項と派遣先との基本契約に照らして確かめ、抜けと食い違いを営業へ返す
派遣元の営業が作った個別契約書と就業条件明示書を、出す前に読み取り、労働者派遣法が求める記載事項がそろっているかを項目ごとに判定します。2つの書類と受注票・基本契約の値の食い違いも洗い出し、直す箇所を営業へ返します。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/n8n/Power Automate/Python
- 対象業界
- IT・SaaS/人材/製造
- 対象部門
- 営業/法務
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 入力漏れ削減/品質標準化/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 営業が派遣管理の仕組みから個別契約書と就業条件明示書の下書きを出し、派遣先との調整に合わせて Word で書き換える
- 営業が2つのファイルを SharePoint の「契約点検」ライブラリに置き、契約管理課に依頼する
- 担当者が個別契約書を開き、法の記載事項の一覧と見比べながら、項目ごとに記載があるかを確かめる
- 就業条件明示書を開き、同じ項目が個別契約書と同じ値で書かれているかを見比べる
- 基本契約の台帳を開き、時間外の上限や責任者の定めと合っているかを確かめる
- 抜けや食い違いがあれば、コメントを付けて営業に戻す
- 直ったものを確かめ、営業が派遣先とスタッフへ出す
- 人営業が個別契約書と就業条件明示書を作り、受注番号を付けて「契約点検」ライブラリに置く
- 自動ファイルの作成をきっかけにワークフローが動き、2つのファイルと受注票・基本契約の台帳の行をそろえる
- 自動Word のファイルから段落と表の文字を取り出す
- 自動Azure OpenAI が、2つの書類それぞれについて記載事項を項目ごとに取り出し、`present` / `missing` / `unclear` を付ける
- 自動プログラムが値を正規化し、個別契約書・明示書・受注票・基本契約のあいだで食い違いを比べる
- 自動抜けと食い違いを一覧にし、`pass` / `needs_fix` / `needs_review` を規則で決める
- 人契約管理課の担当が `needs_fix` と `needs_review` を確かめ、営業へ戻す内容を決める
- 人営業が直して置き直すと、2番目から同じ点検が回る
- 人`pass` になったものを営業が派遣先とスタッフへ出す
各工程の詳しい説明を読む
- 営業が派遣管理の仕組みから個別契約書と就業条件明示書の下書きを出し、派遣先との調整に合わせて Word で書き換える
- 営業が2つのファイルを SharePoint の「契約点検」ライブラリに置き、契約管理課に依頼する
- 担当者が個別契約書を開き、法の記載事項の一覧と見比べながら、項目ごとに記載があるかを確かめる
- 就業条件明示書を開き、同じ項目が個別契約書と同じ値で書かれているかを見比べる
- 基本契約の台帳を開き、時間外の上限や責任者の定めと合っているかを確かめる
- 抜けや食い違いがあれば、コメントを付けて営業に戻す
- 直ったものを確かめ、営業が派遣先とスタッフへ出す
(a)抜けは、出したあとに分かる。 責任の程度、協定対象派遣労働者に限るか否かの別のように、ひな形にあっても営業が消してしまう欄があります。派遣先から署名済みで戻ってきた後に気づくと、作り直しと再署名の手間が派遣先にも生じます。
(b)2つの書類で値がずれる。 派遣先との電話で就業時間を30分ずらし、個別契約書だけを直す。明示書はスタッフに渡す書類なので、ずれたまま渡すとスタッフは違う時刻に出勤します。
(c)基本契約の条件までは見切れない。 時間外の上限は派遣先ごとに違い、台帳を開いて探すのに時間がかかります。忙しい月には、この5番目が省かれます。
(d)点検の細かさが担当者で違う。 誰が見たかで、戻ってくる指摘の数が変わります。
- 【人】 営業が個別契約書と就業条件明示書を作り、受注番号を付けて「契約点検」ライブラリに置く
- 【自動】 ファイルの作成をきっかけにワークフローが動き、2つのファイルと受注票・基本契約の台帳の行をそろえる
- 【自動】 Word のファイルから段落と表の文字を取り出す
- 【自動】 Azure OpenAI が、2つの書類それぞれについて記載事項を項目ごとに取り出し、
present/missing/unclearを付ける - 【自動】 プログラムが値を正規化し、個別契約書・明示書・受注票・基本契約のあいだで食い違いを比べる
- 【自動】 抜けと食い違いを一覧にし、
pass/needs_fix/needs_reviewを規則で決める - 【人】 契約管理課の担当が
needs_fixとneeds_reviewを確かめ、営業へ戻す内容を決める - 【人】 営業が直して置き直すと、2番目から同じ点検が回る
- 【人】
passになったものを営業が派遣先とスタッフへ出す
7番目で担当者が見るのは、指摘が出た組だけです。 pass の組は一覧で件数と派遣先を流し見ます。全件を開き直す設計にすると、120.0時間はほとんど減りません。
6番目を規則で決めているのも意図してのことです。 何を抜けとして戻すか、どの食い違いを許すか(たとえば明示書に書く休憩の書き方の違い)は、契約管理課が決める取り決めです。AIは事実を書き写すところまでにします。
02今回想定するシステム構成
個別契約書(Word)+ 就業条件明示書(Word)+ 受注番号 ▼【トリガー】SharePoint「契約点検」ライブラリへの保存 Power Automate ├──▶ 受注票(派遣管理の仕組みから書き出した値) ├──▶ 基本契約の台帳(派遣先ごとの条件) ▼ Python(python-docx)── 段落と表の文字を取り出す ▼ Azure OpenAI(Microsoft Foundry。構造化出力) │ 書類ごとに記載事項を項目別に取り出し、present / missing / unclear ▼ Python ── 値の正規化と照合(書類どうし・受注票・基本契約) ▼ 判定(pass / needs_fix / needs_review) ▼ 【契約管理課が指摘の出た組だけ確認】→ 営業へ戻す(Teams と SharePoint のリスト)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude API、Gemini API |
| 連携 | Power Automate | Make、n8n |
| 差異計算 | Python(python-docx による取り出しと、値の正規化・照合) | Google Apps Script |
| 保管 | SharePoint(書類、点検の結果、指摘の記録) | Box、Google ドライブ |
| 台帳 | 派遣管理の仕組みと基本契約の台帳 | ― |
派遣管理の仕組みには書き込みません。 受注票の値は読むだけで、点検の結果は SharePoint のリストに残します。最初の準備は、基本契約の台帳に、派遣先ごとの時間外の上限・休日の就業・派遣先責任者・解除のときの措置の列をそろえることです。
点検の物差しは、労働者派遣法第26条第1項です。 派遣契約の当事者は、契約の締結に際し、業務の内容、就業の場所と組織単位、指揮命令者、派遣の期間と就業日、始業・終業の時刻と休憩時間、安全衛生、苦情の処理、契約解除のときの雇用の安定の措置、紹介予定派遣のときの事項、そして厚生労働省令で定める事項を定め、その内容の差異に応じて派遣労働者の人数を定めなければならないとされています。
省令で定める事項は、施行規則第22条にあります。 業務に伴う責任の程度、派遣元責任者と派遣先責任者、就業日以外の就業や時間の延長ができる旨を定めた場合のその日や時間数、福利厚生の便宜の供与、派遣終了後に派遣先が雇用する場合の紛争防止の措置、協定対象派遣労働者に限るか否かの別、無期雇用派遣労働者等に限るか否かの別の7つです。施行規則第21条第3項は、定めた事項を書面に記載しておかなければならないとしています。
明示書の物差しは、法第34条です。 派遣元はあらかじめ、労働者派遣をしようとする旨、第26条第1項各号の事項などのその派遣労働者に係るもの、組織単位と事業所の2つの抵触日を明示し、派遣先が一定の行為を行った場合に労働契約の申込みをしたものとみなされることとなる旨もあわせて明示しなければならないとされています。
生成AIは、Azure OpenAI の構造化出力で呼びます。 Microsoft Learn によれば、構造化出力ではモデルが指定した JSON スキーマの定義に従い、Chat Completions API では response_format、Responses API では text.format にスキーマを書きます。項目ごとの判定を、決まった形で受け取るために使います。
03どうやって実装するのか
処理の起点を決める
SharePoint の「契約点検」ライブラリにファイルが作られたことを起点にします。 Power Automate の SharePoint コネクタには「ファイルの作成時 (プロパティのみ)」のトリガーがあり、ライブラリで項目が作成されたときに動きます。返るのはライブラリの列に入ったプロパティだけなので、続けて「ファイル コンテンツの取得」でファイルの中身を取ります。
フォルダー単位のトリガー(「フォルダーにファイルが作成されたとき」)は使いません。 公式の一覧では非推奨とされ、サブフォルダーにファイルが追加されても起動しないと書かれています。支店ごとにサブフォルダーを切る運用と相性が悪いので、ライブラリ単位のトリガーにして、支店はライブラリの列で分けます。
2つのファイルがそろってから動かします。 個別契約書と明示書は別々に置かれるので、1つ目のファイルで動いたときは、同じ受注番号のもう1つがあるかを確かめ、無ければ待ちの状態にして終えます。 2つ目が置かれたときに、改めて点検を始めます。
営業が直して置き直したときも、同じトリガーで動きます。 版の番号をファイル名ではなくライブラリの列で持ち、前の版の点検結果と並べて、直った指摘と残った指摘を示します。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 個別契約書 | 派遣先と交わす契約の Word ファイル | 契約点検ライブラリ |
| 就業条件明示書 | 派遣スタッフに渡す明示書の Word ファイル | 契約点検ライブラリ |
| 受注票の値 | 受注番号、派遣先、職種、人数、期間、就業時間、休憩、就業日、時給・請求単価、協定方式か | 派遣管理の仕組みから書き出した表 |
| 基本契約の台帳 | 派遣先ごとの時間外・休日の上限、派遣先責任者、解除の措置、福利厚生、紛争防止の措置 | 契約管理課の台帳 |
| 抵触日の一覧 | 派遣先の事業所ごとの抵触日(派遣先から通知されたもの) | 派遣管理の仕組み |
| 点検項目の表 | 項目名、根拠の条文、個別契約書と明示書のどちらに要るか、比べ方 | 契約管理課が作る表 |
質を決めるのは、いちばん下の点検項目の表です。 法の条文をそのまま AI に渡しても、何を1項目として数えるかが決まりません。「業務の内容」「責任の程度」「派遣元責任者」のように、1行1項目に分けた表を契約管理課が作り、その表の行をそのまま判定の単位にします。
抵触日の一覧は、派遣先から受けた通知を値として持ちます。 抵触日をこの構成で計算することはしません。通知された日と、明示書に書かれた日が同じかだけを比べます。
データの取得方法を決める
Power Automate で2つのファイルの中身を取り、受注番号で派遣管理の書き出しと基本契約の台帳の行を引きます。ファイルのサイズは、SharePoint コネクタが最大100MBまでとされています。 契約書のファイルでこの上限に当たることはまずありませんが、図や画像を貼った明示書は大きくなるので、上限に当たったときは人に回します。
Word からの取り出しは、Python の python-docx で行います。 Document の paragraphs は文書の段落を文書順に、tables は文書の表を文書順に返し、iter_inner_content() は段落と表を文書順に1つずつ返します。契約書は表で項目を並べることが多いので、段落と表を文書順のまま取り出し、表はセルを「見出し:値」の形の行にします。
| 取るもの | python-docx の取り方 | 何に使うか |
|---|---|---|
| 本文の段落 | iter_inner_content() の Paragraph | 条項の文、特記事項 |
| 項目の表 | iter_inner_content() の Table のセル | 業務の内容、就業時間などの項目と値 |
| 段落の順番 | 文書順の番号 | 判定の根拠の場所(location)を示す |
ここで1つ、公式に書かれている注意があります。 paragraphs には、変更履歴のマーク(<w:ins> や <w:del>)の中の段落は含まれず、tables も変更履歴のマークの中の表を含みません。営業が変更履歴を付けたまま置くと、書き足した記載が取り出しから漏れ、「記載なし」と判定されます。 変更履歴が残っていたら、点検の前に営業へ戻します。
.doc(Word 2003 以前の形式)は開けません。 古いひな形を使っている支店があれば、.docx に作り直してもらいます。
AIへ渡す前に整形する
- ファイルの組をそろえる … 受注番号と書類の種類(個別契約書/明示書)がライブラリの列に入っているかを確かめます
- 形式を確かめる …
.docx以外(.doc、PDF)は点検せず、営業へ形式の変更を頼みます - 変更履歴とコメントを確かめる … 変更履歴が残っていれば点検を止めて戻します
- 文字を取り出す … 段落と表を文書順に取り出し、表は「見出し:値」の行にします
- 値の書き方をそろえる … 時刻(「9時」「9:00」「09:00」)、日付(和暦・西暦)、全角と半角の数字を、照合のための別の欄にそろえて持ちます。AIに渡す文はそろえる前の原文のままです
- 基本契約の行を引く … 派遣先のコードで台帳の行を引きます。見つからなければ照合の一部を飛ばして
needs_reviewにします - スタッフの氏名を外す … 明示書に書かれた氏名・住所は判定に要らないので、AIに渡す前に置き換えます
5番目で、原文と照合用の値を分けて持つのが要です。 AIには原文のまま書き写させ、比べるのは照合用の値で行います。AIに「9時」を「9:00」へ直させると、書き写しと正規化が混ざり、どこで値が変わったかを追えなくなります。
AIに処理させる
させるのは、点検項目の表の1行ごとに、その書類に記載があるかを判定し、書かれている値をそのまま書き写すことだけです。
| 見るもの(例) | 判定の仕方 | 判断できないときの扱い |
|---|---|---|
| 業務の内容 | 具体的な業務の記載があるか | 「一般事務等」のように幅があれば unclear |
| 業務に伴う責任の程度 | 役職・権限の有無などの記載があるか | 欄だけで値が空なら missing |
| 就業の場所と組織単位 | 事業所の名称・所在地と、組織単位の名称があるか | 事業所だけで組織単位が無ければ missing |
| 指揮命令者 | 部署・役職・氏名の記載があるか | 部署だけなら unclear |
| 期間と就業日 | 開始日・終了日、就業する曜日や日の記載があるか | 「シフトによる」だけなら unclear |
| 時刻と休憩 | 始業・終業の時刻と休憩時間があるか | 複数の時間帯があれば値を全部写す |
| 時間外・休日の就業 | できる旨の定めと、日数や時間数の記載があるか | 「あり」だけで時間数が無ければ missing |
| 派遣元責任者・派遣先責任者 | 部署・役職・氏名・連絡先の記載があるか | 片方だけなら missing |
| 協定対象か、無期雇用等に限るか | それぞれ「限る/限らない」の記載があるか | 書かれていなければ missing |
| 抵触日(明示書) | 組織単位と事業所の2つの抵触日があるか | 片方だけなら missing |
| 労働契約の申込みのみなしの旨(明示書) | その旨の記載があるか | 書かれていなければ missing |
右端の unclear を missing と分けるのが、この構成の工夫です。 missing は書かれていない、unclear は書かれているが中身が足りないかもしれない、という意味です。前者は営業に機械的に戻せますが、後者は担当者が読んで決めます。
| させないこと | 理由 |
|---|---|
| 派遣してよい業務かの判断 | 派遣が禁止される業務かどうかは、法務と業務取扱要領に照らして人が判断する |
| 抵触日の計算 | 派遣先から通知された日を正とし、計算はしない |
| 値の比較 | 表記の違いを食い違いと誤る。比べるのはプログラム |
| 待遇が法に合っているかの判断 | 協定方式か派遣先均等・均衡方式かを含め、人が判断する |
| 書かれていない値の補完 | 受注票から埋めると、見つけたかった抜けが消える |
最後の行が、いちばん起きやすい失敗です。 受注票も一緒に渡すと、AIは「受注票によれば9時から」と書いて明示書の空欄を埋めます。そのため、受注票と基本契約はAIに渡さず、照合のプログラムだけが使います。
指示内容を固定する
あなたは派遣元の契約管理課で、書類の記載事項を点検する立場です。
渡された【書類の本文】だけを見て、【点検項目】の1行ごとに判定してください。
推測で埋めないでください。
【書類の種類】{doc_type} ※ individual_contract か employment_terms
【status の選び方】
- present ... その項目の値が書かれている
- missing ... 書かれていない。見出しや欄だけがあって値が空の場合も missing
- unclear ... 書かれているが、中身が足りない・幅がありすぎる・複数に読める
迷ったときに present を選ばないでください。
【厳守事項】
- value には、書類に書かれている文字列をそのまま写してください。
時刻や日付の書き方を直さないでください。
- 書類に無い値を書かないでください。他の書類や一般的な契約の内容から補わないでください。
- 見出しや欄の名前があることを、値があることとして扱わないでください。
- 同じ項目が複数の箇所に書かれていて値が違うときは、両方を values に並べ、
status を unclear にしてください。
- location には、根拠にした段落または表の番号を入れてください。
- 派遣してよい業務か、法令に合っているか、待遇が適切かは書かないでください。
- 抵触日を計算しないでください。書かれている日付を写すだけにしてください。
- 個人の氏名や住所は書き写さないでください([氏名] のように置き換え済みです)。
【点検項目】{check_items}
【書類の本文】{document_text}
「他の書類から補わない」を書いても、他の書類を渡せば補います。 指示で禁じるだけでなく、渡すものを1つの書類だけにするのが、この題材のいちばん効く対策です。個別契約書と明示書も、別々の呼び出しで判定します。
「見出しがあることを値として扱わない」も明記します。 ひな形には全項目の見出しが印刷されているので、何も言わなければ見出しの存在を根拠に present を選びます。
出力形式を固定する
次の形のJSONで受け取ります。 構造化出力では、すべての項目を必須にし、オブジェクトに additionalProperties: false を付けます。省略してよい値は、公式の例のとおり null との共用体型で表します。
{
"order_no": "",
"doc_type": "individual_contract | employment_terms",
"checks": [
{
"item_id": "work_hours",
"status": "present | missing | unclear",
"values": [""],
"location": "",
"note": null
}
]
}
AIが返すのはここまでです。 照合のプログラムが、2つの書類の checks と受注票・基本契約の値を並べて、次の結果を足します。
| 照合の型 | 比べるもの | 結果 |
|---|---|---|
| 書類どうし | 個別契約書と明示書の同じ item_id の値 | 一致/食い違い |
| 受注票 | 人数・期間・就業時間・休憩・就業日 | 一致/食い違い |
| 基本契約 | 時間外・休日の時間数、派遣先責任者、解除の措置 | 範囲内/超過/台帳に無し |
| 抵触日 | 明示書の2つの抵触日と、通知を受けた日 | 一致/食い違い |
1つ目の理由は、AIの書き写しと機械の比較を別の層に置けることです。 食い違いと出たときに、AIの写し間違いか、書類そのものの食い違いかを values と location から確かめられます。
2つ目は、判定を規則で決められることです。 missing か食い違いが1つでもあれば needs_fix、unclear か台帳に無しがあれば needs_review、どちらも無ければ pass とします。どの項目を必須にするかが変わっても、直すのは規則の表だけです。
3つ目は、組み合わせの数を数えられることです。 施行規則第21条第1項は、業務の内容などの組合せが2つ以上あるときは、その組合せごとの内容と人数を定めるとしています。values が複数ある項目の数から、組合せごとの人数が書かれているかを照合で確かめられます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| SharePoint の契約点検ライブラリ | Power Automate のトリガーと「ファイル コンテンツの取得」 | 2つの書類を受け取る |
| 派遣管理の仕組み | 受注票の書き出しを読む | 人数・期間・就業時間などの値 |
| 基本契約の台帳 | 読み取りのみ | 派遣先ごとの条件 |
| Python の処理 | Power Automate から呼ぶ | 文字の取り出し、正規化、照合 |
| Azure OpenAI | API呼び出し(構造化出力) | 項目ごとの判定と書き写し |
| SharePoint のリスト | 書き込み | 点検の結果と指摘の一覧 |
| Teams | 通知 | 営業と契約管理課への知らせ |
派遣管理の仕組みと書類そのものには書き込みません。 指摘を受けて書類を直すのは営業です。AIの判定から書類が自動で書き換わる経路を作ると、誰がその記載を決めたのかが分からなくなります。
営業への通知には、項目名と根拠の場所だけを書きます。 「就業条件明示書の就業時間が個別契約書と違います(明示書 表3、個別契約書 表2)」のような形です。書類の本文やスタッフの情報を Teams のメッセージに貼りません。
人が確認する
契約管理課の担当は、needs_fix と needs_review の組を開きます。 pass の組は一覧で件数と派遣先を流し見るだけにします。
needs_reviewを先に見る …unclearの項目と、台帳に無い派遣先です。読んで、戻すか通すかを担当者が決めますneeds_fixの根拠を確かめる …valuesとlocationから書類の該当箇所を開き、本当に書かれていないか、本当に値が違うかを目で確かめます- 営業へ戻す文を決める … 自動で作った指摘の一覧を、担当者が直してから戻します
- 判定を覆したら記録する … どの項目を、どちらに変えたかを残します
2番目を省かないでください。 取り出しの漏れ(変更履歴の中の記載、図の中の文字)で missing と出ることがあります。根拠の場所を見れば、書類の抜けか取り出しの漏れかはすぐに分かります。
派遣してよい業務かどうか、抵触日の計算が正しいかは、この点検の対象外です。 指摘の一覧の末尾に、「業務の適否と抵触日の計算は別の手順で確認済みか」の確認欄を置き、担当者が印を付けます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 2つの書類のどちらかが置かれない | 待ちの状態にし、1営業日たっても来なければ営業に知らせる |
.doc や PDF で置かれた | 点検せずに、.docx で置き直すよう戻す |
| 変更履歴やコメントが残っている | 点検を止めて戻す。取り出しから記載が漏れるため |
| 派遣先が基本契約の台帳に無い | 照合の基本契約の部分を飛ばし、needs_review にする |
| 紹介予定派遣の書類 | 紹介予定派遣の項目を点検項目に足して判定する |
| 組合せが複数ある(時間帯が2つなど) | 組合せごとの人数があるかを照合で確かめる |
| ファイルが100MBを超える | 取り出しをせずに人に回す |
| Azure OpenAI が応答しない | 待ちの状態に戻し、一定時間後に再実行する。通さない |
| 構造化出力で拒否が返る | 判定せずに人に回す |
上から3行目は、実際に多く起きると考えています。 派遣先との調整を変更履歴で残す営業は多く、そのまま置かれた書類は、書き足した記載だけが点検から抜けます。 点検の前に止めるのが、もっとも確実です。
記録を残す
- 点検した書類の版と、置かれた日時・置いた営業
- 取り出した文字(段落と表の番号付き)
- Azure OpenAI に渡した点検項目の表の版と、返ってきた
checks - 照合の結果と、そのとき参照した受注票・基本契約の台帳の行
- 担当者が判定を覆した記録(項目、変更前、変更後、理由)
- 営業へ戻した指摘と、直った版の点検結果
4つ目で「そのときの台帳の行」を残すのは、基本契約が更新されるためです。 時間外の上限を派遣先と見直したあとで、過去の点検が通った理由を説明できるようにします。
判定を覆した記録は、点検項目の表を直す材料になります。 同じ項目で覆す回数が多ければ、項目の切り方か、unclear の基準が実態に合っていません。
04実装レベルの3段階
最小構成では件数がさばけません。 1組ずつ貼るので、月480件には使えません。項目の表を固めるための段階です。 半自動化で、1件15分が9分程度になります。 記載の有無は自動で出ますが、書類どうしの見比べと基本契約の確認は手作業のまま残ります。本格構成で4分になり、この段階が本記事の想定です。 差が大きいのは、第4章の②と③、つまり見比べと台帳の確認が機械の照合に置き換わるからです。 段階を飛ばさないでください。 半自動化の1か月で、missing が多い項目と変更履歴で止まる支店が分かります。そこを直してから照合に進みます。
05工数削減シミュレーション
導入後 480件 × 4分 ÷ 60 = 32 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 派遣先が数百社あり、新規・更新・条件変更で個別契約書と就業条件明示書を毎月数百件作っている派遣元。書類は営業が Word のひな形から作り、契約管理や法務の担当が目で確かめてから派遣先とスタッフへ出している場合。派遣先ごとの基本契約の条件(時間外の上限、責任者、解除の措置)を台帳で持てる場合。Microsoft 365 と Azure を社内で使っている場合。
- 派遣先が少なく、個別契約書が月に数十件で、担当者が全件を丁寧に見られている場合。書類を派遣管理の仕組みが項目から機械的に作っており、手で書き換える余地が無い場合。紙と手書きで契約書を作っている場合。なお、派遣してよい業務かどうか、抵触日の計算、待遇の決め方が法に合っているかの判断は、この構成では代替できません。
07最小構成で試す方法
- 先月点検した書類の組から30組を選ぶ(うち数組は、抜けや食い違いで戻したものを入れる)
- 法第26条第1項と施行規則第22条の事項、法第34条の事項を、1行1項目の点検項目の表にする
- 個別契約書の本文を1つずつ、手元の Microsoft 365 Copilot か Azure OpenAI のプレイグラウンドに貼り、点検項目の表とあわせて「項目ごとに記載の有無を判定し、値をそのまま写してください」と指示する
- 明示書も同じように判定させる
- 2つの結果を表計算に並べ、当時の担当者の指摘と突き合わせる
30組は必ずやってください。 照合の仕組みを組む前に、「項目の表の切り方で、AIが記載の有無を正しく判定できるか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の担当者と同じ抜けが出た | 取り出しと照合の連携に進む |
見出しだけの欄を present にした | 指示の書き方で直る。構成は有効 |
| 時刻の書き方を勝手にそろえた | 書き写しの指示を強める。照合はプログラムで行う |
unclear ばかりになる | 点検項目の表の切り方が粗い。 項目を分け直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
見出しだけの欄が present になる | 指示で禁じ、欄の値が空なら missing と明記する |
| 受注票の値で空欄を埋める | 受注票を AI に渡さない。照合はプログラムだけが使う |
| 変更履歴の中の記載が取り出されない | paragraphs と tables に含まれない。点検の前に止めて戻す |
| 「9時」と「9:00」を食い違いにする | AI は書き写しだけ。正規化した値で比べる |
| 時間帯が2つある書類で人数が合わない | 組合せごとの人数を照合で確かめる |
| 基本契約の台帳が古い | 台帳の更新日を結果に出し、古ければ needs_review |
| 抵触日をAIが計算して書く | 計算を禁じ、通知された日と比べるだけにする |
| 指摘が多すぎて営業が読まない | needs_fix を項目名と場所だけの短い形で返す |
| 構造化出力のスキーマが通らない | すべての項目を必須にし、additionalProperties: false を付ける |
上の2行が、この構成の失敗のほとんどです。 どちらも「書かれていない」を「書かれている」に変えてしまう誤りです。見つけたいのは抜けなので、抜けを埋める方向の誤りがいちばん高くつきます。
3行目は気づきにくい誤りです。 根拠の場所(location)を必ず出すのは、書類の抜けと取り出しの漏れを見分けるためです。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 派遣先の名称・事業所・組織と責任者の氏名、派遣料金や時給などの取引条件、そして明示書に書かれる派遣スタッフの氏名と就業の条件です。スタッフの情報は個人情報です。
- スタッフの氏名・住所を AI に渡さない … 明示書の判定に氏名は要りません。前処理で置き換えます
- 書類と点検の結果を、営業と契約管理課の外に出さない … SharePoint のライブラリとリストの権限を、支店の営業と契約管理課に絞ります
- 派遣してよい業務か、抵触日の計算、待遇の決め方の判断を AI に置かない … いずれも法務と契約管理課が別の手順で決めます。この構成が出すのは記載の有無と値の食い違いだけです
- 書類を自動で書き換えない … 直すのは営業です。誰がどの記載を決めたかを残します
- Azure の利用の条件を先に確かめる … どのリージョンにリソースを置くか、入力のデータの扱いを、社内の情報管理の規程に照らして決めてから使います
- 点検項目の表の版を管理する … 法令が改正されたら表を直し、いつの表で点検したかを結果に残します
誤りが起きた場合のリスクは、抜けのある書類を通してしまうことと、スタッフに誤った条件を明示してしまうことの2つです。 前者は抜けを埋める方向の誤りを止めることで、後者は書類どうしの照合をプログラムで行うことで防ぎます。
10まず何から始めるか
1週目:点検項目の表を作る
法第26条第1項、施行規則第22条、法第34条の事項を、1行1項目に分けた表にします。項目ごとに、個別契約書と明示書のどちらに要るか、何と比べるかの列を付けます。
2週目:30組で試す
先月の書類から30組を選び、手元の生成AIで項目ごとに判定させます。見出しだけの欄を present にしていないか、値を勝手に書き換えていないかを最優先で見ます。
3週目:基本契約の台帳をそろえる
点検の件数の多い上位50社について、時間外・休日の上限、派遣先責任者、解除のときの措置の列を台帳にそろえます。あわせて、支店ごとのひな形の違いを洗い出します。
4週目:ライブラリから判定までをつなぐ
Power Automate で契約点検ライブラリを起点に、python-docx の取り出しと Azure OpenAI の判定を回し、結果を SharePoint のリストに書き出すところまで作ります。この時点では照合をせず、記載の有無の一覧だけを見ます。
2か月目: 値の正規化と、書類どうし・受注票の照合を足します。needs_fix と needs_review の件数を毎週数えます。3か月目以降: 基本契約と抵触日の照合、営業への通知を足し、1件15分が何分になったかを実測します。変更履歴で止まる書類と見出しだけの欄が減り、4名が同じ項目で点検できるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 法第26条第1項が派遣契約の締結に際して定める事項(業務の内容、就業の場所と組織単位、指揮命令者、期間と就業日、時刻と休憩時間、安全衛生、苦情の処理、解除のときの雇用の安定の措置、紹介予定派遣の事項、省令で定める事項)と、内容の差異に応じて人数を定めること。法第34条第1項が明示する事項(派遣をしようとする旨、第26条第1項各号の事項等、2つの抵触日)と、第3項の労働契約の申込みのみなしの旨の明示 | e-Gov 法令API: 労働者派遣事業の適正な運営の確保及び派遣労働者の保護等に関する法律 | 2026-10-13 |
| 施行規則第21条(組合せごとの内容と人数、定めた事項の書面への記載)、第22条(責任の程度、派遣元責任者と派遣先責任者、就業日以外の就業や時間の延長、福利厚生の便宜、派遣終了後の紛争防止の措置、協定対象派遣労働者に限るか否か、無期雇用派遣労働者等に限るか否か)、第26条(明示の方法) | e-Gov 法令API: 労働者派遣事業の適正な運営の確保及び派遣労働者の保護等に関する法律施行規則 | 2026-10-13 |
構造化出力でモデルが指定した JSON スキーマに従うこと。Chat Completions API は response_format、Responses API は text.format にスキーマを書くこと。すべての項目を必須にし、additionalProperties: false が必要なこと。省略可能な値は null との共用体型で表すこと | Microsoft Learn: Azure OpenAI で構造化出力を使用する方法 | 2026-10-13 |
| SharePoint コネクタの「ファイルの作成時 (プロパティのみ)」がプロパティだけを返し、中身は「ファイル コンテンツの取得」で取ること。フォルダー単位のトリガーが非推奨でサブフォルダーでは起動しないこと。ファイルサイズが最大100MBであること | Microsoft Learn: SharePoint コネクタ | 2026-10-13 |
Document の paragraphs と tables が文書順に返ること、iter_inner_content() が段落と表を文書順に返すこと。変更履歴のマークの中の段落と表が含まれないこと | python-docx: Document objects | 2026-10-13 |
Word 2007 以降の形式は開けるが、2003 以前の .doc は扱えないこと | python-docx: Working with Documents | 2026-10-13 |
派遣してよい業務か、抵触日、待遇の決め方の判断は、自社の法務と契約管理の担当が行ってください。 本記事は公開されている法令と仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1332)についてのご相談はこちらから。
