Media > AI活用ユースケース > 人事 > 社会保険労務士事務所が顧問先の36協定届の案を、上限時間・特別条項の要件・記載の抜けに照らして判定し、提出の前に指摘を返す

社会保険労務士事務所が顧問先の36協定届の案を、上限時間・特別条項の要件・記載の抜けに照らして判定し、提出の前に指摘を返す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

社会保険労務士事務所が作った顧問先の36協定届の案を、上限時間・特別条項の要件・記載の抜けに照らして1項目ずつ判定し、根拠の文言を付けた指摘一覧にします。担当の社労士は指摘を見て直し、顧問先に確認を取ってから届け出ます。

サマリー
生成AI
ChatGPT/Claude/Gemini
連携・自動化
Power Automate/Python
対象業界
その他/士業
対象部門
人事
対象業務
内容確認・チェック/書類作成
主な課題
属人化している/期限・対応漏れが起きる/確認ミスが多い
AIで行う処理
判定
主な効果
入力漏れ削減/品質標準化/工数削減
導入難易度
★★★☆☆
実装レベル
本格構成
費用感
API連携(中)
人間の確認
必須
現在工数
45h/月
AI導入後
14h/月
想定削減
69%
年間削減
372h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 担当者が、顧問先の台帳を見て、起算日が2か月以内に来る顧問先を探す
  2. 顧問先に聞き取りの表を送り、業務の種類・労働者数・時間外の見込み・過半数代表者の選び方を聞く
  3. 前年の届出を写し、聞き取りの内容で直して案を作る
  4. 社労士が案を開き、1か月・1年の時間数、特別条項の時間数と回数を上限と見比べる
  5. 臨時的な事由、健康及び福祉を確保する措置、手続の欄の書き方を読む
  6. チェックボックス、過半数代表者の選出方法、起算日、有効期間が書かれているかを見る
  7. 直す点を担当者に戻し、直った案を顧問先に送って確認と押印・署名の手配をする
  8. 顧問先から戻ったものを、所轄の労働基準監督署へ届け出る
導入後(After)
  1. 自動毎月1日に、顧問先の台帳から起算日が2か月以内に来る事業場の一覧を作り、担当者に知らせる
  2. 人担当者が聞き取りをして案を作り、「判定待ち」フォルダに保存する(これまでと同じ)
  3. 自動保存をきっかけに、Word の案を欄ごとのテキストに書き出す
  4. 自動Claude API が、欄ごとの値を原文の引用付きで取り出す
  5. 自動プログラムが、取り出した時間数と回数を上限と比べ、欄どうしの食い違いを判定する
  6. 自動Claude API が、事由・業務の種類・健康確保の措置・手続・選出方法の書き方を判定する
  7. 自動プログラムが、前年の届出との差を並べ、指摘一覧を作る
  8. 人担当の社労士が指摘一覧を見て、原文で確かめ、案を直す
  9. 人直った案を顧問先に送り、確認を取ってから届け出る
各工程の詳しい説明を読む
  1. 担当者が、顧問先の台帳を見て、起算日が2か月以内に来る顧問先を探す
  2. 顧問先に聞き取りの表を送り、業務の種類・労働者数・時間外の見込み・過半数代表者の選び方を聞く
  3. 前年の届出を写し、聞き取りの内容で直して案を作る
  4. 社労士が案を開き、1か月・1年の時間数、特別条項の時間数と回数を上限と見比べる
  5. 臨時的な事由、健康及び福祉を確保する措置、手続の欄の書き方を読む
  6. チェックボックス、過半数代表者の選出方法、起算日、有効期間が書かれているかを見る
  7. 直す点を担当者に戻し、直った案を顧問先に送って確認と押印・署名の手配をする
  8. 顧問先から戻ったものを、所轄の労働基準監督署へ届け出る

(a)数字の誤りは、欄の取り違えから生まれる。 一般条項の1か月の欄と、特別条項の「時間外労働と休日労働の合計」の欄は、似た場所に似た数字が並びます。特別条項の1か月に「時間外のみ」の数字を入れ、休日労働を足し忘れる、といった誤りは目で見落としやすい型です。

(b)事由の書き方は、人によって判断が分かれる。 「受注の集中」「納期のひっ迫」「決算業務」くらいなら通るのか、もっと具体的に書くべきか。経験の長い社労士は前年までの監督署の指摘を覚えていますが、その感覚は担当者に伝わっていません。

