EC — DTC ブランドの利益、広告、在庫

15 分。3 つの CSV。7 人組のオーツミルクブランドの ops リードを演じ、本当に重要な 4 つの質問に答える。

更新 2026-04-17

業界: EC 難易度: 初級 時間: 15 分 プラン: Free で動作

シナリオ

あなたは Harvest Co. の ops リード。オーツミルク、コールドブリュー、抹茶、その他いくつかの消費財を販売する 7 人の DTC ブランド。Shopify(売上の大部分)と Amazon(成長中)で販売。Google、Meta、TikTok で広告を運用。

チームに誰もアナリストがいません。以前はスプレッドシートで数字を扱っていたが、JOIN — 注文 × 返金 × 広告費 × 在庫 — が 3 週目あたりで痛くなった。共同創業者が「今週は黒字か?」と聞き続け、あなたは「後で答えるね」と言い続けています。

今日 Tablize で 4 つの質問に答えます:

  1. すべてのコスト後、実際に利益が出ている SKU はどれか
  2. 実際の注文と JOIN したとき、広告費は効いているか
  3. どの SKU が在庫切れになりそうか — そしてどれが過剰在庫か?
  4. あなたに頼まずにチームがこれをセルフサービスできるか

15 分の終わりには、Report、Dashboard、Watch — すべて自分で動いている — を持っています。

サンプルデータのダウンロード

3 つの CSV。どこに保存してもよい — すぐに Tablize にドラッグします。

7,131 行 · 90 日
orders.csv
直近 90 日のすべての注文ライン。プラットフォーム(Shopify / Amazon)、SKU、数量、単価、売上、COGS、配送費、プラットフォーム手数料、返金されたかを含む。
540 行 · 90 日
ad-spend.csv
プラットフォームとキャンペーンごとの日次広告費。Google、Meta、TikTok — 合計 6 キャンペーン。インプレッション、クリック、帰属注文を含む。
12 行 · 今日
inventory.csv
SKU ごとの現在の手元在庫、入荷予定、安全閾値、14 日平均日次販売。SKU ごとに 1 行。

Tablize を開く(console.tablize.com — まだなら無料ワークスペースにサインアップ)。空のチャットに着地。

3 つの CSV をチャットウィンドウにドラッグ。Agent がインポートしながら各々を確認:

  • orders.csvdata.orders(7,131 行)
  • ad-spend.csvdata.ad_spend(540 行)
  • inventory.csvdata.inventory(12 行)

準備完了。

01

実際に利益が出ている SKU はどれ?

売上から COGS、配送費、プラットフォーム手数料、返金を差し引く — SKU ごと、直近 30 日。

これはスプレッドシートでは答えられない質問。JOIN(注文 × 返金 × 商品)が厄介だから。Agent が一発で SQL を書きます。

プロンプト · チャットに貼り付け
各 SKU について、直近 30 日の純利益を見せて。純利益 = 売上 − cogs − 配送費 − プラットフォーム手数料、返金注文は除外。利益降順でソート。SKU、商品名、販売数、売上、総コスト、純利益、マージン % を表示。

表示されるもの(数字は概算 — 固定シードでも生成データにはランダム性あり):

harvest co · sku 別利益
ステップ 1 · 期待される答え
Tablize
sql.query · orders joined with aggregate, 30-day window 312 ms
直近 30 日の純利益合計は 12 SKU で約 $48,200。マージンが最も健全なのはオーツミルクライン(純 30〜35%)、最も弱いのはアクセサリ(Ceramic Bowl と Bamboo Whisk — 低ボリュームでフルフィルメント手数料をカバーできない)。3 つの SKU — Oat Milk 1L、Cold Brew 12oz、Matcha 50g — が現在返金スパイクを引き起こし、期待より低いマージンになっています。
SKU商品売上純利益マージン
SKU-1048Oat Milk 500ml1,052$3,620$1,28035.4%
SKU-1047Oat Milk 1L759$4,420$1,31029.6%
SKU-4006Almond Butter 500g210$3,360$98029.2%
SKU-0912Cold Brew 12oz388$1,720$41023.8%
SKU-3102Bamboo Whisk88$1,230$18014.6%
SKU-3101Ceramic Matcha Bowl54$1,290$1108.5%
· ステップ 1 — SKU 別利益、マージンフラグ付き

保存: + Report として保存をクリック。「SKU 利益 — 週次」と命名し、週次スケジュール(月曜 09:00 で OK)を設定。最初の定期アセットを得ました。

フォローアップを試す(オプション):

プロンプト · フォローアップ
なぜ Cold Brew 12oz の今週の返金率が先月と比べてこんなに高いの?

Agent は返金率時系列を引き出し、直近 7 日が 90 日ベースラインの約 3 倍であることに気づき、SKU-0912 + SKU-1047 + SKU-2238 に集中していることをフラグ。これら 3 SKU は一緒に出荷された — おそらく悪い出荷バッチ。

これはサンプルデータの実際のシグナル — ジェネレータが直近 7 日にシミュレートされた悪いバッチを注入。

02

広告費は実際に効いているか?

Google、Meta、TikTok の混合 ROAS — プラットフォームが主張するコンバージョンではなく、実際の注文と JOIN。

すべての広告プラットフォームは素晴らしい ROAS を主張します。合計すると売上を超えます。この質問は実際の注文との JOIN を強制します。

プロンプト
直近 30 日について: プラットフォームとキャンペーン別の総広告費、同期間の実際の注文と JOIN、「true ROAS」 = 売上 / 費用 を計算。ROAS が 2 を下回るキャンペーンをフラグ。

