取引先ごとの支払サイトと回収サイトの実態を毎月測って、運転資金への影響を出す
取引先ごとの契約書から支払条件を読み取り、会計システムの入出金の日付から実際の日数を出して、契約と実際の差を毎月一覧にします。差が大きい取引先と、その根拠になった条文を並べます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/n8n/Python/Zapier
- 対象業界
- その他/不動産/商社/建設/製造
- 対象部門
- 経理/財務
- 対象業務
- 比較検討/集計・分析
- 主な課題
- データ分析に時間がかかる/判断に時間がかかる/属人化している
- AIで行う処理
- 予測
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 月次の消込が終わったあと、会計システムから売掛・買掛の入出金明細を出す
- 主要取引先120社分を選び、表計算ソフトに貼る
- 取引先ごとに、共有フォルダから契約書のPDFを探す
- 支払条件の条項を読み、締め日・支払日・起算点・手形の有無を表に書き写す
- 締め日と入金日(支払日)から、実際に何日かかったかを数える
- 契約上の日数と比べ、差が大きい先を書き出す
- 差の大きい先を一覧にして財務責任者へ渡す
- 自動月次の消込が終わったことを確かめ、ワークフローが動き出す
- 自動会計システムから入出金明細・請求の記録・消込の結果を取得する
- 自動一部入金・相殺・返品・値引き・前受/前払に当たる取引に印を付け、測定から外す
- 自動取引先ごとに契約書一式を集め、覚書を含めて新しい順に並べる
- 自動契約書から支払条件を読み取り、条番号と原文を添えて返す
- 自動読み取れなかった項目のある取引先を `needs_review` として分ける
- 自動契約上の支払期日を暦から求め、実際に現金になった日との差を計算する
- 自動取引先ごとに金額で重みづけした平均日数を出し、差の大きい順に並べる
- 自動前提を添えて、運転資金への影響を概算する
- 人担当者が `needs_review` と、差の大きい上位の取引先だけを確認する
- 人一覧を確定し、財務責任者・営業・購買へ渡す
各工程の詳しい説明を読む
- 月次の消込が終わったあと、会計システムから売掛・買掛の入出金明細を出す
- 主要取引先120社分を選び、表計算ソフトに貼る
- 取引先ごとに、共有フォルダから契約書のPDFを探す
- 支払条件の条項を読み、締め日・支払日・起算点・手形の有無を表に書き写す
- 締め日と入金日(支払日)から、実際に何日かかったかを数える
- 契約上の日数と比べ、差が大きい先を書き出す
- 差の大きい先を一覧にして財務責任者へ渡す
(a)契約書が1か所にまとまっていない。 基本取引契約書は見つかっても、条件を書き換えた覚書が別のフォルダにあることがあります。古い条件のまま比べれば、差は出ているのに気づけません。 3番と4番に時間がかかるのは、読むのが大変だからではなく、どれを読むかを決めるのが大変だからです。
(b)実績の起点がそろわない。 締め日、請求書の発行日、入金日、消込日と、使える日付が4つあります。担当者によってどれを起点にするかが違い、先月と今月で数え方が変わることさえあります。 差の数字だけ見ても、比べられません。
(c)一部入金・相殺・返品・値引きが混ざると日数が歪む。 1件の請求に2回に分けて入金があれば、どちらを入金日とするかで日数が変わります。相殺で消えた請求は、そもそも入金日がありません。除かないまま平均すると、実態と違う日数が出ます。
(d)毎月やると決めても、忙しい月から落ちる。 120社を2名で見ると月22.0時間で、決算や月次の締めと重なります。そして、やり方が担当者の頭の中にしかありません。 引き継いだ人が同じ数字を出せず、比べること自体が止まります。
- 【自動】 月次の消込が終わったことを確かめ、ワークフローが動き出す
- 【自動】 会計システムから入出金明細・請求の記録・消込の結果を取得する
- 【自動】 一部入金・相殺・返品・値引き・前受/前払に当たる取引に印を付け、測定から外す
- 【自動】 取引先ごとに契約書一式を集め、覚書を含めて新しい順に並べる
- 【自動】 契約書から支払条件を読み取り、条番号と原文を添えて返す
- 【自動】 読み取れなかった項目のある取引先を
needs_reviewとして分ける - 【自動】 契約上の支払期日を暦から求め、実際に現金になった日との差を計算する
- 【自動】 取引先ごとに金額で重みづけした平均日数を出し、差の大きい順に並べる
- 【自動】 前提を添えて、運転資金への影響を概算する
- 【人】 担当者が
needs_reviewと、差の大きい上位の取引先だけを確認する - 【人】 一覧を確定し、財務責任者・営業・購買へ渡す
5番と7番を分けているのが、この設計の要です。 契約書から条件を読むのはAI、日数を数えるのは機械です。AIに日数を計算させません。 「月末締め翌月末払いだから30日」という計算を文章の中でさせると、月の長さや休日の扱いが月ごとに変わり、どこで間違えたのかを追えなくなります。
10番で人が見るのは全件ではありません。 差が小さいものは一覧を流し見て終わりで、読み取れなかったものと、差が大きいものだけに時間を使います。
02今回想定するシステム構成
月次の消込の完了 ▼【トリガー】月次のスケジュール + 消込完了の確認 Make ├──▶ 会計システム ──── 入出金明細・請求の記録・消込の結果 ├──▶ 取引先マスタ ──── 取引先コード・支払手段の登録値 └──▶ 契約書フォルダ ── 該当取引先の契約書一式(覚書を含む) ▼ Gemini API ── 契約書から支払条件を読み取る(条番号と原文を添える) │ ① 締め日 ② 支払日 ③ 起算点 ④ サイトの表記 │ ⑤ 支払手段(手形・でんさい)とその期間 ⑥ 条件の適用範囲 ▼ Python ── 日数の計算と差の集計(AIは計算しない) ├── 除外(一部入金・相殺・返品・値引き・前受/前払) ├── 契約上の支払期日を暦から求める ├── 取引先ごとの加重平均(金額で重みづけ) └── 運転資金への影響の概算(前提つき) ▼ 判定(ok / gap / needs_review) ▼ 【人が gap と needs_review だけ確認】 └──▶ 差の大きい取引先の一覧と根拠 → 財務責任者・営業・購買へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Gemini API | Claude API、OpenAI API |
| 集計 | Python | Google Apps Script |
| 連携 | Make | Zapier、n8n |
会計システムと販売管理システムは新しく足すものではありません。 どちらからも読むだけで、書き込みはしません。この構成が作るのは一覧であって、システムの中の値ではありません。
契約書の読み取りを Gemini API に置くのは、PDFをそのまま渡せるためです。 文書理解ではTXTやMarkdownなども受け付けますが、図表やレイアウトを持つ文書として意味を持って理解されるのはPDFだけとされています。契約書は表と条文が混ざるので、この差が効きます。
上限は50MBまたは1000ページです。 1ページは258トークンに相当し、大きいページは縦横3072ピクセルを上限として縮小、小さいページは768×768ピクセルまで拡大されます。複数のPDFをまとめて渡すこともできます。 合計がコンテキストの範囲に収まり全体で1000ページまでなら、基本取引契約書と覚書を一度に入れられます。版の前後を機械で決めきれないときに効きます。
集計を Python に置くのは、日数の計算をAIの外に出すためです。 締め日から支払期日を求める処理、休日の繰り上げ・繰り下げ、除外の仕分け、金額による重みづけは、どれも同じ入力から必ず同じ答えが出なければ困るものです。
03どうやって実装するのか
処理の起点を決める
月次の消込が終わったことを起点にします。 日付だけで動かすと、消込が遅れた月に未確定のデータを測ることになり、そのときだけ日数が実態より長く出ます。
Make では、シナリオの実行間隔を Schedule settings で決めます。既定は15分ごとで、そこから8つの型を選べます。At regular intervals(一定の間隔)/Once(1回だけ)/Daily(毎日、1日に複数回も可)/Weekdays(平日のみ)/Weekly(曜日指定)/Monthly(日付指定)/Specified dates(日時を指定)/On demand(手動またはAPIからの起動のみ)です。
この構成では Monthly で月初の数日を指定し、消込の完了を確かめる分岐を先頭に置きます。未完了なら何もせずに終わります。 完了日が月によって大きくずれる会社では、On demand にして経理が手で起動するほうが確実です。Show advanced settings の Start と End で、動く期間を区切れます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 契約書一式 | 基本取引契約書、注文請書、覚書(PDF) | 契約書の保管フォルダ |
| 入出金の明細 | 取引先コード、請求番号、金額、入金日/支払日 | 会計システム |
| 請求・発注の記録 | 締め日、請求書の発行日、検収日/受領日 | 販売管理システム |
| 消込の結果 | 入金と請求の対応、消込日、残額 | 会計システム |
| 取引先マスタ | 取引先コード、名称、締め日の登録値、支払手段 | 取引先マスタ |
質を決めるのは、上から4番目の消込の結果です。 これが無いと、1件の請求に対する入金が1回だったのか2回だったのかが分かりません。一部入金を全額入金として数えると、日数は実態より短く出ます。
取引先マスタの締め日の登録値は、答えではなく照合の相手です。 契約書と食い違ったとき、どちらが正しいかは人が確かめます。
データの取得方法を決める
契約書は保管フォルダから取り、Gemini API に渡します。小さい文書はそのまま埋め込み、大きい文書は Files API を使うと、待ち時間が短くなり通信量も減るとされています。 実績の側は会計システムからCSVまたはAPIで取ります。取るのは金額と、4つの日付です。
| 日付 | 何のために取るか |
|---|---|
| 締め日 | 実績の起点。契約で決まっており、自社の事務の都合で動かない |
| 請求書の発行日 | 起点には使わない。発行が遅れた月を、取引先の遅れとして数えないため |
| 入金日/支払日 | 銀行口座に入った日、出た日 |
| 消込日 | 対応関係と一部入金の検出に使う。自社の作業日なので実績にはしない |
起点を締め日に決めるのが、この構成でいちばん重い設計判断です。 請求書の発行日を起点にすると自社の請求業務の遅れまで取引先の遅れに見え、消込日を終点にすると経理が忙しかった月だけ日数が伸びます。
手形やでんさいで受け取っている先は、終点を「現金になった日」にします。 振り出された日で数えると資金の話として合いません。手形の期間の分だけ、運転資金は余計に必要になっています。
AIへ渡す前に整形する
- 契約の版をそろえる … 取引先ごとに契約書を締結日の新しい順に並べ、一式をまとめて渡します
- 取引先コードで名寄せする … 契約書は取引先名、会計システムは取引先コードで並んでいます。支店名や旧社名の違いで別の取引先になりやすいので、名寄せの一覧を持ちます
- 除外する取引に印を付ける … 一部入金、相殺、返品、値引き、前受/前払を測定から外します
- ページ数とサイズを確かめる … 50MBまたは1000ページが上限です。超える取引先は、条項のあるページだけに絞って渡します
- 条項を探しやすくする … 質問を他の情報のあとに置くと性能が上がるとされています。契約書を先、指示を後ろにします
- 金額の符号をそろえる … 売掛と買掛で符号が逆になるので、集計の前に向きをそろえます
3番目を省かないでください。 一部入金があった請求を全額入金として数えると、入金が早い取引先に見えます。 相殺で消えた請求は入金日を持たず、残せば空欄のまま平均に入ります。
AIに処理させる
させるのは、支払条件の6項目を読み取り、条番号と原文を添えることだけです。
| 読み取るもの | 例 | 読み取れないときの扱い |
|---|---|---|
| 締め日 | 毎月末日、毎月20日 | not_stated |
| 支払日 | 翌月末日、翌々月10日 | not_stated |
| 起算点 | 締め日、検収日、受領日、請求書到達日 | 書かれていなければ推測せず not_stated |
| サイトの表記 | 「月末締め翌月末払い」という文言そのもの | 表記が無ければ空欄 |
| 支払手段とその期間 | 銀行振込、手形(期間の記載)、でんさい | unknown |
| 条件の適用範囲 | 取引の区分で条件が分かれる場合の区分 | 分かれていなければ「全取引」 |
右端の列が要です。 起算点が書かれていない契約書は珍しくありません。「たぶん締め日だろう」と埋めさせると、差の数字が静かに間違います。 読み取れない項目が1つでもあれば、その取引先は needs_review として人に回します。
| させないこと | 理由 |
|---|---|
| 日数の計算 | 月の長さと休日の扱いで答えが変わる。 暦はコードで扱う |
| 差が大きいかどうかの評価 | どこからを大きいとするかは自社の取り決め。規則の側に置く |
| 書かれていない条件の補完 | 慣行で埋めると、契約と実際の差という前提が崩れる |
| 取引先の格付け・順位づけ | 集計の結果であって、契約書から読めるものではない |
| 交渉すべきかどうかの示唆 | 取引先との力関係を含む判断。営業・購買・経営が決める |
いちばん起きやすいのは1行目です。 「翌月末払いなので約30日です」と書かれると、もっともらしいので通ります。しかし2月は28日で、末日が休日なら支払は翌営業日です。 原文と条番号だけを返させれば、計算はコードの中で完結します。
指示内容を固定する
あなたは財務部門で、取引先との契約書から支払条件を読み取る立場です。
渡された契約書に書かれていることだけを読み取ってください。
【読み取る6項目】
1. 締め日
2. 支払日
3. 起算点(何の日から数えるか)
4. サイトの表記(「月末締め翌月末払い」などの文言そのもの)
5. 支払手段(銀行振込/手形/でんさい)とその期間の記載
6. 条件の適用範囲(取引の区分で条件が分かれている場合の区分)
【status の選び方】
- found ....... 条文に明記されている
- not_stated .. 書かれていない
- ambiguous ... 複数の条文が別の条件を書いており、1つに決められない
迷ったときに found を選ばないでください。
【厳守事項】
- 日数を計算しないでください。「翌月末払いなので30日」のような
換算をしないでください。日数は別の仕組みが暦から求めます。
- 書かれていない項目は not_stated にしてください。業界の慣行や
他の項目から補って埋めないでください。特に起算点は推測しないでください。
- すべての項目に article(条番号)と quote(原文の該当部分)を
そのまま写してください。要約しないでください。
- 覚書や変更合意で書き換えられている項目は、新しいほうを value に入れ、
supersedes に書き換えられた側の条番号と締結日を入れてください。
どちらが新しいか決められない場合は ambiguous にしてください。
- 差が大きいか、条件が不利か、交渉すべきかを書かないでください。
- 支払条件の定めが見当たらない場合は、項目を作らず
review_reason にその旨を書いてください。
【契約書】{contract_documents}
【この取引先の区分】{partner_side}
上の契約書について、6項目を読み取ってください。
「日数を計算しないでください」を最初に置いているのは、放っておくと必ず計算するからです。 支払条件を読めと言われれば、日数に直すのが自然な答え方です。禁じるのは、換算という行為そのものです。
契約書を先に、指示を後ろに置いています。 長い文脈では質問を他の情報のあとに置くほうが性能が上がるとされているためで、最後の1行はそのために置いています。
出力形式を固定する
次の形のJSONで受け取ります。
{
"partner_code": "",
"partner_name": "",
"side": "receivable | payable",
"contract_documents": [
{ "title": "", "executed_on": "" }
],
"terms": [
{ "item": "closing_day",
"value": "",
"status": "found | not_stated | ambiguous",
"article": "",
"quote": "",
"supersedes": [] }
],
"payment_method": {
"type": "bank_transfer | promissory_note | densai | unknown",
"period_text": "",
"status": "found | not_stated | ambiguous",
"article": "",
"quote": ""
},
"scope": "",
"review_reason": ""
}
terms にはこの形の要素を4つ並べます。item は closing_day / payment_day / start_point / site_text です。日数の欄がどこにもないことが、この形のいちばんの特徴です。
Gemini API の構造化出力では、response_format に text 型のオブジェクトを指定し、その mime_type を application/json として、schema にJSONスキーマを書きます。enum を使えば status の値を3つに限定でき、required で欄の欠けを防げます。 ただし、非常に大きい、あるいは深く入れ子になったスキーマは拒否されることがあるとされています。構文として正しいJSONが返る一方、中身の妥当性は自分で検証する必要があります。 スキーマを上の1階層分に留め、status と article と quote がそろっているかを Python 側でもう一度確かめます。
article と quote を必ず持たせるのは、確認を速くするためです。契約書のPDFを開かなくても、どの条を根拠にしたかが読めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 会計システム | CSV出力またはAPI | 入出金明細・消込の結果(書き込みなし) |
| 販売管理システム | CSV出力またはAPI | 締め日・請求書の発行日・検収日 |
| 契約書フォルダ | Make のファイル取得 | 取引先ごとの契約書一式 |
| Gemini API | API呼び出し | 支払条件の読み取り |
| Python | Make から実行 | 日数の計算、除外、加重平均、概算 |
| 一覧の置き場 | スプレッドシート | 取引先ごとの結果と根拠 |
取引先マスタへ書き戻しません。 登録値が契約書と違っていたときに自動で直すと、「ずれていた」という発見そのものが記録に残りません。
Python が出すのは取引先ごとに1行の集計です。契約上の日数、実際の日数(加重平均)、その差、対象件数、除外件数、根拠の条番号を並べます。この1行が、人が読む単位です。
人が確認する
人が開くのは needs_review と gap のものだけです。 ok のものは一覧で社数と差の分布を流し見ます。全件の根拠を読む設計では、第10章の8.0時間に収まりません。
needs_reviewを先に見る … 起算点が書かれていない、覚書の前後が決まらない、契約書が見つからない。多くは保管の問題ですgapの根拠を確かめる …articleとquoteを読み、契約上の日数が正しく求められているかを見ます。おかしければ、条文の読み取りか暦の扱いのどちらかです- 除外した取引を確かめる … 除外が多い取引先は、平均が少ない件数で作られています。対象の半分を切っていたら、その数字は使いません
- 一覧を確定して渡す … 財務責任者・営業・購買へ渡します。条件を変える交渉をするかどうかは、渡した先が決めます
4番目の線を越えないでください。 この構成が出すのは、差が何日あるかと、その根拠になった条文までで、「この取引先と交渉すべき」とは書きません。 条件は力関係で決まっており、差が大きいこと自体は、交渉が通ることを意味しません。
目標は、120件をならして1件4分です。 開くのは2割前後という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 契約書が見つからない | needs_review。注文請書や発注書の条件で代えられるかを人が判断 |
| 覚書の前後が決められない | ambiguous。締結日が読めないものは人が版を決める |
| 起算点が書かれていない | not_stated。推測で埋めず、取引先への確認事項として残す |
| ページ数・サイズが上限を超える | 50MBまたは1000ページが上限。条項のあるページに絞って渡す |
| スキーマが拒否される | 深い入れ子を避ける。terms を平らな配列に保つ |
| 一部入金が続く取引先 | 除外が半数を超えたら日数を出さず、「測れない」と明示する |
| 相殺で入金日が無い | 除外する。相殺の件数だけを別に数える |
| 手形・でんさいの期間が読めない | unknown。現金になった日が取れるかを会計システムで確かめる |
| 消込が終わっていない月 | 何もせずに終了し、次の起動を待つ |
| 取引先コードが結びつかない | 名寄せの一覧に追加する。推測で結びつけない |
上から3行が全体の大半を占めます。 どれも契約書の保管と記載の問題で、判定の精度を上げても減りません。 初月は needs_review が3割を超えることも想定しておきます。
記録を残す
- 読み取りに使った契約書のファイル名と締結日、版を決めた根拠
- AIが返したJSONの全文(
terms、payment_method、article、quote) - 除外した取引の一覧と、除外の理由の区分(一部入金/相殺/返品/値引き/前受・前払)
- 契約上の日数と実際の日数の計算に使った日付の組み合わせ
- 人が判定を覆した記録 … どの取引先の、どの項目を、何に変えたか
- 運転資金の概算に使った前提の値と、その月の対象取引額
3つ目を軽く見ないでください。 除外の理由が残っていないと、翌月に日数が動いたときに、取引先が変わったのか除外の仕方が変わったのかが分かりません。
最後の行は、概算をやり直すために要ります。 前提を変えたときに過去の月も引き直せなければ、時系列で並べても意味がありません。
04実装レベルの3段階
半自動化を推します。 120件という規模では、起動が手動でも手間はほとんど変わりません。除外の仕方と起点の決め方が固まらないうちに全部を自動にすると、出てきた数字を誰も信じられなくなります。 半自動化で1件11分が4分程度になります。 読み取りと計算が自動になり、人は読み取れなかった先と差の大きい先だけを見ます。本格構成に進んでも、この4分はあまり減りません。 減るのは起動と取得の手間で、それは件数ではなく月1回にかかる時間だからです。 本格構成に進む合図は、needs_review が1割を切ったときです。 契約書の保管が整ってから自動にしてください。順番を逆にすると、毎月3割の取引先について人が同じ作業を繰り返します。
05工数削減シミュレーション
導入後 120件 × 4分 ÷ 60 = 8 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 主要取引先が数十社から百数十社あり、基本取引契約書と覚書が取引先ごとにばらばらな建設業・商社・製造業・不動産業。会計システムには入出金の事実があるのに、契約上の支払条件はどこにも構造化されて入っていない場合。資金繰りが苦しくなった理由を経営に説明できず、「なんとなく入金が遅い」で毎月終わっている場合。契約書がPDFで保管されており、取引先コードと結びつけられる場合。
- 取引先が数社で、支払条件が全社同じ場合。販売管理システムの取引先マスタに支払条件が登録済みで、実績との突合がすでに自動化されている場合。契約書が紙でしか残っておらず、まず電子化から始める必要がある場合は、この構成より先に保管の整理が要ります。なお、条件を変える交渉をしてよいか、支払を遅らせてよいかという法令上の判断は、この構成では代替できません。
07最小構成で試す方法
- 金額の大きい取引先20社を選ぶ(売掛から12社、買掛から8社)
- その20社について、契約書のPDFと、直近6か月の入出金明細を用意する
- 契約書を1社ずつ手元のAIサービスに貼り付け、「この契約書に書かれた締め日、支払日、起算点、サイトの表記、支払手段を、条番号と原文を添えて書き出してください。日数の計算はしないでください。書かれていない項目は『記載なし』としてください」と指示する
- 出てきた条件を表計算ソフトに写し、締め日から実際の入金日までの日数を表計算の数式で計算する
- 契約上の支払期日との差を出し、大きい順に並べる
20社は必ずやってください。 ワークフローを組む前に、「契約書から条件が読み取れるのか」と「実績の日付がそろうのか」を別々に確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 20社中15社以上で6項目が読み取れた | 自動化に進んでよい。 残りは保管の整理 |
| 起算点が書かれていない契約書が多い | AIの問題ではない。取引先との確認が先 |
| 条件は読めたが、実績の日付が欠けている | 会計システム側の整備が先。 読み取りは後でよい |
3行目が出たら、順番を入れ替えてください。 契約の側が読めても、実績の側の日付がそろわなければ差は出せません。この構成は2つの側がそろって初めて意味を持ちます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが日数を計算して返す | プロンプトの最初で禁じ、出力形式に日数の欄を置かない |
| 起算点が書かれていない契約書 | 推測で埋めず not_stated。取引先への確認事項として残す |
| 覚書で条件が書き換えられている | 契約書一式をまとめて渡し、supersedes に書き換えられた側を残す |
| 実績の起点が月によって変わる | 締め日に固定する。 請求書の発行日と消込日は起点にしない |
| 一部入金で日数が短く出る | 消込の結果で検出して除外。除外件数を必ず一覧に載せる |
| 相殺・返品・値引きが混ざる | 同じく除外。除外が半数を超えたら日数を出さない |
| 手形を振出日で数えてしまう | 現金になった日を終点にする。 手形の期間の分が資金に効く |
| 平均が少数の大口に引きずられる | 金額で重みづけした平均と、件数の単純平均を両方出す |
| 取引先コードが結びつかない | 支店名・旧社名を名寄せの一覧に入れる。推測で結びつけない |
| スキーマが拒否される | 深い入れ子を避ける。 大きい、深いスキーマは拒否されることがある |
| 概算が独り歩きする | 前提の4項目を一覧と同じ紙に載せる。数字だけを切り出さない |
| 交渉の示唆まで書いてしまう | 出すのは差と根拠まで。 どうするかは営業・購買・経営が決める |
上の2行が、この構成の失敗のほとんどです。 どちらも「もっともらしい答えが返る」ことが原因で、間違いに気づきにくい型です。 出力形式に日数の欄を作らないという一点で、1行目は構造的に防げます。
下の2行も、同じくらい早く効きます。 概算の数字は前提から切り離されて社内を回りやすく、前提を書いた紙と一緒に配らないと、いつのまにか確定値として扱われます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 取引先との契約書の本文、取引先ごとの取引額と入出金の日付、そして契約書に書かれている単価・数量・取引条件です。契約書は営業秘密そのもので、第三者に渡さない旨の条項が契約書自身にあることも珍しくありません。
- 有料での利用を前提にする … Gemini API の利用規約では、無償のサービスについて「機微情報、秘密情報、個人情報を送信しないでください」とされ、送信内容が製品や機械学習技術の提供・改善・開発に使われ、人手による確認の対象になり得るとされています。有料では製品の改善には使わないとされています。契約書を扱う以上、無償の枠では動かさないでください
- 渡すのは支払条件の条項に絞る … 単価表や仕様の別紙まで渡す必要はありません。条項のあるページに絞るほうが、費用の面でも情報の面でも安全です
- 取引先マスタと取引額の一覧を丸ごと渡さない … 主要取引先120社の取引額がまとまった表は、それ自体が経営情報です。 集計は Python 側で行い、AIには渡しません
- 条件を変える判断を、この構成に含めない … 出すのは差と根拠までです。支払条件は取引先との力関係で決まっており、一覧の数字だけで動かせるものではありません
- 支払を遅らせる方向の示唆を書かない … 取引の内容によっては下請取引に当たり、物品等を受領した日から起算して60日以内に定めた支払期日までに代金を全額支払うことが求められ、支払遅延は禁止行為とされています。 この構成は法令上の判断をしません。該当し得るかどうかは法務と相談してください(法令上の点検そのものは UC-0109 の扱いです)
- 概算の数字の配り方を決める … 運転資金への影響は前提つきの概算です。前提を外した数字が金融機関への説明や社内の目標に転用されないよう、出す相手と出し方を先に決めます
誤りが起きた場合のリスクは、差が無い取引先を「遅れている」と名指しすることと、差を見落として資金不足の理由が分からないままになることの2つです。 前者は読み取りを推測で埋めると起き、後者は除外の仕方が粗いと起きます。どちらも article と quote、そして除外の記録で追えるようにします。
10まず何から始めるか
1週目:契約書の保管を確かめる
金額の大きい上位20社について、契約書の最新の版が見つかるかだけを確かめます。 覚書を含めてそろっている社数を数えてください。この数が、この構成の上限になります。 半分も見つからなければ、AIより先に保管の整理です。
2週目:20社で読み取りを試す
契約書を手元のAIサービスに貼り、6項目を条番号と原文つきで読み取らせます。日数を計算していないか、起算点を推測で埋めていないかを最優先で見ます。
3週目:実績の側の起点を決める
締め日を起点、現金になった日を終点とし、一部入金・相殺・返品・値引き・前受/前払をどう除外するかを財務と経理で文章にします。 ここが決まらないうちに集計を組むと、毎月数え方が変わります。
4週目:20社分の差を出してみる
契約上の日数と実際の日数の差を、直近6か月分について出します。この時点では運転資金の概算をしません。 差の数字そのものが納得できるかだけを見てください。
2か月目: 120社に広げ、needs_review の社数を毎月数えます。3か月目以降: 前提を添えた概算を足し、財務責任者・営業・購買へ渡す形を決めます。needs_review が1割を切り、除外の理由が毎月同じ区分で記録されるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
構造化出力の設定(response_format/mime_type/schema)、enum と required、大きい・深く入れ子のスキーマは拒否され得ること | Google: Structured output | 2026-09-28 |
| 対象が実質PDFであること、上限が50MBまたは1000ページ、1ページ258トークン、3072×3072まで縮小・768×768まで拡大、複数文書をまとめて渡せること | Google: Document understanding | 2026-09-28 |
| 長い文脈では質問を他の情報のあとに置くほうが性能が上がるとされること | Google: Long context | 2026-09-28 |
| 無償では機微・秘密・個人情報を送信しないよう求められ、送信内容が製品の改善に使われ人手による確認の対象になり得ること。有料では改善に使わないとされること | Google: Gemini API Additional Terms of Service | 2026-09-28 |
| 実行間隔を Schedule settings で決めること、既定が15分ごと、8つの型(At regular intervals/Once/Daily/Weekdays/Weekly/Monthly/Specified dates/On demand)、Start と End の指定 | Make: Schedule a scenario | 2026-09-28 |
| 取適法で支払遅延が禁止行為とされ、物品等を受領した日から起算して60日以内に定めた支払期日までに全額支払うことが求められること | 公正取引委員会: 委託事業者の禁止行為 | 2026-09-28 |
条件を変える交渉をしてよいか、支払を遅らせてよいかの判断は、法務と、営業・購買・経営で決めてください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数と運転資金の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0268)についてのご相談はこちらから。