(c)起算日の洗い出しが、台帳を眺める作業になっている。 起算日の列を目で追い、2か月以内のものを拾います。事業場の追加や起算日の変更が台帳に反映されていないと、気づかないまま期限を過ぎます。

(d)前年の誤りが引き継がれる。 写して直す作り方なので、前年に通ってしまった書き方は、そのまま翌年も使われます。 誰も見直す機会がありません。

  1. 【自動】 毎月1日に、顧問先の台帳から起算日が2か月以内に来る事業場の一覧を作り、担当者に知らせる
  2. 【人】 担当者が聞き取りをして案を作り、「判定待ち」フォルダに保存する(これまでと同じ)
  3. 【自動】 保存をきっかけに、Word の案を欄ごとのテキストに書き出す
  4. 【自動】 Claude API が、欄ごとの値を原文の引用付きで取り出す
  5. 【自動】 プログラムが、取り出した時間数と回数を上限と比べ、欄どうしの食い違いを判定する
  6. 【自動】 Claude API が、事由・業務の種類・健康確保の措置・手続・選出方法の書き方を判定する
  7. 【自動】 プログラムが、前年の届出との差を並べ、指摘一覧を作る
  8. 【人】 担当の社労士が指摘一覧を見て、原文で確かめ、案を直す
  9. 【人】 直った案を顧問先に送り、確認を取ってから届け出る

5番目をプログラムに置いているのは、意図してのことです。 上限の比較は、値さえ取り出せれば誰がやっても同じ答えになります。AIに数字の比較をさせると、まれに「45時間以内」を「45時間未満」と読み違えます。 100時間は「未満」、720時間は「を超えない」、80時間は「を超えない」。言葉の違いは規則に書き込み、AIには任せません。

8番目で社労士が見るのは、指摘一覧の行です。 案を頭から読み直すことはしません。ただし、事由と健康確保の措置の書き方は、指摘が無くても必ず目を通します。 顧問先の事情を知っているのは担当の社労士だけだからです。

02今回想定するシステム構成

構成図
顧問先の台帳(起算日・事業場・担当者)
   │  毎月1日
   ▼
Python(連携) ── 起算日が2か月以内の事業場の一覧 → 担当者へ
   ▼
36協定届の案(Word:一般条項/特別条項)
   │  「判定待ち」フォルダに保存
   ▼
Python ── 欄ごとのテキストに書き出し(表の行・列の位置付き)
   ▼
Claude API ── ① 欄ごとの値の取り出し(原文の引用付き)
   ▼
Python ── 上限時間・回数・欄どうしの食い違いの判定(規則)
   ▼
Claude API ── ② 事由・業務の種類・健康確保の措置・手続・選出方法の判定
   ▼
Python ── 前年の届出との差、指摘一覧の作成
   ▼
【担当の社労士が確かめて直す → 顧問先の確認 → 届出】
役割想定する製品代替候補
処理Claude API(欄の値の取り出しと、書き方の判定)OpenAI API、Gemini API
連携Python(台帳の読み込み、Word の書き出し、上限の判定、前年との差)Microsoft Power Automate
保管事務所のファイルサーバー(顧問先・事業場ごとのフォルダ)事務所で使っているクラウドのファイル共有

届出の案には書き込みません。 この構成が出すのは指摘一覧までです。案を直すのは担当者で、顧問先に送る版は人が作ります。 自動で直すと、顧問先と相談して決めた時間数まで変わります。

様式は、事業の種類で分かれています。 東京労働局の36協定届のページには、一般条項の様式第9号、特別条項の様式第9号の2のほか、新技術・新商品等の研究開発業務、建設事業(災害時における復旧及び復興の事業)を含む場合、自動車運転の業務を含む場合、医業に従事する医師を含む場合の様式が並んでいます。本記事が判定の対象にするのは、様式第9号と第9号の2だけです。 ほかの様式の案は、判定せずに社労士へ回します。

AIの出力は JSON で受けます。 Claude API の構造化出力は、output_config.format に JSON スキーマを渡すと、スキーマに合った JSON を返すとされています。取り出した値をプログラムで比べるには、欄の名前と値の形が毎回同じであることが要ります。

03どうやって実装するのか

Step1

処理の起点を決める

