仕入先から届く見積の内訳を、材料の市況・過去の見積・加工時間の目安に照らして点検し、根拠の確認が要る費目と価格交渉の論点を出す
仕入先から届いた見積の内訳を、材料の単価表・同じ品番の過去の見積・工程ごとの加工時間の目安と並べ、費目ごとに差を出します。差のある費目について、根拠を聞くべきか、前提が違うだけかをAIが判定し、仕入先と話し合う論点の一覧にします。
- 生成AI
- Azure OpenAI Service/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Python
- 対象業界
- 商社/建設/製造
- 対象部門
- 購買
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/属人化解消/工数削減
- 導入難易度
- ★★★★☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 仕入先から見積内訳書がメールで届き、担当者が品番のフォルダに保存する
- 同じ品番の過去の見積を探して開き、材料・加工・管理費・利益を横に並べる
- 材料の単価表を開き、見積の材質のkg単価と並べる。重量×kg単価を電卓で検算する
- 加工の工程ごとに、時間×チャージを検算し、生産技術課の目安の時間と並べる
- 管理費と利益の率を出し、その仕入先の過去の率と比べる
- 差の大きい費目について、仕様・ロット・材質の変更が無いかを図面と依頼書で確かめる
- 根拠を聞く費目と交渉の論点をメモにまとめ、仕入先への照会メールを書く
- 人届いた見積内訳書を、品番のフォルダではなく「見積受付」ライブラリに保存する
- 自動ファイルの保存をきっかけにフローが動き、内訳の表を読み出す
- 自動品番で過去の見積を、材質で材料の単価表を、工程で加工時間の目安を引く
- 自動スクリプトが検算と差の計算をする(重量×kg単価、時間×チャージ、率、前回比)
- 自動仕様・ロット・材質が前回と変わっているかを、依頼書の項目から機械的に比べる
- 自動AIが費目ごとに、差の意味を判定し、論点を質問の形で書く
- 自動判定の組み合わせから、確認の重さ(軽い確認/論点あり/人の判断が要る)を規則で決める
- 人担当者が点検結果を開き、論点を取捨して照会文を直す
- 人照会文を仕入先へ送る。回答と交渉の経過を記録に残す
各工程の詳しい説明を読む
- 仕入先から見積内訳書がメールで届き、担当者が品番のフォルダに保存する
- 同じ品番の過去の見積を探して開き、材料・加工・管理費・利益を横に並べる
- 材料の単価表を開き、見積の材質のkg単価と並べる。重量×kg単価を電卓で検算する
- 加工の工程ごとに、時間×チャージを検算し、生産技術課の目安の時間と並べる
- 管理費と利益の率を出し、その仕入先の過去の率と比べる
- 差の大きい費目について、仕様・ロット・材質の変更が無いかを図面と依頼書で確かめる
- 根拠を聞く費目と交渉の論点をメモにまとめ、仕入先への照会メールを書く
(a)時間の大半は、並べることと検算に使われる。 3つのファイルから数字を拾って並べ、掛け算を確かめる作業が、1件の半分以上を占めます。月末に依頼が重なると、6番目と7番目が省かれ、総額だけを見て発注に進みます。
(b)「高い」と「前提が違う」が混ざる。 過去の見積と並べて差が出たとき、ロットや材質が変わっていないかを確かめずに値下げを頼むと、仕入先から「前回は100個でしたので」と返され、交渉が振り出しに戻ります。 確かめる手間を惜しむほど、往復が増えます。
(c)論点が担当者の経験で決まる。 ベテランは工程の時間を見て「曲げが4工程なのに段取りが3回分入っている」と気づきますが、若手は気づきません。点検の結果が属人的なので、課として同じ水準で仕入先と話せません。
(d)根拠の示された値上げまで、値下げの対象に見える。 チャージが前回より上がっていても、仕入先が最低賃金の上昇率などの公表資料を添えていれば、それは削る対象ではなく、受け止めて検討する対象です。 総額だけを見ていると、この区別がつきません。
- 【人】 届いた見積内訳書を、品番のフォルダではなく「見積受付」ライブラリに保存する
- 【自動】 ファイルの保存をきっかけにフローが動き、内訳の表を読み出す
- 【自動】 品番で過去の見積を、材質で材料の単価表を、工程で加工時間の目安を引く
- 【自動】 スクリプトが検算と差の計算をする(重量×kg単価、時間×チャージ、率、前回比)
- 【自動】 仕様・ロット・材質が前回と変わっているかを、依頼書の項目から機械的に比べる
- 【自動】 AIが費目ごとに、差の意味を判定し、論点を質問の形で書く
- 【自動】 判定の組み合わせから、確認の重さ(軽い確認/論点あり/人の判断が要る)を規則で決める
- 【人】 担当者が点検結果を開き、論点を取捨して照会文を直す
- 【人】 照会文を仕入先へ送る。回答と交渉の経過を記録に残す
8番目が、この設計の分かれ目です。人は数字を拾いません。 並べる・掛ける・比べるはスクリプトが終えており、担当者が読むのは「差の意味」と「聞くべきこと」だけです。ベテランが頭の中でしていた読み方を、若手も同じ一覧で見られます。
4番目をAIにさせないのも、意図してのことです。 掛け算と引き算はスクリプトで決まります。AIに計算させると、正しく見える誤りが論点に紛れ込みます。 AIが受け取るのは計算済みの差で、仕事はその差を言葉にすることです。
02今回想定するシステム構成
見積内訳書(仕入先から指定様式のファイル) │ 担当者が「見積受付」ライブラリへ保存 ▼【トリガー】ファイルの作成時(プロパティのみ) Power Automate ├──▶ 内訳の表を読み出す(テーブルに存在する行を一覧表示する) ├──▶ 過去の見積/材料の単価表/加工時間の目安を引く ▼ Office スクリプト ── 検算と差の計算(重量×kg単価、時間×チャージ、率、前回比) ▼ Power Automate ── 前提の比較(材質・ロット・工程・表面処理の変更) ▼ Azure OpenAI(Microsoft Foundry)── 構造化出力 │ ① 費目ごとの判定(in_range/ask_basis/premise_gap/basis_given/no_reference) │ ② 論点(質問の形)と、その根拠にした数値 ▼ Power Automate ── 確認の重さを規則で決める ▼ SharePoint リスト「見積点検」──【担当者が論点を取捨し、照会文を直す】 ▼ 仕入先へ照会(人が送る)──▶ 交渉の記録
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 生成AI | Azure OpenAI(Microsoft Foundry) | Claude、Gemini |
| 連携 | Power Automate | Make、n8n |
| 差異計算 | Office スクリプト(Power Automate から実行) | Python |
| 見積と点検結果の置き場 | SharePoint のライブラリとリスト | Dataverse |
生産管理システムと参照の表は、新しく足すものではありません。 過去の見積は生産管理システムの単価の履歴と品番フォルダの見積内訳書から、品番ごとに直近3回分を1つの表に書き出して置きます。書き出し方は利用している製品によって違うため、この部分は利用環境に合わせた個別の実装になります。 フローは書き出された表を読むだけで、生産管理システムには書き込みません。
土台になるのは、Microsoft Foundry で提供される Azure OpenAI のモデルです。 Azure が販売するモデルは Microsoft の Azure 環境でホストされ、モデルの提供元が運営するサービスとはやり取りしないとされています。入力と出力は他の顧客にもモデルの提供元にも提供されず、許可や指示なしに生成AIの基盤モデルの学習に使われないとされています。見積の内訳は仕入先の原価構造そのものなので、この点を最初に確かめます。標準のデプロイでは指定した地域の中で処理されますが、「Global」や「DataZone」の種類では処理の場所が広がるので、デプロイの種類も先に決めます。
見積の受け取りは、Power Automate の SharePoint コネクタで行います。 トリガーは「ファイルの作成時 (プロパティのみ)」で、ライブラリ列のプロパティだけが返るため、中身は「ファイル コンテンツの取得」で取ります。点検結果の書き込みは「項目を作成する」です。内訳の表の読み出しは Excel Online (Business) コネクタの「テーブルに存在する行を一覧表示する」で、指定様式の内訳欄をテーブルとして定義しておくのが前提です。
03どうやって実装するのか
処理の起点を決める
「見積受付」ライブラリにファイルが作成されたことを起点にします。 見積は依頼から回答まで日がばらばらに届くため、1日1回の定時実行にはしません。 まとめて処理すると、仕入先へ照会を返すのが1日遅れ、回答期限の短い見積では交渉の時間が残りません。
品番のフォルダに直接入れる運用はやめます。 フォルダが品番の数だけあると、トリガーを置く場所が決まりません。受付は1か所にし、点検が終わったら品番のフォルダへ移します。 移すのは点検結果をリストに書き込めたときだけにし、受付ライブラリに残っている数が、そのまま未点検の数になるようにします。
ライブラリには 品番、仕入先コード、依頼番号の列を持たせ、保存するときに担当者が選びます。ファイル名から推し量る方式は、仕入先が名前を付け替えて返してくるので続きません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 見積内訳書 | 材料(材質・寸法・重量・kg単価)、工程ごとの時間とチャージ、外注費、管理費、利益、ロット、備考 | 見積受付ライブラリ |
| 見積依頼書 | 品番、図面の版、材質、数量・ロット、表面処理、納期 | 依頼の記録(リスト) |
| 過去の見積 | 同じ品番の直近3回分の内訳と、そのときの依頼条件 | 書き出した表 |
| 材料の単価表 | 材質・形状ごとのkg単価、更新月、単価の出どころ | 購買課の参照表 |
| 加工時間の目安 | 工程(切断・曲げ・溶接・切削など)ごとの、形状と数量に応じた時間の目安 | 生産技術課の表 |
| 仕入先の情報 | 過去の管理費率・利益率の平均、チャージの改定の履歴 | 仕入先の台帳 |
質を決めるのは、見積依頼書の項目です。 前回と今回で何が変わったかが分からなければ、差のすべてが「高い」に見えます。図面の版、材質、ロット、表面処理を依頼書の項目として持たせておくのが、最初の準備作業です。
材料の単価表には、単価の出どころの列を持たせます。 業界紙の市況、商社からの提示、自社の購入実績のどれを元にしたかで、仕入先に示せるかどうかが変わります。出どころのない単価で「材料費が高い」と言うと、根拠を聞かれて答えられません。
データの取得方法を決める
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 見積の内訳の行 | 見積内訳書のテーブル(テーブルに存在する行を一覧表示する) | 費目ごとの金額と数量 |
| 依頼の条件 | 依頼の記録のリスト(項目を取得する) | 前回との前提の比較 |
| 過去の見積 | 書き出した表を品番で引く | 前回比の計算 |
| 材料のkg単価 | 単価表を材質と形状で引く | 材料費の検算と比較 |
| 加工時間の目安 | 目安の表を工程で引く | 加工時間の比較 |
内訳の表は、行が多いと既定では全部返りません。 「テーブルに存在する行を一覧表示する」は既定で最大256行を返し、すべての行を取るには改ページの設定を有効にするとされています。見積内訳書の行は通常そこまで多くありませんが、複数の品番をまとめた見積では超えることがあるので、改ページは最初から有効にします。
列名に記号を使わないでください。 応答の列名は OData の形式に合わせて変換されることがあり、たとえば # は _x0023_ になるとされています。指定様式の列名を「工程No.」のようにしていると、フローの側で名前が変わります。列名は英数字と日本語の語だけにします。
AIへ渡す前に整形する
- 様式の確認 … 指定様式のテーブル名と列がそろっているかを確かめます。そろっていなければ点検せず、担当者に戻します
- 単位の統一 … 重量はkg、時間は分、金額は円にそろえます。「1.2h」「72min」が混ざる仕入先があります
- まとめ書きの検出 … 加工費が1行にまとめられ、工程ごとの時間が無いものに印を付けます
- 前提の比較 … 依頼書の材質・ロット・図面の版・表面処理を前回と比べ、変わった項目を一覧にします
- 検算 … Office スクリプトで、重量×kg単価、時間×チャージ、各費目の合計と総額の一致を確かめます
- 差の計算 … 費目ごとに、参照値との差の率と前回比を出します
- 差の材料の付与 … 差の大きい費目に、関係する前提の変更を結び付けます(材料費と材質、加工費とロットなど)
5番目をAIに渡す前に終わらせます。 内訳の合計が総額と合わない見積は、点検の前に仕入先へ確かめるべきもので、論点の判定に進めると、計算の食い違いが「加工費が高い」という論点に化けます。
スクリプトには呼び出しの上限があります。 Power Automate から Office スクリプトを実行する操作は、10秒あたり最大3回、1日あたり最大1,600回とされています。月120件なら余裕がありますが、1件で何度も呼ばない作りにします。 検算と差の計算は1回の実行でまとめて行います。
AIに処理させる
させるのは、計算済みの差を受け取り、費目ごとにその差の意味を判定して、論点を質問の形で書くことだけです。
| 判定 | 付ける条件 | 論点の書き方 |
|---|---|---|
in_range | 参照値との差が目安の幅に収まる | 論点にしない |
ask_basis | 幅を外れ、前提の変更も根拠の記載も無い | 「〜の根拠を教えてください」 |
premise_gap | 幅を外れているが、材質・ロット・工程などの前提の変更が結び付いている | 「前提を〜にそろえた場合の金額を教えてください」 |
basis_given | 幅を外れているが、見積の備考に公表資料などの根拠が添えられている | 論点にせず、検討事項として残す |
no_reference | 参照値が無い(新しい材質・新しい工程) | 人が判断する |
premise_gap と ask_basis の区別が、この構成でいちばん大事です。 前者は前提をそろえれば比べられるもの、後者は前提が同じなのに違うものです。前者を値下げの論点にすると、仕入先には「前回の条件を読んでいない」と映ります。
basis_given を論点から外すのは、指針に沿うためです。 労務費転嫁指針は、発注者が説明や根拠資料を求める場合は公表資料に基づくものとし、受注者が公表資料を用いて示した価格を合理的な根拠があるものとして尊重するよう求めています。チャージの上昇に最低賃金の上昇率などが添えられていれば、それは交渉で押し返す対象ではありません。
| させないこと | 理由 |
|---|---|
| 金額の計算・検算 | スクリプトで決まる。AIの計算は確かめられない |
| 「適正な価格」の提示 | 参照値は社内の目安で、相手の原価ではない |
| 値下げ額・目標価格の提案 | 価格は人が仕入先と話し合って決める |
| 根拠の示された上昇を論点にすること | 指針に反する交渉になりうる |
| 仕入先の経営状況の推測 | 見積に書かれていないことを材料にしない |
| 発注先の変更の示唆 | 取引先の選定は購買課長の判断 |
3行目がいちばん起きやすい失敗です。 差が出ている見積を渡すと、AIは親切に「加工費を15%下げた〇〇円が妥当」と書きます。参照値は社内の目安にすぎず、それを相手の適正価格として示すと、一方的な価格の押し付けに見えます。 書かせるのは「何を聞くか」までです。
指示内容を固定する
あなたは製造業の購買課で、仕入先から届いた見積の内訳を点検し、
仕入先に確かめる論点を整理する立場です。
渡すのは、スクリプトが計算した費目ごとの差と、前提の変更の一覧です。
計算はすでに終わっています。あなたは計算をしないでください。
【やること】
費目(材料費・加工費の各工程・外注費・管理費・利益)ごとに、
次のどれに当たるかを判定し、論点を書いてください。
- in_range ...... 参照値との差が目安の幅に収まっている
- ask_basis ..... 幅を外れており、前提の変更も、見積の備考の根拠も無い
- premise_gap ... 幅を外れているが、前提の変更(材質・ロット・工程・表面処理・図面の版)が
この費目に結び付いている
- basis_given ... 幅を外れているが、見積の備考に公表資料などの根拠が書かれている
- no_reference .. 参照値が無い
迷ったときは ask_basis ではなく no_reference を選んでください。
【論点の書き方】
- 論点は、仕入先に聞く質問の形で書いてください。
「高い」「下げてください」とは書かないでください。
- premise_gap の論点は、前提をそろえた金額を聞く形にしてください。
例:「前回(ロット100個)と同じ条件での加工費を教えてください」
- 論点ごとに、根拠にした数値(参照値・今回値・差の率)と、
参照値の出どころを basis に写してください。
【厳守事項】
- 金額や率を計算しないでください。渡された数値だけを使ってください。
- 目標価格、値下げ額、値下げ率を書かないでください。
- 「適正な価格は〜円」のように、相手の原価を断定しないでください。
- 見積の備考に、最低賃金の上昇率、春季労使交渉の妥結額などの公表資料が
根拠として書かれている費目は basis_given にし、論点にしないでください。
- 仕入先の経営状況や、発注先の変更について書かないでください。
- 内訳の合計が総額と一致しないという印が付いている場合は、
判定をせず、document_status を totals_mismatch にしてください。
【費目ごとの差】{diffs}
【前提の変更の一覧】{premise_changes}
【見積の備考】{remarks}
【参照値の出どころ】{reference_sources}
「下げてください」と書かせないことを、論点の書き方と厳守事項の2か所に書いています。 片方だけだと、質問の形を守りながら「〇%程度の削減は可能でしょうか」と数字を入れてきます。禁じたいのは、社内の目安を相手への要求に変える書き方そのものです。
出力形式を固定する
Azure OpenAI の構造化出力で、次の形のJSONに固定して受け取ります。 構造化出力は、推論の呼び出しで渡したJSONスキーマにモデルを従わせる機能で、JSONとして正しいことしか保証しない従来のJSONモードとは違い、スキーマへの厳密な準拠を求められるとされています。
{
"quote_id": "",
"document_status": "ok | totals_mismatch | layout_mismatch",
"items": [
{ "cost_item": "material | process | outsourcing | overhead | profit",
"process_name": null,
"judgement": "in_range | ask_basis | premise_gap | basis_given | no_reference",
"linked_premise": null,
"question": null,
"basis": "" }
],
"open_questions_count": 0
}
スキーマの書き方には決まりがあります。 すべての項目を required に入れ、オブジェクトには additionalProperties: false を付けます。省略してよい項目は、型を ["string", "null"] のように null との組にして表します。 上の process_name や question がそれで、加工以外の費目や in_range の費目では null が入ります。スキーマ全体でオブジェクトのプロパティは100個まで、入れ子は5段までです。
1つ目の理由は、判定と確認の重さを別の層に置けることです。 items はAIが埋め、確認の重さは Power Automate が規則で決めます。
| 確認の重さ | 付ける条件(Power Automate が決める) |
|---|---|
| 軽い確認 | すべてが in_range または basis_given |
| 論点あり | ask_basis か premise_gap が1つ以上 |
| 人の判断が要る | no_reference がある、または document_status が ok でない |
2つ目の理由は、論点の数を後段で数えられることです。 open_questions_count と items の中の論点の数が合わなければ、出力のどこかが崩れています。合わないものは、確認の重さを「人の判断が要る」に上げます。
3つ目は、basis で確認が速くなることです。 担当者は論点ごとに、何と比べてどれだけ違うかを、ファイルを開かずに読めます。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 見積受付ライブラリ | SharePoint コネクタのトリガー | 新しい見積内訳書を拾う |
| 見積内訳書 | Excel Online (Business) コネクタ | 内訳のテーブルの行を読む |
| 参照の表 | 同上(読み取りのみ) | 過去の見積、単価表、加工時間の目安 |
| Office スクリプト | 「スクリプトの実行」 | 検算と差の計算 |
| Azure OpenAI | HTTPによるAPI呼び出し(構造化出力) | 費目ごとの判定と論点 |
| 見積点検リスト | SharePoint コネクタ(項目を作成する) | 判定、論点、確認の重さを1行に |
生産管理システムへは書き込みません。 この構成が出すのは点検の結果と論点までで、単価を登録するのは交渉が終わった後の別の手続きです。 書き込みを足すと、交渉中の金額がそのまま単価になる経路ができます。
参照の表も読み取りだけです。 Excel Online (Business) コネクタは、読み取りの操作でもファイルが変更されてバージョン履歴に新しい版が出ることがあるとされています。参照の表は、フロー用に書き出した写しを読み、原本には触れさせません。 手で編集している最中のファイルに別の経路から書き込むと競合が起きるともされているので、写しを分けておけば両方の問題を避けられます。
人が確認する
人が開くのは「論点あり」と「人の判断が要る」の見積です。 「軽い確認」のものは、一覧で仕入先と総額を流し見ます。全件で論点を読み込む設計にすると、第10章の30.0時間には収まりません。
- 「人の判断が要る」を先に見る …
no_referenceの費目は、生産技術課に目安を聞くか、似た工程の目安を当てます premise_gapの前提を確かめる … 結び付けられた前提の変更が、本当にその費目に効くかを図面と依頼書で見ますask_basisの論点を取捨する … 差が小さく金額の影響も小さいものは外します。聞く論点は多くても3つまでに絞ります- 照会文を直して送る … 送信は人が行います
- 判定を覆したら記録する … どの費目を、どの判定からどの判定に変えたかを残します
2番目を省かないでください。 premise_gap は機械的に結び付けたものなので、ロットが変わっていても材料費には効かない、といった組み合わせが混ざります。前提の取り違えは、仕入先に「条件を読んでいない」と受け取られる一番の原因です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 指定様式でない見積が届く | 点検せず layout_mismatch。指定様式での再提出を担当者から依頼 |
| 内訳の合計が総額と合わない | totals_mismatch。判定に進まず、仕入先に確かめる |
| 加工費が1行にまとめられている | 工程ごとの比較ができない。その費目は no_reference とし、工程別の内訳を依頼 |
| 同じ品番の過去の見積が無い | 前回比を出さず、単価表と加工時間の目安だけで判定 |
| 材料の単価表に無い材質 | no_reference。購買課で単価を調べて表に足す |
| 単位が読み取れない(h/min の混在) | 前処理で止め、担当者が単位を入れ直す |
| ファイルが25MBを超える | コネクタで読めない。画像を外した版の提出を依頼 |
| Azure OpenAI が応答しない・スキーマに合わない | 受付ライブラリに残す。移すのはリストに書けたときだけ |
論点の数が open_questions_count と合わない | 確認の重さを「人の判断が要る」に上げる |
上から3行目までが、最初の数か月の大半を占めます。 どれもAIの問題ではなく、見積の出し方の問題です。 仕入先ごとの発生件数を数え、多い仕入先には様式の書き方を説明しに行くほうが、判定を磨くより効きます。
記録を残す
- 見積内訳書の元ファイルと、受け付けた日時・担当者
- スクリプトが出した検算の結果と、費目ごとの差の一覧
- そのとき参照した単価表・加工時間の目安の版(更新月)
- AIの出力のJSON(
items、論点、basis)と、確認の重さ - 担当者が判定を覆した記録と、外した論点
- 照会文、仕入先の回答、交渉の経過と決まった価格
3つ目で参照の表の版を残すのは、単価表が毎月変わるためです。 「材料費が高い」という判定が、どの月の単価と比べたものかが残っていないと、仕入先から異議が出たときに説明できません。
最後の行は、指針が求める記録でもあります。 労務費転嫁指針は、発注者と受注者の共通の取組として、価格交渉の記録を作成して双方が保管することを挙げています。点検結果と照会文と回答を1件の記録につないでおけば、そのまま交渉の記録になります。
04実装レベルの3段階
最小構成では件数がさばけません。 手で並べる作業が残るので、月120件には使えません。確かめるための段階です。 半自動化で、1件45分が25分程度になります。 第4章の①と②がほぼ消えますが、前提の変更を依頼書から拾う作業と、論点を書く作業が残ります。本格構成で15分になり、この段階が本記事の想定です。 差が大きいのは、前提の比較と論点の文が、1件ずつの手作業だからです。 段階を飛ばさないでください。 半自動化の差の一覧を1か月見ると、単価表に無い材質と、目安が実態と合わない工程が先に分かります。
05工数削減シミュレーション
導入後 120件 × 15分 ÷ 60 = 30 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 板金・切削・溶接などの加工品を多くの外注先から買っており、見積に材料費・加工費・管理費・利益の内訳を付けてもらっている機械・装置メーカー、建設資材の加工を外に出している建設業、加工品を仕入れて販売する商社。内訳の点検がベテランの購買担当の頭の中にあり、若手の担当では「高いか安いか」しか言えない場合。過去の見積と材料の単価表、工程ごとの加工時間の目安が、ばらばらでも社内に残っている場合。
- 見積が総額だけで届き、内訳を出してもらう取り決めが無い場合(先に内訳の様式を決める作業が要ります)。品目が汎用の市販品で、価格表と相見積で決まる場合。見積の件数が月に数件で、担当者が1件ずつ時間をかけて見られる場合。なお、発注先の決定と価格の決定、仕入先との交渉そのものは、この構成では代替できません。
07最小構成で試す方法
- 先月受け取った見積内訳書から10件を選ぶ(うち数件は、前回からロットや材質が変わったものを入れる)
- その10件について、ベテランの担当者がどの費目を論点にしたかを聞き取る
- 1件ずつ、内訳と過去の見積と単価表の該当行を手で表に並べ、差の率を計算しておく
- 社内で使える生成AIの画面に、その表と前提の変更を貼り、「費目ごとに、根拠を聞くべきか、前提が違うだけか、参照値が無いかを判定し、論点を質問の形で書いてください。計算はしないでください。値下げ額は書かないでください」と指示する
- 出てきた論点を、ベテランの論点と突き合わせる
10件は必ずやってください。 フローを組む前に、「差を渡せば、差の意味を読み分けられるのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| ベテランと同じ論点が出た | 参照の表の書き出しとフローに進む |
| 前提の違う費目を値下げの論点にした | 前提の変更の渡し方で直る。構成は有効 |
| 値下げ額や目標価格を書いた | 指示の書き方で直る。禁止を2か所に書く |
| ベテランも説明できない論点が多い | 参照の表の質が先。 加工時間の目安を見直す |
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 前提の違いが値下げの論点になる | 依頼書に材質・ロット・図面の版・表面処理を持たせ、前提の比較を判定より先に行う |
| AIが値下げ額や目標価格を書く | 指示の2か所で禁じ、出力に数字の要求が混ざっていないかを後段で検知する |
| AIが合計を計算し直して食い違う | 計算はスクリプトだけで行い、AIには計算済みの差だけを渡す |
| 根拠の示された上昇まで論点になる | 見積の備考を渡し、basis_given を論点から外す |
| 加工費が1行にまとめられている | 工程別の内訳を依頼する。まとめ書きを点検の前に検出する |
| 内訳の表が途中までしか読めない | 既定の256行を超える見積に備え、改ページを有効にする |
| 列名が変換されて値が取れない | 指定様式の列名に # や . を使わない |
| 参照の表がフローで書き換わる | 読み取りでも版が増えることがある。書き出した写しを読む |
ask_basis が多すぎて使われない | 迷ったら no_reference。論点は3つまでに絞る運用にする |
| 単価表の出どころが分からない | 出どころの列を持たせる。出どころの無い単価は論点の根拠にしない |
| 照会が自動で仕入先に飛ぶ | 下書きまでにする。 送信は人が行う |
上の2行が、この構成の失敗のほとんどです。 どちらも、社内の目安を相手への要求に変えてしまうことから起きます。前提をそろえる順序と、数字を要求に変えない指示の2つで守ります。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 仕入先の見積の内訳(材料費・加工費・チャージ・管理費率・利益率)、自社の材料の単価表と加工時間の目安、過去の見積と交渉の経過です。仕入先の原価構造と、自社の購買の手の内の両方が入ります。
- 外部へ渡す範囲を、判定に必要な差までに限る … AIに渡すのは費目ごとの差の率と前提の変更で、見積内訳書の原文や図面は渡しません。 仕入先の名称も、判定には要らないのでコードに置き換えます
- 処理の場所を先に決める … 標準のデプロイは指定した地域の中で処理されますが、「Global」「DataZone」では処理の場所が広がります。 仕入先との秘密保持の取り決めに照らして選んでください
- 点検結果を相手への要求として使わない … 参照値は社内の目安で、相手の原価ではありません。中小受託取引適正化法の下では、協議に応じない一方的な代金の決定が問題となるおそれがあるとされています。論点は質問として使い、価格は協議で決めてください
- 根拠の示された労務費の上昇を、押し返す材料にしない … 指針は、公表資料に基づく説明を合理的な根拠として尊重するよう求めています。
basis_givenの費目は、受け止めて検討する側に置きます - 交渉の記録を残す … 点検結果、照会文、回答、決まった価格を1件につなぎ、発注者と受注者の双方が保管する形にしてください
- 仕入先の内訳を課の外に出さない … 見積点検リストの閲覧権限は購買課に限ります。ある仕入先の内訳を別の仕入先との交渉で見せることは、信頼を失う最短の道です
誤りが起きた場合のリスクは、前提の違いを値下げの論点にして仕入先との関係を損なうことと、根拠のある上昇を押し返して協議の姿勢を疑われることの2つです。 前者は前提の比較を飛ばすと起き、後者は備考を渡さないと起きます。どちらも判定の前段で守ります。
10まず何から始めるか
1週目:見積依頼書に前提の項目を足す
見積依頼の記録に、図面の版、材質、ロット、表面処理の項目を足します。過去の依頼にさかのぼる必要はありません。これから出す依頼から埋めます。 この4項目が無いと、どの差も「高い」に見えます。
2週目:10件で試す
先月の見積から10件を選び、内訳と参照値を手で並べて、AIに判定と論点を書かせます。ベテランの論点と突き合わせ、前提の違いを値下げの論点にしていないかを最優先で見ます。
3週目:参照の表を整える
材料の単価表に出どころの列を足し、生産技術課と加工時間の目安を見直します。ベテランが「この工程ならこのくらい」と言う値を、工程ごとに1行ずつ書き出します。 あわせて、見積内訳書の指定様式の内訳欄をテーブルとして定義し直します。
4週目:受付から差の一覧までをつなぐ
Power Automate で受付ライブラリを見張り、内訳を読み、スクリプトで検算と差の計算をしてリストに書き込むところまで作ります。この時点ではAIを呼ばず、差の一覧だけを見ます。
2か月目: 前提の比較とAIの判定を足し、確認の重さを出します。no_reference と、担当者が覆した判定の件数を毎週数えます。3か月目以降: 照会文の下書きと交渉の記録をつなぎ、1件45分が何分になったかを実測します。仕入先ごとのまとめ書きと様式外れの件数を見て、見積の出し方を仕入先と話し合えた時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 発注者として、説明や根拠資料を求める場合には公表資料に基づくものとすること、受注者から労務費の上昇を理由とした価格転嫁を求められたら協議のテーブルにつくこと。発注者・受注者共通の取組として、価格交渉の記録を作成して双方が保管すること。コストの上昇分を反映せず取引価格を据え置くことが、中小受託取引適正化法上の買いたたきや協議に応じない一方的な代金決定として問題となるおそれがあること | 公正取引委員会: 労務費の適切な転嫁のための価格交渉に関する指針 | 2026-10-06 |
| Azure が販売するモデルが Azure 環境でホストされ、モデルの提供元のサービスとやり取りしないこと。入力と出力が他の顧客や提供元に提供されず、許可なく基盤モデルの学習に使われないこと。Global と DataZone のデプロイで処理の場所が広がること | Microsoft Learn: Data, privacy, and security for Foundry Models sold by Azure | 2026-10-06 |
| 構造化出力がJSONスキーマへの厳密な準拠を求められ、JSONモードと違うこと。全項目を required にし、additionalProperties を false にすること。null との組で省略可能な項目を表すこと。プロパティ100個・入れ子5段までであること | Microsoft Learn: How to use structured outputs with Azure OpenAI | 2026-10-06 |
| トリガー「ファイルの作成時 (プロパティのみ)」がプロパティのみを返し、中身は「ファイル コンテンツの取得」で取ること。「項目を作成する」の操作 | Microsoft Learn: SharePoint コネクタ | 2026-10-06 |
| 「テーブルに存在する行を一覧表示する」が既定で最大256行を返し、改ページで全行を取ること。列名が OData の形式に変換されること。ファイルの上限25MB。スクリプトの実行が10秒あたり3回・1日1,600回までであること。読み取りでもバージョン履歴に版が出ることがあること。複数の経路から同時に書き込まないこと | Microsoft Learn: Excel Online (Business) コネクタ | 2026-10-06 |
価格をどう決めるか、どの論点を仕入先に示すかは、購買課と仕入先との協議で決めてください。 本記事は上記の公開資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0526)についてのご相談はこちらから。
