飲食のフランチャイズ本部が加盟店から毎月届く報告(売上・人・困りごと)を要約し、スーパーバイザーの訪問の論点を店ごとに作る
加盟店から毎月届く報告の数値と自由記述を店ごとに要約し、POS の実績と並べます。そのうえで、スーパーバイザーが次の訪問で取り上げる論点の案を3つまで作ります。
- 生成AI
- Azure OpenAI Service/ChatGPT/Claude
- 連携・自動化
- Python
- 対象業界
- その他/小売/教育/飲食
- 対象部門
- 営業/経営企画
- 対象業務
- 要約/集計・分析
- 主な課題
- データ分析に時間がかかる/属人化している/期限・対応漏れが起きる
- AIで行う処理
- 要約
- 主な効果
- 判断支援/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 本格構成
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 経営企画が、加盟店ポータルから月次の報告を店ごとに書き出して共有フォルダに置く
- スーパーバイザーが受け持ちの店の報告を1件ずつ開き、数値と自由記述を読む
- 本部の POS 集計の画面を開き、その店の売上・客数を前月・前年と見比べる
- 報告の数値と POS の数値が食い違っていないかを確かめる
- 前回の訪問の記録を開き、前回の論点がどうなったかを見る
- 次の訪問で話す論点を訪問予定表のメモ欄に書く
- 本部への要望は、気づいたものだけを担当の部署にメールで伝える
- 自動毎月6営業日目の朝、加盟店ポータルから当月の報告をすべて取り出す
- 自動本部の POS 集計から、各店の売上・客数の当月・前月・前年を取り出す
- 自動前月比・前年比・報告と POS の差を計算し、食い違いに印を付ける
- 自動前回の訪問の記録から、前回の論点とその結果を取り出す
- 自動240店分の要約の依頼を Message Batches API にまとめて投げる
- 自動結果を店ごとに受け取り、要約・論点の案・本部への要望・協議の申し入れを訪問予定表と各部署の受付の一覧に振り分ける
- 人スーパーバイザーが受け持ちの店の要約と論点の案を読み、訪問で話す論点を決める
- 人協議の申し入れの一覧は、店舗運営部の責任者が受けて対応を決める
- 人本部への要望は、担当の部署が受付の一覧から受け取る
各工程の詳しい説明を読む
- 経営企画が、加盟店ポータルから月次の報告を店ごとに書き出して共有フォルダに置く
- スーパーバイザーが受け持ちの店の報告を1件ずつ開き、数値と自由記述を読む
- 本部の POS 集計の画面を開き、その店の売上・客数を前月・前年と見比べる
- 報告の数値と POS の数値が食い違っていないかを確かめる
- 前回の訪問の記録を開き、前回の論点がどうなったかを見る
- 次の訪問で話す論点を訪問予定表のメモ欄に書く
- 本部への要望は、気づいたものだけを担当の部署にメールで伝える
(a)読み込みの時間が取れない。 1店30分で20店なら、1人あたり月10時間です。訪問が詰まっている週は、報告を開かずに店に向かうことがあります。 その店では前月と同じ話をして終わり、オーナーは「報告を出しても読まれていない」と感じます。
(b)論点がスーパーバイザーによって違う。 売上の落ち込みを最初に見る人もいれば、人件費率から見る人もいます。同じ報告でも、誰が受け持つかで訪問の中身が変わります。 店の受け持ちが替わると、それまでの論点が引き継がれません。
(c)本部への要望が埋もれる。 要望は自由記述のなかに、困りごとと混ざって書かれます。「新しいメニューの仕込みが重い」は困りごとでもあり、商品部への要望でもあります。 7番目は気づいた人だけが行うので、担当の部署に届くかどうかが読み手しだいです。
(d)協議の申し入れが訪問の場で処理される。 「深夜の営業を短くしたい」という申し入れが困りごとの欄に書かれ、スーパーバイザーが訪問の場で「契約上は難しい」と答えて終わることがあります。 本部として協議に応じたかどうかが記録に残らず、後から説明できません。
- 【自動】 毎月6営業日目の朝、加盟店ポータルから当月の報告をすべて取り出す
- 【自動】 本部の POS 集計から、各店の売上・客数の当月・前月・前年を取り出す
- 【自動】 前月比・前年比・報告と POS の差を計算し、食い違いに印を付ける
- 【自動】 前回の訪問の記録から、前回の論点とその結果を取り出す
- 【自動】 240店分の要約の依頼を Message Batches API にまとめて投げる
- 【自動】 結果を店ごとに受け取り、要約・論点の案・本部への要望・協議の申し入れを訪問予定表と各部署の受付の一覧に振り分ける
- 【人】 スーパーバイザーが受け持ちの店の要約と論点の案を読み、訪問で話す論点を決める
- 【人】 協議の申し入れの一覧は、店舗運営部の責任者が受けて対応を決める
- 【人】 本部への要望は、担当の部署が受付の一覧から受け取る
7番目で、スーパーバイザーは報告を全部読み直しません。 要約と論点の案を読み、気になるものだけ報告の原文を開きます。 原文を全部開く運用にすると、120.0時間はほとんど減りません。
8番目を別の流れにしているのが、この設計の要です。 営業時間や見切り販売に関わる申し入れは、スーパーバイザー1人が訪問の場で答えてよい事柄ではありません。 AIはそれを見つけて分けるだけで、どう応じるかは本部が決めます。
02今回想定するシステム構成
加盟店ポータル(月次報告) 本部の POS 集計 訪問の記録
│ │ │
▼【トリガー】毎月6営業日目の朝
Python ── 前月比・前年比・報告と POS の差を計算
▼
Claude API(Message Batches API)
│ 店ごとに:自由記述の要約/数値の動きとの結び付け
│ 訪問の論点の案(3つまで)/本部への要望の抜き出し
│ 協議の申し入れの検出
▼
Python ── custom_id で店に戻し、振り分け
├──▶ 訪問予定表(要約と論点の案)
├──▶ 各部署の受付の一覧(本部への要望)
└──▶ 店舗運営部の責任者(協議の申し入れ)
【人】スーパーバイザーが論点を決める| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 処理 | Claude API(Message Batches API で店ごとの要約と論点の案) | OpenAI API、Azure OpenAI |
| 集計 | Python(前月比・前年比・報告と POS の差の計算、結果の振り分け) | 加盟店ポータルの帳票機能 |
| 連携 | 加盟店ポータルの報告の書き出し(既存)と訪問予定表 | 本部の社内ポータル |
加盟店ポータル・POS 集計・訪問予定表は、いまあるものを使います。 新しく足すのは、月に1回動く Python の処理と、Claude API の呼び出しだけです。
この題材に Message Batches API を使うのは、急がない処理だからです。 報告は月に1回まとめて届き、スーパーバイザーが読むのは早くても翌日です。Message Batches API は多くの要求を非同期でまとめて処理し、費用は通常の API の50%とされています。大半のバッチは1時間以内に終わるとされますが、24時間以内に処理が終わらなければ期限切れになります。 朝に投げて、その日のうちに結果を受け取る運用で足ります。
1つのバッチは10万件か256MBまでとされ、240店はその範囲に十分収まります。結果は作成から29日間取り出せ、その後は取り出せなくなります。 結果は自社の側に保存しておく必要があります。
結果は投げた順に返るとは限りません。 公式のページは、結果を要求と結び付けるには必ず custom_id を使うよう求めています。店コードと年月で custom_id を作り、それで店に戻します。
03どうやって実装するのか
処理の起点を決める
毎月6営業日目の朝に1回動かします。 報告の締切が5営業日目なので、その翌朝です。届いていない店があっても待たずに動かします。 未提出の店は要約の対象から外し、別に一覧にします。
未提出の店の扱いが、この起点の設計の要です。 未提出のまま要約を作らずにいると、その店はスーパーバイザーの一覧から消えたように見えます。 未提出の一覧を訪問予定表の先頭に出し、報告が無いこと自体を訪問の論点にします。
締切を過ぎて届いた報告は、届いた日の夜にその店の分だけを追加のバッチで投げます。 1店でも同じ仕組みで流せるので、締切後の扱いを別に作る必要がありません。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 月次の報告 | 売上・客数・原価率・人件費率・クレームの件数、自由記述3欄(人のこと/困っていること/本部への要望) | 加盟店ポータルの書き出し |
| POS の実績 | 店ごとの当月・前月・前年の売上と客数 | 本部の POS 集計 |
| 計算した差 | 前月比・前年比、報告と POS の差、原価率・人件費率の前月との差 | Python で計算 |
| 前回の訪問の記録 | 前回の論点と、その後どうなったかのメモ | 訪問予定表 |
| 店の属性 | 開店からの月数、立地の区分、オーナーの店数、営業時間 | 加盟店の台帳 |
| 本部の支援策の一覧 | 採用の支援、販促の支援、設備の相談の窓口など | 店舗運営部の一覧 |
質を決めるのは、いちばん下の一覧です。 オーナーが「求人を出しても応募が無い」と書いたとき、本部に採用の支援策があることを知らなければ、AIは「採用の状況を確認する」という一般的な論点しか出せません。 支援策の一覧があれば、「本部の採用支援(求人原稿の代行)の案内」という具体的な論点になります。
前回の訪問の記録は、論点を続けるために渡します。 前回「仕込みの手順を見直す」と話した店なら、今月の報告でそれがどうなったかを最初に確かめるのが自然な順序です。
データの取得方法を決める
報告は、加盟店ポータルの月次報告の書き出し機能で、当月分を CSV にして取り出します。取り出すのは自由記述を含む全欄です。 POS の実績は、本部の POS 集計から店コードで引きます。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 報告の全欄 | 加盟店ポータルの書き出し | AIへの入力の中心 |
| 当月・前月・前年の売上と客数 | POS 集計 | 差の計算 |
| 前回の論点とメモ | 訪問予定表の前月の行 | 論点の継続 |
| 店の属性 | 加盟店の台帳 | 前提の提示 |
| 支援策の一覧 | 店舗運営部の一覧 | 論点を具体にする材料 |
報告と POS の突き合わせは、店コードで行います。 店名で突き合わせると、同じオーナーの2店目・3店目で取り違えます。
計算した差は、数値として AI に渡します。 「前年比 −12.3%」と渡し、AI にはその数値を言い換えずに使わせます。 AIに売上の数値を渡して前年比を計算させると、桁や符号を取り違えることがあり、取り違えた数字が論点の根拠として訪問の場に出ていきます。
AIへ渡す前に整形する
- 未提出の店の切り出し … 当月の報告が無い店を一覧にし、要約の対象から外します
- 報告と POS の差の計算 … 売上と客数について、報告の値と POS の値の差を出し、一定の割合を超えたら印を付けます。どこからを食い違いとするかは本部で決めます
- 前月比・前年比の計算 … POS の値で計算します。開店から13か月に満たない店は前年比を空にします
- 自由記述の個人名の置き換え … スタッフの氏名や、客の名前が書かれていたら記号に置き換えます。論点に要るのは「店長が辞める」という事実で、誰かではありません
- 長すぎる自由記述の扱い … 極端に長いものは切らずに渡し、要約の長さだけを指定します。切ると、最後に書かれた本題が落ちます
- custom_id の付与 … 店コードと年月をつないで付けます。使える文字は英数字・ハイフン・アンダースコアで、1〜64文字とされているため、店コードに記号が含まれるなら置き換えます
2番目の印は、AI の要約より先にスーパーバイザーの目に入るようにします。 報告の売上が POS より大きく多い店は、報告の書き間違いか、POS を通らない売上があるかのどちらかで、どちらも訪問で確かめる事柄です。
4番目は、アルバイトのスタッフに高校生が含まれうることも理由です。 スタッフの個人の情報は、本部ではなく加盟店の雇用の話であり、本部の側で要約に残す必要がありません。
AIに処理させる
させるのは、店ごとに次の5つを返すことです。
| 返すもの | 中身 | 縛り |
|---|---|---|
| 要約 | 自由記述3欄を合わせて、今月の店の状況を3〜5文で | 書かれていないことを足さない |
| 数値との結び付け | 自由記述のどの記述が、どの数値の動きと関係しそうか | 渡した数値をそのまま使う。計算しない |
| 論点の案 | 次の訪問で取り上げる論点を3つまで。根拠の記述と数値を添える | 前回の論点の続きがあれば先に置く |
| 本部への要望 | 本部の部署に届けるべき要望を抜き出し、宛先の部署の候補を付ける | 原文の写しを添える |
| 協議の申し入れ | 営業時間・見切り販売・仕入の数量・契約の条件に関わる申し入れの有無 | 有無と原文の写しだけ。論点にしない |
論点の案を3つまでに絞るのは、訪問の時間が限られているからです。 10個並べると、スーパーバイザーは結局自分の経験で選び直し、論点が人によって違う状態に戻ります。
協議の申し入れを論点から外すのは、第1章で書いた理由です。 公正取引委員会の考え方は、本部が営業時間の短縮を合意すれば認めるとしているのに、加盟者からの協議を正当な理由なく一方的に拒み、従前の営業時間を受け入れさせることを、優越的地位の濫用になりうる行為として挙げています。訪問の論点として「営業時間は契約どおりで」と書かれた案が出ると、スーパーバイザーはそのまま話しかねません。
| させないこと | 理由 |
|---|---|
| 前月比などの計算 | Python で計算した値を渡す |
| 協議の申し入れへの答え方の提案 | 本部が決める事柄 |
| 仕入の数量や値引きの指示を論点にすること | 公正取引委員会の考え方が挙げる行為に近づく |
| オーナーやスタッフの評価 | 報告は評価のために集めていない |
| 自由記述に無い事情の推測 | 「人手不足だろう」と補わない |
3行目は、論点の案の言い回しに出ます。 「原価率が高いので発注を減らすよう指導する」と書かれた案は、本部が仕入の数量を指示する形に読めます。 論点は「原価率の上昇の理由を一緒に確かめる」のように、確かめる形で書かせます。
指示内容を固定する
あなたは飲食のフランチャイズ本部で、加盟店の月次の報告を読み、
スーパーバイザーが訪問の前に読む要約と論点の案を作る担当です。
【入力】
店の属性:{store_profile}
今月の報告(数値と自由記述):{report}
計算済みの数値(前月比・前年比・報告と POS の差):{metrics}
前回の訪問の論点とその後のメモ:{last_visit}
本部の支援策の一覧:{support_menu}
【作るもの】
1. summary:自由記述3欄を合わせた今月の状況。3〜5文。
2. links:自由記述の記述と、計算済みの数値の動きの組み合わせ。
3. agenda:次の訪問の論点の案を3つまで。
前回の論点の続きがあれば1つ目に置く。
各論点に、根拠の記述の写しと、関係する数値を添える。
本部の支援策に当てはまるものがあれば、その名前を添える。
4. requests:本部の部署に届けるべき要望。原文の写しと宛先の候補。
5. negotiation:営業時間、見切り販売・値引き、仕入の数量、
契約の条件に関わる申し入れや相談があれば、原文の写しを入れる。
【厳守事項】
- 数値は計算済みの値をそのまま使ってください。計算し直したり、
丸めたり、符号を変えたりしないでください。
- 自由記述に書かれていない事情を推測で足さないでください。
書かれていなければ「報告に記載なし」としてください。
- negotiation に入れたものは agenda に入れないでください。
答え方や方針も書かないでください。
- 論点は「確かめる」「一緒に考える」形で書いてください。
仕入の数量や値引きを指示する形、営業時間を契約どおりに
求める形で書かないでください。
- オーナーやスタッフの人柄、能力についての評価を書かないでください。
- 記号に置き換えた名前を元に戻そうとしないでください。
- 根拠の写しは、報告の文をそのまま写してください。
「negotiation に入れたものは agenda に入れない」を書かないと、両方に入ります。 営業時間の相談は困りごとでもあるので、論点の案の1つ目に「深夜営業の継続について説明する」と出てきます。 それを防ぐのがこの一文です。
「報告に記載なし」を明記するのは、空欄を埋めさせないためです。 自由記述が1行の店ほど、AIは数値から事情を推して要約を膨らませます。1行しか書かれていないこと自体が、スーパーバイザーにとっての情報です。
出力形式を固定する
次の形のJSONで受け取ります。 スキーマは output_config.format に type: "json_schema" で渡します。
{
"store_code": "",
"month": "",
"summary": "",
"links": [
{ "remark_quote": "", "metric": "", "metric_value": "" }
],
"agenda": [
{ "order": 1, "topic": "", "remark_quote": "", "metric": "",
"continues_last_visit": true, "support_menu_item": "" }
],
"requests": [
{ "quote": "", "department_candidate": "" }
],
"negotiation": [
{ "category": "business_hours | markdown | order_quantity | contract | other",
"quote": "" }
]
}
1つ目の理由は、振り分けが機械でできることです。 agenda は訪問予定表へ、requests は各部署の受付の一覧へ、negotiation は店舗運営部の責任者へ。読み手ごとに別の場所へ届きます。
2つ目は、agenda の件数を受け取った側で確かめられることです。 構造化出力のスキーマでは配列の minItems は 0 と 1 しか使えないとされ、「3つまで」をスキーマで縛れません。 4つ以上返ってきたら、order の小さい順に3つを残します。
3つ目は、metric_value を計算した値と照合できることです。 AIが書いた数値が、渡した計算済みの値の中にあるかをプログラムで確かめます。無ければ、AIが計算し直したか書き換えたかのどちらかで、その論点に印を付けます。
| 照合 | 外れたとき |
|---|---|
metric_value が計算済みの値に含まれるか | 論点に「数値要確認」の印 |
remark_quote が報告の原文に含まれるか | 論点に「引用要確認」の印 |
negotiation と agenda の重なり | agenda の側から外す |
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 加盟店ポータル | 書き出しの CSV | 当月の報告を取り出す |
| POS 集計 | 集計の画面の書き出し、または照会 | 当月・前月・前年の売上と客数 |
| Claude API | Message Batches API | 240店分の要約と論点の案をまとめて処理 |
| 訪問予定表 | スプレッドシートへの書き込み | 店ごとの要約・論点の案・印 |
| 各部署の受付の一覧 | スプレッドシートへの書き込み | 本部への要望 |
| 店舗運営部の責任者 | 一覧とメールでの通知 | 協議の申し入れ |
バッチの状態は、一定の間隔で照会します。 処理の状態が in_progress から ended に変われば結果が揃っています。結果は店ごとに成功・エラー・期限切れなどの種別付きで返るため、成功したものだけを振り分け、それ以外は再投入の一覧に回します。
本部への要望の宛先の候補は、部署の一覧から選ばせます。 自由に書かせると「商品開発」「メニュー企画」「商品部」のように同じ部署が別の名前で出てきて、受付の一覧に振り分けられません。宛先に使える部署名を入力で渡し、その中から選ばせて、当てはまらなければ「店舗運営部」に寄せます。
訪問予定表には、AI の結果を別の列に書き込みます。 スーパーバイザーが自分で書くメモの列とは分け、どこまでがAIの案で、どこからが人の判断かを列で区別します。
人が確認する
スーパーバイザーが読むのは、受け持ち20店の要約と論点の案です。 報告の原文は、印の付いた店と、気になった店だけ開きます。
- 未提出の店と、報告と POS の食い違いの印を先に見る … どちらも訪問で確かめる事柄です
- 論点の案を読んで、話す論点を決める … 案をそのまま使っても、入れ替えてもかまいません。入れ替えたら理由を一言残します
- 「数値要確認」「引用要確認」の印がある論点は、原文と数値を開いて確かめる
- 協議の申し入れは自分で答えない … 店舗運営部の責任者に届いていることを確かめ、訪問では「本部で受けて検討している」ことを伝えます
受け持ちが替わった月は、前任の論点を必ず読みます。 訪問予定表には前任が決めた論点と入れ替えの理由が残っているので、新しいスーパーバイザーは、要約と一緒にそれを読むだけで前任の続きから始められます。 第3章の(b)で書いた引き継ぎの切れ目を、ここで埋めます。
店舗運営部の責任者は、協議の申し入れの一覧を毎月必ず見ます。 受けた日、誰が対応するか、結果をこの一覧に記録します。一覧に残っていれば、本部として協議に応じたかどうかを後から説明できます。
目標は、240件をならして1件12分です。 要約と論点の案を読むのが数分、印の付いた店の原文を開くのが十数分という想定で、原文を開く店が多い月は、報告の様式か、計算の閾値を見直します。
例外に対処する
| 起きること | 対応 |
|---|---|
| 報告が締切までに届かない | 未提出の一覧に載せ、訪問予定表の先頭に出す |
| バッチの一部が期限切れになる | 期限切れの店だけを再投入する。期限切れの要求は課金されないとされる |
| バッチの一部がエラーになる | エラーの種別を見て、入力を直して再投入する |
| 自由記述が空欄 | 要約は「報告に記載なし」とし、数値の印だけを渡す |
| 報告の数値が POS と大きく違う | 印を付け、要約より先に表示する |
| 開店から13か月に満たない | 前年比を空にし、前月比だけを渡す |
negotiation と agenda が重なる | agenda の側から外す |
| 自由記述に事故・食中毒・けがの記載 | 要約とは別に、品質管理の担当へ即日知らせる |
| 結果の取り出しを忘れたまま29日を過ぎる | 結果が取り出せなくなる。受け取ったらすぐ自社に保存する |
8行目は、バッチの流れとは別に作ります。 報告に「お客様が体調を崩したと連絡があった」とあれば、月次の要約を待っている時間はありません。 報告が届いた時点で、決めた言葉を含むものを規則で拾い、担当へ回します。
記録を残す
- 当月の報告の原文と、取り出した日時
- 計算した数値(前月比・前年比・報告と POS の差)と、計算に使った POS の値
- バッチの番号、店ごとの
custom_id、結果の種別、返ってきたJSONの全文 - 照合の結果(数値要確認・引用要確認の印)
- スーパーバイザーが決めた論点と、AIの案から入れ替えた理由
- 協議の申し入れの一覧と、受けた日・対応者・結果
3つ目は、バッチの結果が29日で取り出せなくなるため、自社の側に必ず残します。 公式のページは、バッチの要求と応答のデータを作成から最大29日保存するとしています。後から「AIが何と書いたか」を確かめる手段は、自社の保存だけになります。
最後の行は、ほかの記録と別の扱いにします。 協議の申し入れへの対応は、加盟店との関係で後から説明を求められうる記録です。保存の期間を、契約の書類と同じ考え方で決めておきます。
04実装レベルの3段階
最小構成では240店をさばけません。 確かめるための段階です。 半自動化で、1件30分が20分程度になります。 数値の見比べはなくなりますが、結果を訪問予定表に写す作業と、要望を部署に伝える作業が残ります。本格構成で12分になり、この段階が本記事の想定です。 差が大きいのは、振り分けが自動になり、スーパーバイザーが要望の伝達を担わなくなるからです。 半自動化を2か月回してください。 その間に、論点の案のうちスーパーバイザーが入れ替えたものと理由を集め、指示と支援策の一覧を直してから本格構成に進みます。
05工数削減シミュレーション
導入後 240件 × 12分 ÷ 60 = 48 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 加盟店が100店を超え、毎月の報告をフォームや表計算の様式で集めている飲食・小売・学習塾などのフランチャイズ本部。スーパーバイザー1人が20店前後を受け持ち、訪問の前に報告を読み込む時間が取れていない場合。POS の売上を本部で集計できており、報告の数値と突き合わせられる場合。
- 加盟店が数十店で、スーパーバイザーが報告を全部読める場合。報告が数値だけで自由記述の欄が無い場合(集計の仕組みで足ります)。なお、加盟店との契約や取引条件に関わる判断、オーナーからの協議の申し入れへの対応は、この構成では代替できません。
07最小構成で試す方法
- 先月の報告から20店を選ぶ(自由記述が長い店、短い店、営業時間の相談が書かれた店を混ぜる)
- その20店について、スーパーバイザーが実際に訪問で話した論点を聞き取る
- スタッフの名前を記号に置き換えた報告と、前月比・前年比の数値を、手元の Claude の画面に1店ずつ貼る
- 第7章の指示の例をそのまま使い、要約と論点の案を出させる
- 出てきた論点の案を、実際に話した論点と並べる
見るのは、実際に話した論点と重なるかどうかよりも、話さなかった論点に意味があるかです。 スーパーバイザーが見落としていた困りごとをAIが拾っていれば、それがこの構成の価値です。
| 出てきた内容 | 判断 |
|---|---|
| 実際の論点と重なり、見落としも拾った | Message Batches API での自動化に進む |
| 数値を計算し直している | 指示の書き方で直る。計算済みの値だけを使わせる |
| 営業時間の相談が論点に入った | negotiation の分け方を見直す。ここは直るまで進まない |
3行目が出たら、そこで止めてください。 協議の申し入れが論点に混ざる形のまま自動化すると、スーパーバイザーが訪問の場で本部の方針のように答える経路ができます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが前年比を計算し直す | 計算済みの値を渡し、metric_value を照合する |
| 営業時間の相談が論点に入る | negotiation に分け、重なりを機械で外す |
| 論点が指示の形になる | 「確かめる」形を指示し、「減らすよう指導」などの語を照合で拾う |
| 結果を店に戻せない | 順番に頼らず custom_id で戻す |
custom_id で弾かれる | 英数字・ハイフン・アンダースコア、1〜64文字に揃える |
| 結果が29日で取り出せなくなる | 受け取った日に自社に保存する |
| 自由記述の短い店の要約が膨らむ | 「報告に記載なし」を明記させる |
| 未提出の店が一覧から消える | 未提出の一覧を先頭に出す |
| 支援策の一覧が古い | 店舗運営部が月1回更新する |
| スーパーバイザーが論点を入れ替えた理由が残らない | 理由の列を作り、一言でよいので書く |
上の3行が、この構成の信頼を決めます。 数字を間違えた論点が1回でも訪問の場に出ると、スーパーバイザーは要約を読まなくなります。営業時間の相談が論点に混ざると、本部として説明できない対応が記録に残ります。
「論点が指示の形になる」は、気づきにくい失敗です。 文面は丁寧でも、中身が本部から加盟店への指示になっていれば、受け取る側にはそう読めます。
報告の様式を変えるときは、このしくみの入力も同時に変わります。 欄を足したり名前を変えたりすると、書き出しの CSV の列がずれ、AIには「人のこと」の欄に売上の数値が入った報告が渡ります。 様式の変更は経営企画の手順に、書き出しの列の確認と、5店での試しの実行を含めておきます。様式の改定は、加盟店に記入のしかたをそろえてもらう機会でもあり、第2章で書いた欄の読み違いを減らせます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 加盟店の売上・原価・人件費、オーナーの困りごと、スタッフの採用や退職の事情、そして本部と加盟店の取引条件に関わる申し入れです。
- スタッフの個人の情報を外へ出さない … 氏名は記号に置き換えます。スタッフは加盟店に雇われている人で、本部の要約に名前が残る必要はありません。 高校生のアルバイトが含まれうる点にも注意します
- 協議の申し入れを論点にしない … 第7章のとおり、
negotiationは責任者へ別に届けます。営業時間・見切り販売・仕入の数量に関わる本部の行為は、公正取引委員会の考え方が具体的に取り上げている領域です - AIの要約をオーナーの評価に使わない … 報告は店の状況を知るために集めています。要約や論点の案を、更新の判断やオーナーの評価に直接使わないでください
- 加盟店ごとの数値を他の加盟店に見せない … 訪問予定表は受け持ちのスーパーバイザーだけが見られるようにします
- バッチの保存期間を知っておく … バッチの要求と応答は作成から最大29日保存されるとされています。入力に個人名を残さないことが、ここでも効きます
- この構成は本部の判断を代替しません … 論点をどうするか、申し入れにどう応じるかは、スーパーバイザーと本部の責任者が決めることです
誤りが起きた場合のリスクは、誤った数字を根拠に訪問で話すことと、申し入れを訪問の場で処理してしまうことの2つです。 前者は計算をAIから外すことで、後者は申し入れを別の流れにすることで防ぎます。
10まず何から始めるか
1週目:本部の支援策の一覧を作る
採用の支援、販促の支援、設備の相談、メニューの相談など、本部が加盟店に用意している支援を一覧にします。 名前と、どの困りごとに当てるかを1行ずつ書きます。
2週目:20店で試す
先月の報告から20店を選び、手元の Claude の画面で要約と論点の案を出させます。実際に話した論点と並べ、見落としていた困りごとを拾えたか、営業時間の相談が論点に混ざらなかったかを見ます。
3週目:協議の申し入れを受ける体制を決める
誰が受け、何日以内に返事をし、どこに記録するかを、店舗運営部の責任者と決めます。ここが決まらないうちに自動化すると、申し入れの一覧が誰にも読まれずに積み上がります。
4週目:計算と要約の一覧をつなぐ
加盟店ポータルと POS 集計の書き出しから、Python で数値を計算し、API で1店ずつ要約して一覧にするところまで作ります。この時点ではバッチを使わず、結果をスーパーバイザー2〜3名に見てもらいます。
2か月目: Message Batches API に切り替え、訪問予定表・受付の一覧・責任者への振り分けを足します。3か月目以降: スーパーバイザーが入れ替えた論点と理由を集め、指示と支援策の一覧を直します。1件30分が何分になったかを実測し、要望と申し入れが毎月同じ仕組みで届くようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
Message Batches API が要求を非同期でまとめて処理し、費用が通常の50%であること。1つのバッチが10万件か256MBまでであること。大半が1時間以内に終わり、24時間以内に終わらなければ期限切れになること。結果が作成から29日間取り出せること。結果が要求の順に返るとは限らず custom_id で結び付けること。custom_id が英数字・ハイフン・アンダースコアで1〜64文字であること。期限切れの要求は課金されないこと。要求と応答のデータを最大29日保存すること | Claude Docs: Batch processing | 2026-10-28 |
構造化出力が output_config.format に type: "json_schema" で指定すること。配列の minItems が 0 と 1 のみであること | Claude Docs: Structured outputs | 2026-10-28 |
| 平成14年4月24日に公表され、令和3年4月28日などに改正されたこと。本部が営業時間の短縮を合意すれば認めるとしているのに、加盟者からの協議を正当な理由なく一方的に拒絶し、従前の営業時間を受け入れさせること、見切り販売を正当な理由なく制限して廃棄を余儀なくさせること、販売に必要な範囲を超えて仕入数量を指示することなどを取り上げていること | 公正取引委員会: フランチャイズ・システムに関する独占禁止法上の考え方 | 2026-10-28 |
加盟店との取引条件に関わる判断は、本部の責任者と顧問弁護士で行ってください。 本記事は公正取引委員会の公開資料で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2191)についてのご相談はこちらから。