トリガーは2つあります。 1つは毎月1日の定時実行で、顧問先の台帳から起算日が2か月以内に来る事業場を一覧にします。 もう1つは「判定待ち」フォルダへの案の保存で、保存のたびに1件ずつ判定を動かします。

起算日の一覧を先に出すのは、判定より漏れのほうが重いからです。 誤った案は直せば済みますが、起算日を過ぎても届出が無ければ、その日から協定の無い状態になります。一覧には「前月の一覧に載ったのに案がまだ無い事業場」を赤字で残します。

判定は、保存のたびに動かします。 1日1回まとめて回すと、担当者は翌日まで指摘を待つことになり、顧問先への送付が遅れます。 処理が終わった案は「判定済み」へ移し、移すのは成功したときだけにします。

Step2

入力データを集める

データ中身取得元
36協定届の案様式第9号と第9号の2(Word)。事業場の名称、業務の種類、労働者数、時間数、事由、措置、手続、選出方法「判定待ち」フォルダ
顧問先の台帳顧問先、事業場、起算日、担当者、1年単位の変形労働時間制の有無、事業の種類事務所の台帳
前年の届出の控え前年に届け出た版(Word または PDF)顧問先・事業場ごとのフォルダ
聞き取りの表業務の種類、労働者数、時間外の見込み、過半数代表者の職名と選び方顧問先から届いた表
事務所の判定の基準事由・措置・手続の書き方について、事務所として認める例と認めない例事務所で作る一覧

質を決めるのは、2行目の「1年単位の変形労働時間制の有無」と、5行目です。 対象期間が3か月を超える1年単位の変形労働時間制で働く労働者は、限度時間が1か月42時間、1年320時間になります。台帳にこの区分が無いと、プログラムは45時間と360時間で判定し、誤りを見落とします。

5行目の事務所の判定の基準は、経験の長い社労士の頭の中にあるものを書き出したものです。 「受注の集中」は事務所として認めるか、「突発的な設備の故障への対応」まで書かせるか。この一覧が無いと、AIは一般論で判定し、事務所の方針とずれます。

Step3

データの取得方法を決める

Word の案は、Python で表を順に読み、「様式・表の番号・行・列」の位置を付けたテキストに書き出します。様式第9号と第9号の2は表の組み方が決まっているので、同じ位置の欄には同じ意味の値が入ります。 位置を付けておくと、AIが取り出した値がどの欄から来たかを機械で確かめられます。

取るものどこから何に使うか
欄ごとのテキスト(位置付き)Word の書き出し値の取り出しと、原文の引用の照合
チェックボックスの状態Word の書き出し(記号の有無)月100時間未満・2〜6か月平均80時間以内の要件の確認
起算日・変形の有無・事業の種類顧問先の台帳判定に使う上限と様式の選択
前年の届出の値前年の控えの書き出し前年との差の表示
事務所の判定の基準事務所の一覧書き方の判定の物差し

チェックボックスは、記号の有無で取り出します。 様式の記載心得では、チェックボックスにチェックが無い場合には有効な協定とはならないとされています。Word ではチェックの記号が文字として入っていることもあれば、図形のこともあります。文字として取り出せなかったときは「読めない」とし、チェックが無いとはしません。

Step4

AIへ渡す前に整形する

  1. 様式の確認 … 様式第9号・第9号の2以外の様式(研究開発、建設の災害復旧、自動車運転、医師)は判定せず、社労士に回します
  2. 台帳との照合 … 事業場の名称と起算日を台帳と照らし、違えば先に担当者へ戻します
  3. 表の書き出し … 表の行・列の位置を付け、結合されたセルはその旨を残します
  4. 前年の控えの書き出し … 同じ形で書き出し、業務の種類ごとに並べられるようにします
  5. 表記の正規化 … 全角の数字、「時間」「h」「H」の書き方の揺れ、「45時間00分」のような書き方を、数値と単位に分けます
  6. 空欄の印 … 欄が空のものに印を付けます。欄が空なのか、取り出せなかったのかを分けて持ちます

5番目は、規則で行います。 AIに正規化させると、「四十五」を45にしたうえで、「1日8時間を超えて」のような説明の文の数字まで時間数として拾うことがあります。数値の形を整えるのは規則、どの数字がどの欄の値かを決めるのはAI、と分けます。

Step5

AIに処理させる