Agent は ad-spend.csv がプラットフォームレベルで attributed_orders を記録し、実売上が orders.csv に住むことに気づきます。2 つのクエリ — 1 つは(プラットフォーム、キャンペーン)ごとの費用集計、もう 1 つは実売上の取得 — を書き、生成:

harvest co · 広告 roas
ステップ 2 · 期待される答え
Tablize
sql.query · aggregate spend, join revenue, compute ratio 412 ms
3 プラットフォームすべてで $37,800 を費やし、$61,200 の帰属売上 — 混合 1.62x true ROAS。プラットフォーム各々が個別に主張するものよりかなり低い。2 つのキャンペーンが混合数字を引き下げています。
Google · Brand
3.8x
Meta · Retargeting
3.0x
TikTok · UGC
2.1x
Google · Shopping
1.5x
Google · Non-brand
1.1x
Meta · Prospecting
0.9x
停止または再構築: Google Non-brand Search (1.1x) と Meta Prospecting (0.9x) は両方とも 2.0 損益分岐閾値を下回っています。Meta Prospecting は実際にマージン損失中。
· ステップ 2 — キャンペーン別 true ROAS、2x 未満は赤フラグ

保存: + 週次 ROAS ウォッチをクリック。Agent が毎週月曜 09:00 に動き、任意のキャンペーンの ROAS が 2.0 を下回ったらメールで通知する Watch を作成。「なぜ広告費が上がっているの?」サプライズミーティングはもう不要。

03

どの SKU が在庫切れになりそう?

先を見るビュー: 現在の速度でのカバー日数。
プロンプト
inventory.csv を使い、各 SKU のカバー日数 (on_hand + incoming_units) / avg_daily_sales を計算。7 日未満を critical、7〜14 日を warning としてフラグ。カバー日数昇順でソートして全テーブルを見せて。
harvest co · 在庫切れリスク
ステップ 3 · 期待される答え
Tablize
sql.query · days-of-cover calculation 148 ms
3 つの SKU が critical — カバー日数 7 日未満。Oat Milk 500ml が最も緊急 — 500ml は直近 2 週間のベストセラー SKU で、約 3 日のカバーしか残っていません。
SKU商品手元日次販売カバー日数ステータス
SKU-1048Oat Milk 500ml10535.13.0critical
SKU-3102Bamboo Whisk142.85.0critical
SKU-4005Hemp Protein 1kg182.18.6warning
SKU-0913Cold Brew 32oz1,2408.4147.6過剰在庫
裏返し: Cold Brew 32oz は現在の速度で約 5 ヶ月のカバー。早く動かすためのプロモやバンドルを検討する価値あり。
· ステップ 3 — カバー日数、在庫切れ + 過剰在庫フラグ付き

保存: + 在庫ウォッチをクリック。Agent がチェック頻度を聞きます — 在庫は早く動くので「6 時間ごと」を選択。任意の SKU がカバー 7 日を下回った瞬間に通知。

04

チームがこれをセルフサービスできる?

3 つのビューすべてをまとめた 1 つの Dashboard を構築。共同創業者は Tablize ではなくそれを開く。

上の 3 つの質問は Report / Watch です。チームにメールします。ただしライブの「今どうなっているか」ビューには、チームが自分で開ける Dashboard が欲しい。

プロンプト
「Harvest Co. ops」という Dashboard を 3 パネルで作って: (1) 直近 30 日の SKU 利益(先の分析のテーブル)、(2) キャンペーン別 true ROAS(今構築した棒チャート)、(3) SKU 別カバー日数(在庫から)。monochrome テーマを使用。公開共有可能に。

Agent は約 10 秒で Dashboard を生成。右パネルにスライドインするのが見えます:

Dashboard · harvest co · ops
Harvest Co. ops — ライブ
公開リンク · 5 分ごとに更新 · oEmbed で Notion 埋め込み
30 日利益
$48,200
混合 ROAS
1.62x
在庫切れリスク
3 SKU
· ステップ 4 — 1 つの Dashboard、3 つの KPI、共有リンク

公開リンクをコピー。チームの Notion、Slack、メール署名に貼り付け。指 1 本動かさずに 5 分ごとに更新。

15 分で構築したもの

  • 1 Report — SKU 利益、週次実行。
  • 2 Watch — ROAS アラート、在庫切れアラート。
  • 1 Dashboard — ライブビュー、公開共有可能。

Dashboard は共同創業者の「黒字か?」ピンを置き換え。Watch は「夜中に何か壊れた?」チェックを置き換え。Report は月曜朝のピボットテーブル構築を置き換え。

4 つすべて自分で動き続けます。来週 Tablize を開けば、最初のコーヒー前に月曜は終わっています。

この業界の次のステップ

  • 実際の Shopify を接続統合 → Shopify を参照。同じ質問がライブデータで動作。
  • Stripe を追加 — キャッシュフロー、返金理由内訳、紛争用。OAuth 接続をもう 1 つ、コードなし。
  • Amazon SP を接続 — 実際にプラットフォーム間で分かれているセラーのマルチチャネルビュー。
  • EC 業界ページを読む — より深いシナリオ: クロスボーダー通貨処理、マージン・アット・リスクアラート、サブスクライバ LTV モデリング。

近隣のチュートリアル

  • 広告 — メディアバイイングがメインのレンズで、商品ではない場合。
  • SaaS — サブスクリプションの B2B プロダクトを運営している場合。
  • 物流 — 実際に箱を出荷している人の場合。