ワイナリーが酒販店・飲食店から届く注文メールを Make で受け、銘柄・本数・納品日を取り出して出荷の予定と在庫の引当の案を作る
ワイナリーに酒販店・飲食店から届く注文のメールを Make で受け、銘柄・ヴィンテージ・本数・納品の希望日・届け先を取り出します。在庫の表から引当の案を、配送の日数の表から出荷の予定日の案を作り、受注の確認の返信を下書きします。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Make/n8n/Power Automate/Zapier
- 対象業界
- 商社/小売/製造/飲食
- 対象部門
- 営業/物流
- 対象業務
- データ入力・転記/内容確認・チェック
- 主な課題
- 人手が足りない/入力作業が多い/確認ミスが多い
- AIで行う処理
- 抽出
- 主な効果
- 入力漏れ削減/対応スピード向上/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- ノーコード連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 営業の担当が受注の代表アドレスを開き、注文のメールを読む
- 銘柄・ヴィンテージ・容量・本数を拾い、商品マスタで品番を探す。「いつもの」とあれば受注台帳で前回の注文を探す
- 在庫の表で引当できる本数を確かめる。足りなければ、別のヴィンテージや別の品目を考える
- 納品の希望日と届け先の地域から、出荷する日を決める
- 受注台帳に1行ずつ書き込み、在庫の表の引当済を増やす
- 受注の確認の返信を書いて送る。欠品があれば代わりの品目を提案する
- 出荷の担当が受注台帳を見て、出荷の日ごとに準備をする
- 自動受注の代表アドレスに届いた注文のメールに Gmail のフィルタでラベルが付き、Make のシナリオがそれを拾う
- 自動受注台帳を引き、同じメールをすでに扱っていれば止める
- 自動送信元のアドレスで取引先の一覧を引き、取引先のコード・届け先・直近の注文を取る
- 自動Claude API が、メールの本文から注文の明細を取り出し、商品マスタの候補の品番に結び付ける。書かれていたか、過去の注文から補ったかに印を付ける
- 自動ワークフローが、品番ごとに在庫の表の引当できる本数と割当ての表を引き、足りるかを数える
- 自動届け先の地域の配送の日数と出荷の曜日から、出荷の予定日の案を出す
- 自動結果から、そのまま確認の返信を出せる注文・確かめが要る注文・担当が見る注文に分ける
- 自動受注台帳に「仮」の行を書き、在庫の表の引当済を仮で増やし、確認の返信を下書きする
- 人営業の担当が下書きを確かめて送り、受注台帳の行を「確定」にする
- 人出荷の担当が出荷の日ごとの一覧を確かめ、出荷の後に台帳と帳簿に記録する
各工程の詳しい説明を読む
- 営業の担当が受注の代表アドレスを開き、注文のメールを読む
- 銘柄・ヴィンテージ・容量・本数を拾い、商品マスタで品番を探す。「いつもの」とあれば受注台帳で前回の注文を探す
- 在庫の表で引当できる本数を確かめる。足りなければ、別のヴィンテージや別の品目を考える
- 納品の希望日と届け先の地域から、出荷する日を決める
- 受注台帳に1行ずつ書き込み、在庫の表の引当済を増やす
- 受注の確認の返信を書いて送る。欠品があれば代わりの品目を提案する
- 出荷の担当が受注台帳を見て、出荷の日ごとに準備をする
(a)注文の書き方がばらばらで、読み解きに時間がかかる。 「赤の重めのやつ」「この前試飲したスパークリング」と書かれた注文は、受注台帳と取引先とのやり取りをさかのぼらないと品番が決まりません。 1件ごとの判断は小さくても、毎日何十件も続きます。
(b)ヴィンテージを取り違える。 新しい年を出した直後の週は、同じ銘柄の2つの年が在庫の表に並びます。 注文に年が書かれていないと、担当によって新しい年を引いたり古い年を引いたりします。取引先のワインリストに載っている年と違うものが届くと、店はリストを刷り直すことになります。
(c)在庫の残りを数え違えて、欠品の連絡が遅れる。 2人の担当が同じ品目の注文を同時に受けると、それぞれが同じ残りを見て引き当ててしまうことがあります。 足りないことに気づくのが出荷の日になり、取引先への連絡が納品の前日になります。
(d)出荷の日の決め方が人によって違う。 配送の日数と出荷の曜日からの逆算を、担当が頭の中でしています。配送に日数のかかる地域を知らない担当もいます。
- 【自動】 受注の代表アドレスに届いた注文のメールに Gmail のフィルタでラベルが付き、Make のシナリオがそれを拾う
- 【自動】 受注台帳を引き、同じメールをすでに扱っていれば止める
- 【自動】 送信元のアドレスで取引先の一覧を引き、取引先のコード・届け先・直近の注文を取る
- 【自動】 Claude API が、メールの本文から注文の明細を取り出し、商品マスタの候補の品番に結び付ける。書かれていたか、過去の注文から補ったかに印を付ける
- 【自動】 ワークフローが、品番ごとに在庫の表の引当できる本数と割当ての表を引き、足りるかを数える
- 【自動】 届け先の地域の配送の日数と出荷の曜日から、出荷の予定日の案を出す
- 【自動】 結果から、そのまま確認の返信を出せる注文・確かめが要る注文・担当が見る注文に分ける
- 【自動】 受注台帳に「仮」の行を書き、在庫の表の引当済を仮で増やし、確認の返信を下書きする
- 【人】 営業の担当が下書きを確かめて送り、受注台帳の行を「確定」にする
- 【人】 出荷の担当が出荷の日ごとの一覧を確かめ、出荷の後に台帳と帳簿に記録する
4番目と5番目を分けているのが、この設計の分かれ目です。 AIが返すのは「この注文には何が、何本、いつまでに、と書かれていたか」だけで、引き当てられるかは在庫の表の式で決まります。 品目の入れ替えやヴィンテージの切り替えがあっても、直すのは商品マスタと在庫の表だけです。
02今回想定するシステム構成
注文のメール(酒販店・飲食店・ホテル → 受注の代表アドレス) ▼【トリガー】Gmail:Watch emails(ラベル「注文」) Make のシナリオ(15分おき) ├──▶ Google Sheets:Search Rows(受注台帳・取引先の一覧・商品マスタ) ├──▶ Claude API(Make an API Call):注文の明細の取り出しと品番の候補 ├──▶ Google Sheets:Search Rows(在庫の表・割当ての表・配送の日数の表) ├──▶ 引当できる本数と出荷の予定日の計算 ├──▶ Router │ ├ 担当が見る(割当ての超過・品番が決まらない・新しい取引先) → 担当へ通知 │ ├ 確かめが要る(補った品番・欠品・希望日に間に合わない) → Gmail:Create a draft email │ ├ そのまま確認できる → Google Sheets:Add a Row + Gmail:Create a draft email │ └ フォールバック → 担当へ └──▶ Google Sheets:Update a Row(在庫の表の引当済を仮で増やす)
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| ワークフロー | Make(シナリオ。Gmail、Google Sheets、ルーター) | Zapier、n8n、Power Automate |
| 生成AI | Claude API(Messages API、構造化出力) | OpenAI API、Gemini API |
| 保管 | Google スプレッドシート(商品マスタ・在庫の表・受注台帳・取引先の一覧・割当ての表・配送の日数の表) | Airtable |
| メール | Gmail(受注の代表アドレス) | Microsoft Outlook |
新しく足すのは、シナリオと、割当ての表と配送の日数の表だけです。 商品マスタと在庫の表と受注台帳は、いまのスプレッドシートに「別名」「状態」の列を足して使います。この構成が書き込むのは、受注台帳の仮の行、在庫の表の仮の引当、Gmail の下書きだけです。 返信は送りません。
入口は Gmail の Watch emails です。 Make の公式のページでは、Watch emails はフォルダとラベル、送信元のアドレス、件名、含む語、添付の有無で絞れ、1回に取り込む件数の上限(Limit)は500以下で指定するとされています。注文の集まる月曜の朝に一度に何十件も取り込むと在庫の表の書き込みが重なるので、Limit を小さめにして、1回の実行で扱う件数を絞ります。
取り出しは Claude API で行います。 Make の Anthropic Claude のアプリには Create a Prompt や Make an API Call などのモジュールがありますが、公式のページには Create a Prompt が構造化出力に対応するかの記載がありません。 この構成では Make an API Call で Messages API を呼び、output_config.format に JSON スキーマを書きます。
返信は Create a draft email で下書きにします。 公式のページでは、Create a draft email にはスレッドの ID を渡す欄があります。注文のメールと同じスレッドに下書きを置くと、担当は元の注文を見ながら確かめられます。
03どうやって実装するのか
処理の起点を決める
受注の代表アドレスに届いたメールのうち、ラベル「注文」が付いたものを起点にします。 ラベルは Gmail のフィルタで付けます。送信元が取引先の一覧にあるアドレスで、件名か本文に「注文」「発注」「お願いします」「本」「ケース」が含まれるものです。取引先からのメールでも、請求や試飲会の案内は注文ではないので、ラベルの条件で外します。
シナリオは15分おきに動かします。飲食店は営業の前に「今日の夕方までに」と書いてくることがあるので、1日数回のまとめ処理にはしません。 15分おきでも、いま担当が手の空いたときに読んでいるより早く下書きが出ます。
処理が終わったメールには、ラベル「注文・処理済」を付け直します(Update email labels)。付け直すのは受注台帳に行を書けたときだけです。 ラベル「注文」が残っている数が、そのまま未処理の数になります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 注文のメール | 件名、本文(返信の引用を除いたもの)、送信元、受信日時、メッセージの ID、スレッドの ID | Gmail |
| 取引先の一覧 | 取引先のコード、名前、送信元のアドレス、届け先(複数あれば店舗ごと)、地域、限定品の割当ての有無 | 取引先の一覧のシート |
| 商品マスタ | 品番、銘柄、色、ヴィンテージ、容量、ケースの入数、取引先が使う別名、販売の状態(販売中/終売) | 商品マスタのシート |
| 直近の注文 | その取引先の直近5回の注文の品番と本数 | 受注台帳のシート |
質を決めるのは、商品マスタの「別名」の列です。 飲食店は銘柄の正式な名前ではなく、「畑の名前の赤」「樽のシャルドネ」のように呼びます。別名の列にこうした呼び方を書き足しておくと、AIは別名から品番の候補を挙げられます。 別名に無い呼び方は候補が出ず、担当へ回ります。
ケースの入数も欠かせません。 「2ケース」と書かれた注文は、750mL なら12本入りで24本、375mL なら24本入りで48本です。本数への換算は、AIではなくワークフローが入数を掛けて行います。 AIには「2」と「ケース」を分けて返させます。
データの取得方法を決める
| 取るもの | どこから | どうやって |
|---|---|---|
| 注文のメール | Gmail | Watch emails(ラベル「注文」) |
| 取引先 | 取引先の一覧のシート | Search Rows(送信元のアドレス) |
| 商品マスタ | 商品マスタのシート | Search Rows(販売中の行をすべて) |
| 直近の注文 | 受注台帳のシート | Search Rows(取引先のコード、新しい順に5件) |
| 引当できる本数 | 在庫の表のシート | Search Rows(AIが返した品番) |
| 割当ての残り | 割当ての表のシート | Search Rows(取引先のコードと品番) |
| 配送の日数 | 配送の日数の表のシート | Search Rows(届け先の地域) |
商品マスタは販売中の品目だけを渡します。 約40品目なので、別名を含めても1回の呼び出しに収まります。終売の品目を渡すと、昔の呼び方で終売の品番を候補に挙げてしまいます。
在庫の表の引当できる本数は、シートの式で出しておきます。 シナリオはその値を読むだけにし、Make の中で在庫を数え直しません。 電話で受けた注文を担当が手で台帳に書いたときも、同じ式に入るからです。
AIへ渡す前に整形する
- 重複の確認 … メッセージの ID で受注台帳を引き、行があれば止めます
- 返信の引用を落とす … 取引先が前回の確認の返信に返事をしてくると、下に前回の注文の全文が付いてきます。引用を落とし、今回書かれた部分だけにします
- 署名を落とす … 店の住所と電話番号の入った署名は、届け先の候補と紛れます。署名の区切り線から下を落とします
- 取引先の特定 … 送信元のアドレスで取引先を引きます。一覧に無いアドレスは、AIを呼ばずに担当へ回します
- 添付の確認 … 注文書の PDF や表が添付されていれば、本文と添付のどちらが注文かを担当に回して決めます(List email attachments and media で有無を見ます)
2番目を落とすと、前回の注文をもう一度受けてしまいます。 「ありがとうございます。追加で白を3本お願いします」という返事の下に前回の24本の明細が付いていると、引用を残したまま渡せば、24本と3本の両方を注文として読みます。
AIに処理させる
させるのは、注文の明細を取り出すことと、商品マスタの候補の品番に結び付けることの2つです。
| 項目 | させること | 判断できないときの扱い |
|---|---|---|
| 銘柄 | メールに書かれた呼び方を写し、商品マスタの銘柄か別名から品番の候補を挙げる | 候補が無ければ item_code を空 |
| ヴィンテージ | 書かれていれば写す | 書かれていなければ null |
| 容量 | 750mL・375mL・マグナムなど、書かれていれば写す | 書かれていなければ null |
| 数量と単位 | 数と単位(本/ケース)を分けて写す | 単位が無ければ unit を unknown |
| 納品の希望日 | 日付に直す。「来週の金曜」はメールの受信日から直す | 幅があれば date_text に写して date を空 |
| 届け先 | 取引先の届け先のどれかを選ぶ | 書かれていなければ default |
| 根拠 | 明細ごとに stated(書かれていた)/inferred_from_history(過去の注文から補った) | 迷えば inferred_from_history |
stated と inferred_from_history を分けるのが、この構成でいちばん大事な区別です。 「いつもの赤を6本」とあれば、直近の注文から赤の品番を補えます。ただし、補ったものは書かれていたものではありません。 前回の注文が古いヴィンテージだったら、補った品番は古い年になります。inferred_from_history の明細は、返信の下書きで「前回と同じ〇〇の2023年でよろしいでしょうか」と確かめます。
ヴィンテージは、とくに推し量らせません。 年が書かれていない注文で、在庫の表に2つの年が並んでいても、AIに「新しいほう」を選ばせません。null のまま返させ、どちらを出すかは商品マスタの「優先して出す年」の列でワークフローが決めます。 切り替えの時期をいつにするかは、営業の責任者が決めることだからです。
| させないこと | 理由 |
|---|---|
| 引当てられるかを決める | 在庫の表の式で決める |
| ケースを本数に直す | 入数を掛ける計算はワークフローで行う |
| 欠品のときに代わりの品目を選ぶ | 代わりの候補は商品マスタの「代替の候補」の列から出す。勧めるかは営業が決める |
| 限定品の割当てを超えるかを決める | 割当ての表で数え、超えたら責任者へ |
| 価格や値引きに答える | 取引の条件は営業が決める |
指示内容を固定する
あなたはワイナリーの営業部で、取引先から届いた注文のメールを
受注台帳に起こす担当です。下に渡すメールの本文から注文の明細を取り出し、
商品マスタの品番の候補に結び付けてください。
在庫があるか、出荷できるかは判断しないでください。
【すること】
1. 注文された品目ごとに1つの明細を作る。
2. 明細ごとに、メールに書かれた呼び方(written_name)をそのまま写す。
3. 商品マスタの銘柄と別名から、品番の候補(item_code)を1つ選ぶ。
候補が2つ以上あれば candidates に並べ、item_code は空にする。
4. ヴィンテージ・容量は、書かれていれば写す。書かれていなければ null。
5. 数量は数(qty)と単位(unit:bottle/case/unknown)に分けて写す。
ケースを本数に直さない。
6. 納品の希望日を日付に直す。「来週の金曜」などは受信日を基準に直す。
「月末まで」「来週中」のように幅があるときは date を空にし、
date_text に原文を写す。
7. 明細ごとに source を付ける。
- stated:品目がメールに書かれていた
- inferred_from_history:「いつもの」「前回と同じ」などで、
直近の注文から品目を補った
【厳守事項】
- ヴィンテージが書かれていなければ null にする。在庫の表や
直近の注文から年を補わない。新しい年を選ばない。
- 「いつもの」「前回の」から補った明細は、必ず inferred_from_history にする。
stated にしない。
- 商品マスタにない呼び方は、似ている品番に寄せない。item_code を空にし、
candidates も空にする。
- 数量が書かれていない品目は qty を null にする。1本と決めない。
- 価格、値引き、支払いの条件については何も書かない。
- 注文の取り消しや変更の依頼であれば、intent に cancel または change と書く。
- 確かめたいことは questions に、取引先への質問の形で書く。
【商品マスタ(販売中の品目)】{item_master}
【この取引先の直近の注文】{recent_orders}
【この取引先の届け先】{destinations}
【メールの受信日】{received_date}
【注文のメール】{mail_body}
「新しい年を選ばない」を書くのは、AIが親切に埋めようとするからです。 何も言わなければ、在庫の表にない情報でも「通常は最新のヴィンテージ」と考えて年を入れます。入れられた年は、確かめの対象から外れてしまいます。
「似ている品番に寄せない」も同じ理由です。 「樽の白」と書かれた注文に、別名が登録されていない樽熟成のシャルドネがあると、AIは寄せたくなります。寄せずに空にさせ、担当が別名の列に書き足します。 書き足した呼び方は次から候補に出ます。
出力形式を固定する
次の形の JSON を返させます。
{
"message_id": "",
"intent": "order | change | cancel | other",
"lines": [
{
"written_name": "いつもの赤",
"item_code": "R-HATAKE-750",
"candidates": [],
"vintage": null,
"volume": null,
"qty": 6,
"unit": "bottle | case | unknown",
"source": "stated | inferred_from_history",
"evidence": "いつもの赤を6本お願いします"
}
],
"delivery": { "date": "2026-11-06", "date_text": "", "destination": "default" },
"questions": ["前回と同じ畑の赤の2023年でよろしいでしょうか。"]
}
1つ目の理由は、取り出しと引当を別の層に置けることです。 lines はAIが埋め、引き当てられるか・出荷はいつかはワークフローが表と式で決めます。規則は次のとおりです。
| 振り分け | 条件 |
|---|---|
| 担当が見る | intent が change/cancel、item_code が空、限定品の割当てを超える、新しい届け先 |
| 確かめが要る | inferred_from_history が1つでもある、vintage が null で在庫に2つの年がある、引当できる本数が足りない、出荷の予定日が希望日に間に合わない、qty が null |
| そのまま確認できる | 上のどれにも当たらない |
2つ目は、数の確かめをワークフローで行えることです。 unit が case なら入数を掛けて本数にし、在庫の表の引当できる本数と比べます。公式のページでは、構造化出力は数値の minimum・maximum のような制約に対応せず、使うと 400 のエラーになるとされています。数量が0や桁違いでないかは、Make の式で確かめます。
3つ目は、選んだ値の照らし方を決めておけることです。 公式のページでは、構造化出力は文字列の enum の大文字・小文字までは保証しないとされています。ルーターで比べる前に、source と unit を小文字にそろえます。
出荷の予定日は、ワークフローが出します。 配送の日数の表で届け先の地域の日数を引き、希望日から引いた日より前で、いちばん近い出荷の曜日(火・水・金)を選びます。その日が今日の出荷の締めを過ぎていれば、間に合わないとして確かめが要るに回します。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| Gmail | Watch emails/Create a draft email/Update email labels | 注文を受け、同じスレッドに下書きを置き、処理済の印を付ける |
| 取引先の一覧・商品マスタ | Google Sheets の Search Rows | 取引先と品目を引く |
| 在庫の表・割当ての表・配送の日数の表 | Google Sheets の Search Rows/Update a Row | 引当できる本数を読み、仮の引当を書く |
| 受注台帳 | Google Sheets の Search Rows/Add a Row | 重複を確かめ、仮の行を書く |
| Claude API | Anthropic Claude の Make an API Call | 明細の取り出しと品番の候補 |
ルーターのルートは、担当が見る→確かめが要る→そのまま確認できる→フォールバックの順に並べます。 公式のページでは、ルートは同時ではなく1本ずつ順に処理され、どの条件にも当たらないデータはフォールバックのルートが処理するとされています。取り消しや割当ての超過の注文が、仮の引当まで流れないように、担当が見るルートを先頭に置きます。
仮の引当は、受注台帳に行を書けたときだけ在庫の表に反映します。 受注台帳の行には「仮」の印と書いた日時を付け、3営業日たっても確定にならない行は、毎朝の別のシナリオで引当を戻します。 確かめの返信に取引先が答えないまま、在庫が押さえられ続けるのを防ぎます。
確かめが要る注文でも、引き当てられる明細は仮で引き当てます。 「いつもの赤」の確かめを待つ間に、別の店の注文で同じ品目の最後の数本が出てしまわないようにするためです。
人が確認する
営業の担当が、すべての下書きを確かめてから送ります。 送るのは人で、この構成は送りません。
- 担当が見る注文を先に見る … 取り消し・変更、品番の決まらない明細、割当ての超過です。割当ての超過は営業の責任者に回します
- 補った明細を確かめる …
inferred_from_historyの明細で、補った品番とヴィンテージが取引先の店のリストに合っているかを見ます。返信の下書きの確かめの一文は消さずに送ります - 欠品と出荷日を確かめる … 足りない明細に代わりの品目を勧めるか、入荷を待ってもらうかを決めます
- 送って確定にする … 下書きを送り、受注台帳の行を「確定」にします
出荷の担当は、出荷の前日に出荷の日ごとの一覧を確かめます。 一覧に載るのは「確定」の行だけです。出荷した後に、出荷の担当が台帳と帳簿に記録します。 酒税法は、酒類の製造者が製造場から移出した酒類について酒税を納める義務を負い、製造・貯蔵・販売に関する事実を帳簿に記載しなければならないと定めています。この構成が作るのは引当と出荷の予定の案で、帳簿の記載はその案ではなく、実際に出荷した記録から人が行います。
例外に対処する
| 起きること | 対応 |
|---|---|
| 送信元が取引先の一覧に無い | AIを呼ばずに担当へ。新しい取引先として営業が受ける |
| 注文書が添付されている | 本文と添付のどちらが注文かを担当が決める |
item_code が空(別名に無い呼び方) | 担当へ。担当が品番を決め、商品マスタの別名に書き足す |
| ヴィンテージが無く、在庫に2つの年がある | 商品マスタの「優先して出す年」で仮に引き当て、返信で確かめる |
| 引当できる本数が足りない | 引き当てられる分だけ仮で引き当て、残りは「代替の候補」の列を添えて確かめが要るへ |
| 希望日に間に合わない | いちばん早い出荷の予定日を添えて確かめが要るへ |
| 同じ取引先から追加の注文が続けて届く | 前の注文と別の行にし、返信の下書きに両方の明細を並べる |
stop_reason が refusal か max_tokens | JSON を読まずに担当へ |
| Claude API が応答しない | ラベル「注文」を残し、次の実行で拾い直す |
上から3行目までが大半を占めます。 どれもAIの誤りではなく、取引先の一覧と商品マスタの別名の整え方の問題です。 担当へ回る注文が多い週は、別名の列に何を書き足したかを数えると、整い具合が分かります。
記録を残す
- 注文のメールの本文(引用を落とす前のもの)と、メッセージの ID・スレッドの ID
- AIに渡した商品マスタの版と、直近の注文
- 返ってきた JSON の全文と
stop_reason - ワークフローが出した本数の換算、引当できる本数、出荷の予定日と、そのときの在庫の表の値
- 送った返信の本文と、担当が下書きから直した箇所
- 仮の引当を書いた日時と、確定・戻しの日時
4つ目で「そのときの在庫の表の値」を残すのは、欠品の連絡が遅れたときに理由を追うためです。 引き当てた時点で足りていたのか、後から別の注文で減ったのかが分かります。
04実装レベルの3段階
最小構成では件数がさばけません。 月360件を1件ずつ貼るのは続きません。補った明細とヴィンテージの扱いを確かめるための段階です。 半自動化で、1件8分が2分になり、この段階が本記事の想定です。 注文の読み取り、品番の結び付け、引当の確かめ、出荷の予定、台帳の記入、下書きが自動になり、人に残るのは、下書きの確かめと送信、担当が見る注文の判断です。 本格構成は、半自動化を2か月回してからにします。 返事を読み違えると、確かめの済んでいない注文を確定にします。
05工数削減シミュレーション
導入後 360件 × 2分 ÷ 60 = 12 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 酒販店・飲食店・ホテルなどへ自社のワインを直接卸していて、注文が電話よりもメールで届くことが多く、月に数百件の注文を少人数の営業と出荷の担当で受けているワイナリー・酒蔵・クラフトビールの醸造所。注文の書き方が取引先ごとにばらばらで、「いつもの赤を6本」のような書き方を担当が過去の注文から読み解いている場合。在庫と出荷の予定を Google スプレッドシートで持っている場合。
- 注文の大半が卸売業者の発注システムや EDI で届き、品番と数量がすでに決まった形で入ってくる場合。取引先が十数社で、注文が月に数十件しかない場合。在庫を基幹システムで持ち、引当がそちらで自動に行われている場合(基幹システムとの連携の設計が別に要ります)。なお、限定品の割当の配分、価格の取り決め、酒税の申告と帳簿への記載は、この構成では代替できません。
07最小構成で試す方法
- 先月届いた注文のメールから30件を選ぶ(「いつもの」「前回と同じ」の注文、ヴィンテージの書かれていない注文、ケースで書かれた注文を混ぜる)
- 30件について、当時の担当がどの品番・何本で受注台帳に書いたかを書き出す
- 商品マスタ(別名の列を含む)と第7章の指示を、手元の Claude の画面に貼る
- 30件のメールを1件ずつ貼り、その取引先の直近の注文も添えて、明細を書かせる
- 当時の受注台帳と突き合わせ、補った明細に
inferred_from_historyが付いているか、ヴィンテージを勝手に埋めていないかを1件ずつ確かめる
30件は必ずやってください。 シナリオを組む前に、書かれていないヴィンテージを書かれていないと返せるかを確かめます。
| 出てきた内容 | 判断 |
|---|---|
| 当時の受注台帳と同じ品番と本数が出た | シナリオの組み立てに進む |
| ヴィンテージを最新の年で埋めた | 禁止の書き方を指示に足す。構成は有効 |
| 品番の候補が出ない明細が多い | 商品マスタの別名が先。 取引先の呼び方を書き足す |
3行目が出ることは珍しくありません。 失敗ではなく、担当の頭の中の呼び方が表に出ていなかったということです。 別名を書き足して、同じ30件でもう一度試してください。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| ヴィンテージを最新の年で埋める | 書かれていなければ null。出す年は商品マスタの列で決める |
| 「いつもの」で補った品番がそのまま引き当てられる | inferred_from_history を付け、返信で必ず確かめる |
| ケースと本数を取り違える | 数と単位を分けて返させ、入数を掛けるのはワークフロー |
| 前回の注文の引用を今回の注文として読む | 引用を落としてから渡す |
| 署名の住所を届け先として読む | 署名を落とし、届け先は取引先の一覧から選ばせる |
| 同じ品目の最後の数本を2件に引き当てる | 1回の実行の件数を絞り、仮の引当を書いてから次の注文へ |
| 仮の引当が残り続けて在庫が減って見える | 3営業日で戻す |
Case が返ってルーターから落ちる | 小文字にそろえてから比べる |
| 数値の範囲をスキーマに書いて 400 になる | 範囲の確かめは Make の式で行う |
| 別名に無い呼び方を似た品番に寄せる | 寄せずに空にさせ、担当が別名に書き足す |
上の2行が、この構成の失敗のほとんどです。 どちらも「書かれていないものを書かれていたように扱う」ことから起き、取引先には違う年や違う品目が届くという形で表に出ます。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 取引先の名前、担当者の名前とメールアドレス、届け先の住所、注文の品目と本数、限定品の割当てです。個人の消費者の情報は扱いません。
- AIに渡すのは、注文の本文と商品マスタと直近の注文だけにする … 届け先の住所と電話番号は取り出しに要りません。届け先は取引先の一覧の名前(店舗名)だけを渡し、住所はワークフローが差し込みます
- 価格と取引の条件を AI に扱わせない … 取引先ごとの卸値や値引きは、商品マスタにも渡しません。返信の下書きにも価格を書かせません
- 返信を自動で送らない … 受注の確認の返信は取引先への約束です。補った品目や代わりの品目を、人が見ずに約束しないでください
- 限定品の割当ての配分は人が決める … 割当ての表は数えるためにだけ使い、超えた注文にどう配るかは営業の責任者が決めます
- 酒税と帳簿の記録は、実際の出荷から人が行う … 酒税法は、製造場から移出した酒類に酒税を納める義務と、製造・販売に関する事実を帳簿に記載する義務を定めています。引当の案や出荷の予定の案は帳簿の元にせず、出荷の担当が実際に出したものを記録します
誤りが起きた場合のリスクは、違うヴィンテージや違う品目を約束することと、同じ在庫を二重に約束することの2つです。 前者は stated と inferred_from_history の区別と人の確かめで、後者は仮の引当と取り込む件数の絞り込みで防ぎます。どちらもAIの賢さではなく、設計の側で守ります。
10まず何から始めるか
1週目:商品マスタに別名を書き足す
営業の担当2名で、取引先が使っている呼び方を商品マスタの別名の列に書き出します。 「畑の名前の赤」「樽のシャルドネ」「泡」のような呼び方です。あわせて「優先して出す年」と「代替の候補」の列を足します。
2週目:30件で試す
先月の注文から30件を選び、手元の Claude の画面に商品マスタと一緒に貼ります。ヴィンテージを勝手に埋めていないか、補った明細に印が付いているかを最優先で見ます。
3週目:表を整える
割当ての表と配送の日数の表を作り、在庫の表の「引当できる本数」を式で出します。電話で受けた注文も同じ受注台帳に書く決まりにします。 受注台帳には「仮」「確定」の状態の列を足します。
4週目:メールから下書きまでをつなぐ
Make で Watch emails の注文を受け、品番を引き、引当と出荷の予定を出して下書きを置くところまで作ります。 この時点では在庫の表に仮の引当を書かず、出した値を受注台帳に並べて担当の判断と比べます。
2か月目: 仮の引当の書き込みと、3営業日で戻す朝のシナリオを足します。担当が見る注文と確かめが要る注文の件数を毎週数えます。3か月目以降: 1件8分が何分になったかを実測し、新しいヴィンテージに切り替わる月を、年の取り違えなしで越えられたら、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| Gmail のアプリに Watch emails・Create a draft email・Update email labels・List email attachments and media などがあること。Watch emails がフォルダ・ラベル・送信元・件名・含む語・添付の有無で絞れ、Limit が500以下であること。Create a draft email にスレッドの ID の欄があること | Make: Gmail modules | 2026-10-27 |
| Google Sheets のアプリに Search Rows・Add a Row・Update a Row などがあること。Search Rows に Limit の欄があること | Make: Google Sheets modules | 2026-10-27 |
| ルーターのルートが同時ではなく1本ずつ順に処理され、どの条件にも当たらないデータをフォールバックのルートが処理すること | Make: Router | 2026-10-27 |
| Anthropic Claude のアプリに Create a Prompt・Make an API Call などがあり、Create a Prompt の説明に構造化出力の記載が無いこと | Make: Anthropic Claude | 2026-10-27 |
構造化出力がスキーマを output_config.format に渡して使うこと。数値の minimum・maximum などの制約に対応せず 400 になること。stop_reason が refusal・max_tokens のときは出力がスキーマに合わないことがあること。文字列の enum の大文字・小文字が保証されないこと | Claude: Structured outputs | 2026-10-27 |
| 酒類の製造者が製造場から移出した酒類について酒税を納める義務があること(第6条)。酒類製造者が製造・貯蔵・販売に関する事実を帳簿に記載しなければならないこと(第46条) | e-Gov 法令API: 酒税法 | 2026-10-27 |
酒税の申告と帳簿の記載は、実際の出荷の記録から人が行ってください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1962)についてのご相談はこちらから。