AIの仕事は2回に分かれます。 1回目は欄ごとの値の取り出し、2回目は書き方の判定です。間にプログラムの上限の判定を挟みます。

1回目:値の取り出し

取り出すもの注意すること
業務の種類ごとの労働者数、1日・1か月・1年の時間数法定労働時間を超える時間数と、所定労働時間を超える時間数を分ける
特別条項の1か月の時間数(時間外と休日労働の合計)、1年の時間数、回数「合計」の欄か「時間外のみ」の欄かを分ける
起算日、有効期間、協定の成立年月日日付として読めないものは読めないとする
割増賃金率、チェックボックスの状態記号の有無をそのまま
臨時的な事由、措置の番号と具体的内容、手続、選出方法、過半数代表者の職名原文をそのまま写す

2回目:書き方の判定

見るもの判定の物差し
臨時的に限度時間を超えて労働させることができる場合できる限り具体的か。「業務の都合上必要な場合」「業務上やむを得ない場合」のような恒常的な長時間労働を招くおそれのある書き方でないか
業務の種類業務の区分を細分化し、範囲が明確か(「全業務」「製造」だけでないか)
健康及び福祉を確保するための措置番号を選び、具体的内容が書かれているか
限度時間を超えて労働させる場合の手続「協議」「通告」など具体的な内容か
過半数代表者の選出方法投票・挙手等の方法が書かれているか。職名が管理監督者に当たりそうなものでないか

2回目の物差しは、厚生労働省の指針の資料と様式の記載心得から取ったものです。 京都労働局が載せている指針の資料では、限度時間を超えて労働させる場合をできる限り具体的に定めなければならず、「業務の都合上必要な場合」「業務上やむを得ない場合」など恒常的な長時間労働を招くおそれがあるものは認められないとされています。

させないこと理由
時間数・回数の上限の判定数字の比較は規則で行う。言葉の「未満」「を超えない」を読み違えない
時間数を何時間にすべきかの提案顧問先と社労士が決めること
協定として有効か無効かの結論最終の判断は社労士が行う
事由や措置の文案を書き換えて案に入れる直すのは担当者。AIは指摘と例示まで
過半数代表者が管理監督者かの断定職名だけでは決まらない。顧問先に確かめる点として返す

最後の行がいちばん踏み込みやすいところです。 職名が「課長」とあるだけで、管理監督者に当たるとは限りません。AIに断定させると、正しく選ばれた代表者まで疑うことになります。

Step6

指示内容を固定する

あなたは社会保険労務士事務所で、顧問先の36協定届の案を確認する担当です。
渡された位置付きのテキストだけを見て判定してください。推測で埋めないでください。

【1回目:取り出し】
- 様式第9号・第9号の2の欄ごとに、値と、その値を取った原文(quote)と位置(loc)を返してください。
- 時間数は、法定労働時間を超える時間数(legal)と、
  所定労働時間を超える時間数(scheduled)を分けてください。区別できないときは unknown。
- 特別条項の1か月の欄は、時間外労働と休日労働の合計の欄の値を返してください。
  「時間外のみ」の欄と取り違えないでください。
- 欄が空なら value を null、status を empty にしてください。
  文字はあるが値として読めないときは status を unreadable にしてください。
- 説明の文の中の数字(例:「1日8時間を超えて」)を、欄の値として返さないでください。
- 上限を超えているかどうかは判定しないでください。値を返すだけです。

【2回目:書き方の判定】
- 次の5つについて、ok / needs_fix / needs_client_check のいずれかを付けてください。
  ① 臨時的に限度時間を超えて労働させることができる場合
  ② 業務の種類
  ③ 健康及び福祉を確保するための措置(番号と具体的内容)
  ④ 限度時間を超えて労働させる場合における手続
  ⑤ 過半数代表者の選出方法と職名
- ①は、できる限り具体的か、恒常的な長時間労働を招くおそれのある書き方
  (「業務の都合上必要な場合」「業務上やむを得ない場合」など)でないかを見てください。
- 事務所の判定の基準に例があるときは、それに合わせてください。
- ⑤で、職名から管理監督者に当たるかを断定しないでください。
  疑いがあるときは needs_client_check とし、顧問先に確かめる点を書いてください。
- 時間数をいくつにすべきかを書かないでください。
- 直しの例を書くときは、案の文言を置き換える形ではなく、
  何を具体的に書けばよいかを示してください。
- reason は短く。evidence には根拠にした原文をそのまま写してください。

【顧問先の区分】{client_profile}
【事務所の判定の基準】{office_rules}
【案(位置付きのテキスト)】{draft_text}

「上限を超えているかどうかは判定しない」を1回目に書くのは、AIが親切に判定を付けてくるからです。 付けた判定とプログラムの判定が食い違うと、担当者はどちらを信じればよいか迷います。判定の出どころを1つにするため、AIからは値だけを受け取ります。

「説明の文の中の数字を返さない」も必ず書きます。 様式には「1日8時間」「1週40時間」のような説明が印刷されています。それを欄の値として拾うと、1日の延長時間が8時間になり、上限の判定が誤ります。

Step7

出力形式を固定する

1回目は次の形のJSONで受け取ります。

{
  "form": "9 | 9-2 | other",
  "establishment": "",
  "start_date": { "value": "", "quote": "", "loc": "", "status": "ok | empty | unreadable" },
  "rows": [
    {
      "job_type": "", "workers": 0, "variable_hours_1y": false,
      "day": { "legal": 0, "scheduled": 0, "quote": "", "loc": "" },
      "month": { "legal": 0, "scheduled": 0, "quote": "", "loc": "" },
      "year": { "legal": 0, "scheduled": 0, "quote": "", "loc": "" }
    }
  ],
  "special": {
    "month_total_with_holiday": 0, "year": 0, "times": 0,
    "premium_rate": "", "quote": "", "loc": ""
  },
  "checkbox": "checked | unchecked | unreadable"
}

2回目は、5つの項目ごとに status・reason・evidence・question_to_client を返します。

1つ目の理由は、規則に渡せることです。 rows と special の数字を、プログラムが次の表のとおりに判定します。

規則判定
一般条項の1か月45時間以内(1年単位の変形で対象期間が3か月を超える者は42時間以内)
一般条項の1年360時間以内(同じく320時間以内)
特別条項の1か月(時間外と休日労働の合計)100時間未満
特別条項の1年720時間以内
特別条項の回数6回以内
チェックボックスchecked でなければ指摘

2つ目は、quote と loc で原文に戻れることです。 プログラムは loc の位置のテキストに quote があるかを照合し、無ければ「引用不一致」として担当者に回します。 欄の取り違えは、ここで多くが止まります。

3つ目は、前年との差を機械で出せることです。 前年の控えも同じ形で取り出しておけば、業務の種類が増えた、特別条項の回数が変わった、が一覧で見えます。

Step8

システムへ連携する

つなぎ先方式内容
顧問先の台帳Python で読み込む起算日・変形の有無・事業の種類を引く
「判定待ち」フォルダPython がフォルダを見張る案の保存を検知する
Claude APIMessages API の呼び出し(2回)値の取り出しと、書き方の判定
顧問先・事業場ごとのフォルダファイルの保存指摘一覧と前年との差を置く
担当者への連絡事務所のメール起算日の一覧と、判定が終わった知らせ

台帳には書き込みません。 起算日の変更や事業場の追加に気づいても、直すのは担当者です。 台帳を自動で直すと、届出の控えと台帳のどちらが正しいかが分からなくなります。

顧問先への送付も、労働基準監督署への届出も、この構成から行いません。 どちらも担当の社労士の名前で行う仕事です。

Step9

人が確認する

担当の社労士が、指摘一覧の全件を見ます。 指摘の無い案も、次の2つは必ず目を通します。

  1. 規則の指摘を先に見る … 上限を超えた時間数、チェックボックスの未チェック。loc の原文で、取り出しが正しかったかを確かめます
  2. 「引用不一致」と unreadable を見る … 多くは欄の取り違えか、書き出しの失敗です
  3. 書き方の needs_fix を見て直す … 事由・業務の種類・措置・手続
  4. needs_client_check を顧問先への確認事項にまとめる … 過半数代表者の選び方と職名など
  5. 事由と措置は、指摘が無くても読む … 顧問先の事情に合っているかは、担当者にしか分かりません

直した結果は、事務所の判定の基準に戻します。 「この事由の書き方は通した」「これは直させた」を記録すると、次の月のAIの判定が事務所の方針に寄っていきます。

Step10

例外に対処する

起きること対応
様式第9号・第9号の2以外の様式判定せず社労士に回す。指摘一覧に「対象外の様式」と表示
台帳と事業場の名称・起算日が違う判定の前に担当者へ戻す
チェックボックスが読めないunreadable。未チェックとはせず、原文で確かめる
欄が結合されていて値の位置が決まらないunreadable。担当者が原文で確かめる
quote が loc の位置に無い「引用不一致」として担当者に回す
変形労働時間制の有無が台帳に無い45時間・360時間と42時間・320時間の両方で判定し、両方を表示
前年の控えが見つからない前年との差を出さずに判定する。一覧に「前年なし」と表示
起算日を過ぎても案が無い起算日の一覧で赤字にし、所長にも知らせる
API が応答しない「判定待ち」に残し、時間をおいて再実行。判定済みへ移すのは成功時だけ

6行目の「両方で判定」は、取りこぼしを防ぐための扱いです。 区分が分からないまま45時間で判定すると、変形で働く労働者の42時間を超えた値を見落とします。台帳を直すまでの間、両方の結果を担当者に見せます。

Step11

記録を残す

  • 案の版ごとのファイルと、判定した日時
  • 書き出した位置付きのテキストと、Claude API の応答の JSON の全文
  • 規則の判定の結果と、そのとき使った上限の値(45/42、360/320)
  • 使ったプロンプトの版と、事務所の判定の基準の版
  • 担当の社労士が指摘を採った・採らなかった記録と、その理由
  • 顧問先に確かめた点と、その答え
  • 届け出た版と、届出の日

5つ目の記録が、事務所の判定の基準を育てます。 採らなかった指摘の理由がたまると、AIの判定が厳しすぎる点と甘すぎる点が分かります。

顧問先の側にも残すものがあります。 労働基準法施行規則では、健康及び福祉を確保するための措置の実施状況の記録を、協定の有効期間中とその満了後5年間保存しなければならないとされています。措置の欄を判定するときに、この記録の保存を顧問先に案内する一文を指摘一覧に添えます。

04実装レベルの3段階

最小構成:案を手でAIの画面に添付し、値の表と書き方の判定を出させる / 1件ごとの取り出しと判定
半自動化:上記+Python で位置付きの書き出しと上限の規則の判定を行い、Claude API で JSON を受ける / 値の取り出し、上限の判定、書き方の判定
本格構成:上記+起算日の一覧の自動作成、フォルダへの保存で自動実行、前年との差、採否の記録 / 判定の全体と、更新の漏れの防止

最小構成では件数がさばけません。 1件ずつ添付して表を目で確かめるので、確かめるための段階です。 半自動化で、上限との見比べが指摘一覧を見る作業に変わります。 ただ、起算日の洗い出しは台帳を眺める作業のまま残り、前年との比べも手で行います。本格構成で起算日の一覧と前年との差が加わり、この段階が本記事の想定です。 段階を飛ばさないでください。 半自動化の判定を1か月見ると、取り出しを誤りやすい様式の組み方と、事務所の基準とずれやすい事由の型が分かります。そこを直してから本格構成に進むと、担当者が指摘一覧を信じて使えます。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
5 名
月間件数
60 件
1件あたり現在時間
45 分
1件あたり導入後時間
14 分
現在  60件 × 45分 ÷ 60 = 45 時間/月
導入後 60件 × 14分 ÷ 60 = 14 時間/月
月間削減時間
31h
削減率
69%
年間削減時間
372h
年間金額換算(時間単価5,000円)
186万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 顧問先が数百社あり、36協定届の作成と届出を毎月数十件受け持っている社会保険労務士事務所。顧問先ごとに起算日が違い、更新の作業が一年じゅう続いている場合。届出の案の確認を、所長や経験の長い社労士が1人で受け持っていて追いつかない場合。届出の案を Word や PDF で作っていて、顧問先の台帳に起算日と担当者を持っている場合。
向いていない
  1. 顧問先が少なく、36協定届が月に数件の事務所。顧問先の多くが自動車運転の業務・建設の災害復旧・医業に従事する医師を含み、別の様式と上限の扱いが中心になる場合。届出の案が手書きの紙で、文字として取り出せない場合。なお、協定の内容が法令に合っているかの最終の判断、顧問先への助言、時間数をどう決めるかの提案は、この構成では代替できません。

07最小構成で試す方法

  1. 前年に届け出た36協定届から20件を選ぶ(うち数件は、確認で直した点があったもの、監督署から指摘を受けたものを入れる)
  2. 20件について、当時の確認で直した点を担当者から聞き取る
  3. 案を1件ずつ PDF にして、手元のAIサービスに添付する
  4. 「この36協定届の、業務の種類ごとの1日・1か月・1年の時間数、特別条項の1か月(時間外と休日労働の合計)・1年・回数、起算日、チェックボックスの状態を、原文を引用して表にしてください。上限を超えているかは判定しないでください。次に、臨時的な事由、業務の種類、健康確保の措置、手続、選出方法の書き方を判定してください」と指示する
  5. 出てきた表の数字を、案の原文と1つずつ突き合わせる

20件は必ずやってください。 規則を書く前に、「AIが欄の値を正しく取り出せるか」を確かめます。 ここが崩れると、後ろの規則の判定は全部崩れます。

出てきた内容判断
数字の取り出しがほぼ正しく、事由の判定が当時の指摘と近い位置付きの書き出しと規則の判定に進む
特別条項の「合計」と「時間外のみ」を取り違えた欄の位置を付けた書き出しで直る。構成は有効
事由の判定が事務所の方針とずれる事務所の判定の基準を先に書き出す

3行目はよく起きます。 失敗ではなく、事務所の方針が言葉になっていなかったということです。所長と経験の長い社労士で、認める例と認めない例を10個ずつ書き出してください。

08実装時につまずきやすいポイント

問題対策
特別条項の「合計」と「時間外のみ」を取り違える位置付きの書き出しで欄を特定し、quote と loc を照合する
説明の文の「8時間」「40時間」を値として拾う指示で禁じ、印刷された説明の位置を書き出しの段階で外す
100時間「未満」と720時間「以内」を混同する上限は規則に書き、AIには判定させない
変形労働時間制の42時間・320時間を見落とす台帳に区分を持たせ、無いときは両方で判定する
チェックボックスを未チェックと誤る読めないときは unreadable とし、未チェックと分ける
事由の判定が事務所の方針とずれる事務所の判定の基準を書き出し、採否の記録で育てる
職名だけで管理監督者と断定する断定させず、顧問先に確かめる点として返す
研究開発・建設・自動車運転・医師の様式まで判定する様式を最初に見分け、対象外は社労士に回す
起算日の変更が台帳に無い案と台帳の起算日を照合し、違えば判定の前に戻す
前年の誤りが引き継がれる前年との差と、前年の版の判定を並べて見せる
AIの判定をそのまま顧問先に送る指摘一覧は事務所の中だけで使い、顧問先への連絡は社労士が書く

上の3行が、この構成の信頼を決めます。 どれも「値の取り出し」の誤りで、ここが崩れると規則の判定は正しく動いても答えが誤ります。取り出しを原文と照合する仕組みを最初から入れてください。

最後の行は、仕組みの外の取り決めです。 指摘一覧の言葉は、事務所の中で読む前提で書かれています。顧問先にそのまま送ると、「AIが無効だと言っている」と受け取られかねません。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 顧問先の事業場の名称と所在地、業務の種類ごとの労働者数、時間外労働の時間数、過半数代表者の職名と氏名、選出の方法です。個人の名前は少ないものの、顧問先の働き方の実態がまとまった情報です。

  1. 外部へ渡す範囲を決める … 過半数代表者の氏名は判定に要りません。書き出しの段階で氏名の欄を伏せ、職名と選出方法だけを渡します。 API の利用条件とデータの取り扱いは、事務所の情報管理の取り決めと照らして確かめてください
  2. この構成は協定の有効・無効を判断しない … 判定は、届出の案の記載が法令と様式の記載心得に照らして整っているかの確認までです。協定として有効かの最終の判断と、顧問先への助言は社労士が行います
  3. 過半数代表者の選び方は、顧問先に確かめる … 労働基準法施行規則では、過半数代表者は管理監督者でなく、協定をする者を選ぶことを明らかにした投票・挙手等の方法で選ばれ、使用者の意向に基づき選ばれたものでないこととされています。記載心得では、これらの要件を満たさない場合には有効な協定とはならないとされています。書類からは確かめきれない要件なので、AIの判定に頼らず顧問先に聞きます
  4. 時間数を提案しない … 何時間で協定するかは顧問先の業務量で決まります。AIに上限ぎりぎりの数字を勧めさせないようにします。指針の資料でも、時間外労働・休日労働は必要最小限にとどめることが求められています
  5. 顧問先の台帳を外部へ出さない … 起算日の一覧は Python の側で作り、台帳そのものは Claude API に渡しません

誤りが起きた場合のリスクは、上限を超えた案や要件を欠いた案を届け出てしまうことと、正しい案に誤った指摘を出して顧問先を混乱させることの2つです。 前者は規則の判定と原文との照合で減らし、後者は指摘一覧を事務所の中にとどめることで防ぎます。

10まず何から始めるか

1週目:事務所の判定の基準を書き出す

所長と経験の長い社労士で、臨時的な事由・業務の種類・健康確保の措置・手続について、事務所として認める例と認めない例を書き出します。あわせて、顧問先の台帳に変形労働時間制の有無と事業の種類の列を足します。この一覧は、AIを使わなくても新しい担当者の教育に使えます。

2週目:20件で試す

前年の届出から20件を選び、手元のAIサービスで値の取り出しと書き方の判定をさせます。数字が原文と合っているかを1つずつ突き合わせ、特別条項の「合計」の欄を取り違えないかを最優先で見ます。

3週目:起算日の一覧を作る

台帳から起算日が2か月以内の事業場を一覧にする処理を作り、毎月1日に担当者へ届くようにします。判定より先にこちらを動かすと、更新の漏れがすぐに減ります。

4週目:書き出しと規則の判定をつなぐ

Python で様式の位置付きの書き出しと上限の規則を作り、Claude API で値を取り出すところまでつなぎます。この時点では書き方の判定は出さず、数字の指摘だけを担当者が見ます。

2か月目: 書き方の判定と、quote と loc の照合を足します。採否の記録を始めます。3か月目以降: 前年との差を足し、1件45分が何分になったかを実測します。事務所の判定の基準が採否の記録で一巡し、担当者が指摘一覧だけで直せるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-12/最終更新:2026-10-13
確認した内容情報源確認日
36協定で定める事項(労働者の範囲、対象期間は1年、延長できる場合、1日・1か月・1年の時間数等)。限度時間が1か月45時間・1年360時間(対象期間が3か月を超える1年単位の変形労働時間制は42時間・320時間)であること。特別条項で1か月は休日労働を含め100時間未満、1年は720時間を超えない範囲、45時間を超える月数は1年に6か月以内であること。2〜6か月の平均80時間を超えないことe-Gov 法令API: 労働基準法 第36条2026-10-12
協定で定める省令事項(有効期間、起算日、100時間未満・80時間以内の要件を満たすこと、限度時間を超えて労働させることができる場合、健康及び福祉を確保する措置、割増賃金率、手続)。措置の実施状況の記録を有効期間中と満了後5年間保存することe-Gov 法令API: 労働基準法施行規則 第17条2026-10-12
過半数代表者が管理監督者でなく、協定をする者を選ぶことを明らかにした投票・挙手等の手続で選ばれ、使用者の意向に基づき選ばれたものでないことe-Gov 法令API: 労働基準法施行規則 第6条の22026-10-12
限度時間を超えて労働させる場合をできる限り具体的に定め、「業務の都合上必要な場合」「業務上やむを得ない場合」など恒常的な長時間労働を招くおそれがあるものは認められないこと。業務の区分を細分化すること。時間外・休日労働を必要最小限にとどめること。様式の記載心得で、チェックボックスにチェックが無い場合と過半数代表者の要件を満たさない場合は有効な協定とならないこと。手続の欄に「協議」「通告」等を書き、措置の欄に番号と具体的内容を書くこと京都労働局: 36協定で定める時間外労働及び休日労働について留意すべき事項に関する指針(PDF)2026-10-12
36協定届の様式が、一般条項(様式第9号)、特別条項(様式第9号の2)、研究開発業務、建設事業(災害時の復旧・復興)を含む場合、自動車運転の業務を含む場合、医業に従事する医師を含む場合に分かれていること東京労働局: 時間外・休日労働に関する協定届(36協定届)2026-10-12
output_config.format に JSON スキーマを渡すと、スキーマに合った JSON を返すことClaude: Structured outputs2026-10-12

協定の内容が法令に合っているかの最終の判断と、顧問先への助言は、担当の社会保険労務士が行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1284)についてのご相談はこちらから。

AI活用について相談する
目次