inventory-planner

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Inventory Planner

库存规划器

Buy what sells, before it runs out, and stop buying what doesn't.
Stock is cash the owner already spent. Two things go wrong: running out of the item customers came for, and sitting on a pallet of something nobody wants. Both are visible in the sales history well before they become a problem, which is what this skill reads for.
采购畅销商品,避免缺货,停止采购滞销商品。
库存是企业主已经支出的现金。常见的问题有两种:顾客想买的商品缺货,以及积压了一堆没人要的商品。这两种问题在恶化之前都会在销售历史中显现出来,这正是本技能的作用所在。

Step 1 — Get sales and stock

步骤1 — 获取销售和库存数据

Preferred: Shopify for sales and inventory levels. Square and NetSuite work the same way.
Fallback, fully supported: a CSV of sales history plus a stock-on-hand count. Two files, or one with both. This path works with zero connectors and gives the same output. Many businesses count on a clipboard, and that is a legitimate input.
You need, per item: SKU, name, units sold by date, current stock on hand, unit cost, unit price, vendor, and lead time if known. Missing lead time is asked for once and remembered — see
reference/data_sources.md
.
Say what the count is as of. A stock figure two weeks old produces a stockout date two weeks wrong.
首选方式: 通过Shopify获取销售和库存数据。Square和NetSuite的使用方式相同。
备用方式(完全支持): 上传销售历史CSV文件加现有库存盘点数据。可以是两个文件,也可以是包含两者的单个文件。这种方式无需任何连接器,输出结果与首选方式完全一致。很多企业用剪贴板记录库存,这也是合法的输入方式。
每件商品需要提供以下信息:SKU、名称、按日期统计的销量、当前现有库存、单位成本、单价、供应商,以及已知的前置时间。如果缺少前置时间,只会询问一次并记录下来——参见
reference/data_sources.md
。
请说明库存盘点的截止日期。 两周前的库存数据会导致缺货日期的预测偏差整整两周。

Step 2 — Compute velocity, both windows

步骤2 — 计算两个时间窗口的销售速度

For every item, compute:
  • 7-day velocity — units per day over the last week. Catches what is happening now.
  • 28-day velocity — units per day over four weeks. The stable baseline.
Both matter, and disagreement between them is information. An item selling three times its 28-day rate this week is either trending or had one bulk order, and those need different responses.
reference/velocity_and_reorder.md
covers how to tell them apart.
Exclude one-off distortions from the baseline where you can identify them: a single wholesale order, a returned batch, a stockout period where the item could not sell. A period of zero sales because there was no stock is not zero demand, and treating it as such is how an item gets under-ordered forever.
针对每件商品,计算:
  • 7天销售速度 — 过去一周的日均销量。用于反映当前的销售趋势。
  • 28天销售速度 — 过去四周的日均销量。作为稳定的基准线。
两者都很重要,它们之间的差异本身就是有效信息。如果某件商品本周的销量是28天日均水平的三倍,要么是销量正在增长,要么是有一笔大额订单,这两种情况需要不同的应对方式。
reference/velocity_and_reorder.md
中说明了如何区分这两种情况。
对于可识别的一次性异常数据,应从基准计算中排除:比如单笔批发订单、一批退货、或者商品缺货导致无法销售的时期。因缺货导致的零销量时期并不代表零需求,如果将其视为零需求,会导致该商品永远补货不足。

Step 3 — Project stockout dates, conservatively

步骤3 — 保守预测缺货日期

Stockout date is stock on hand divided by the daily velocity you trust least — the higher of the two windows. Being early is cheap; being late loses the sale.
Then compare against lead time. The number that matters is not when it runs out, it is whether there is still time to order:
  • Past the point of no return — lead time exceeds days of cover. Already going to stock out. Say so plainly.
  • Order now — cover is within lead time plus a safety buffer.
  • Order soon — comfortable, but on the next cycle.
  • Fine — no action.
Never state a stockout date for an item with no reliable velocity. New items with two weeks of history and items whose sales were interrupted get flagged as "not enough history," by name.
缺货日期的计算方式为现有库存除以你认为更保守的日均销售速度——即两个时间窗口中更高的那个。预测偏早的代价很低;预测偏晚则会损失销售机会。
然后将其与前置时间对比。真正重要的不是什么时候缺货,而是是否还有时间下单补货:
  • 已过补货临界点 — 前置时间超过现有库存可售天数。已经必然会缺货。请明确告知这一情况。
  • 立即补货 — 库存可售天数处于前置时间加安全缓冲期范围内。
  • 近期补货 — 库存尚充足,但需在下个补货周期下单。
  • 库存充足 — 无需采取行动。
对于没有可靠销售速度的商品,绝不要给出缺货日期。 只有两周销售历史的新品以及销售中断的商品,应逐一标记为“历史数据不足”。

Step 4 — Size the reorder

步骤4 — 测算补货量

Default target is 60 days of cover plus the lead time, sized on the 28-day rate — not on the faster of the two. The stock has to last from the day it lands until the next order lands, so leaving the lead time out runs the item short by exactly that many days every cycle. Then adjust for pack size, minimum order quantity, and what is already on order.
The two rates do different jobs and both get named on the line: the higher one says when it runs out, the 28-day one says how much to buy. Sizing a 60-day order off a one-week spike is how cash ends up in a pallet.
Never size a reorder without subtracting inbound stock. Double-ordering a slow item is how a business ends up with three years of it.
Round to the vendor's pack size and say which direction you rounded. Show the dollar cost of every recommendation — the owner is deciding about cash, not units.
默认目标是60天的库存覆盖量加上前置时间的需求量,基于28天销售速度测算——而非两个速度中更高的那个。库存需要从到货当天支撑到下一批订单到货,因此如果不加上前置时间,每个周期都会刚好短缺对应天数的库存。之后再根据包装规格、最小起订量以及已下单数量进行调整。
两个销售速度有不同的用途,都应在明细中列明:更高的那个用于判断缺货时间,28天速度用于测算采购量。基于一周的销量突增来测算60天的补货量,是导致现金被积压在库存上的常见原因。
测算补货量时必须扣除在途库存。对慢动商品重复下单,会导致企业积压可供三年销售的库存。
按照供应商的包装规格取整,并说明取整方向。每条建议都应显示对应的美元成本——企业主是在做现金决策,而非仅仅决定商品数量。

Step 5 — Handle the items that are not moving

步骤5 — 处理滞销商品

Zero-velocity and very slow items are a separate list with a separate purpose. They are never reorder candidates.
  • Zero velocity — no units in 28 days. Report as a slow mover with the cash tied up in it. Never compute days of cover for these — nothing is selling, so nothing is running out, and the number is either an error or nonsense. The one exception is an item inside a season the owner has named, which goes on a dated watch list instead of the clear-out list.
  • Overstock — more than 120 days of cover. Report the excess units and the dollars.
  • Dead stock — no movement in 90 days. Suggest clearing, bundling, or discounting.
Total the cash sitting in these. That figure is usually the most surprising number in the whole report and often the most useful one.
零周转和极慢动商品应单独列出,处理目的也不同。它们绝对不是补货候选。
  • 零周转 — 28天内无销量。将其列为慢动商品,并说明占用的现金金额。绝不要为这些商品计算库存可售天数 — 没有销量,就不存在缺货的问题,计算出的数字要么是错误的,要么毫无意义。唯一的例外是处于企业主指定的销售季内的商品,这类商品应加入带日期的观察列表,而非清理列表。
  • 库存过剩 — 库存可售天数超过120天。报告过剩数量和对应的金额。
  • 死库存 — 90天内无动销。建议清理、捆绑销售或打折处理。
统计这些商品占用的总现金。这个数字通常是整个报告中最令人意外、也往往最有价值的数字。

Step 6 — Apply seasonality only where history supports it

步骤6 — 仅在历史数据支持时应用季节性因素

With at least a year of history, compare the coming period against the same period last year and adjust.
With less than a year, say so and do not adjust. A seasonal multiplier invented from nine months of data is a guess wearing a suit. Ask the owner instead — they know their season better than a short history does.
reference/seasonality.md
covers both paths.
如果有至少一年的历史数据,可以将即将到来的时段与去年同期进行对比并调整预测。
如果历史数据不足一年,请明确说明且不要进行季节性调整。 基于九个月数据得出的季节性乘数不过是包装成专业结论的猜测。应转而询问企业主——他们比短期历史数据更了解自己的销售旺季。
reference/seasonality.md
中说明了两种处理方式。

Step 7 — Present the buy list

步骤7 — 展示采购清单

Lead with the total dollar amount and the count of items about to stock out. Then: order now, order soon, slow movers, and anything with too little history to judge.
Every line carries the numbers behind it — velocity, days of cover, lead time, quantity, cost. An owner who can see the reasoning approves in a minute; one who cannot rebuilds the whole thing by hand.
Render the buy list as an HTML artifact using the house artifact style (
../../shared/artifact-style.md
): a stockout table sorted by stockout date with mono tabular-nums numerals, urgency status pills (order now / order soon / fine / past the point of no return), a reorder panel with quantities and dollar totals, and a slow-movers section with the cash tied up in it. The chat summary stays — the artifact is the full picture, not the only one.
首先展示总采购金额和即将缺货的商品数量。然后按以下分类展示:立即补货、近期补货、慢动商品,以及历史数据不足无法判断的商品。
每一行都应附带背后的计算数据——销售速度、库存可售天数、前置时间、数量、成本。能看到决策依据的企业主会很快批准;看不到的话,他们会自己手动重新算一遍。
使用内部报表样式(
../../shared/artifact-style.md
)将采购清单渲染为HTML报表:包括按缺货日期排序的缺货表(使用等宽表格数字字体)、紧急状态标签(立即补货/近期补货/库存充足/已过补货临界点)、包含数量和总金额的补货面板,以及展示占用现金的慢动商品板块。聊天摘要仍然保留——该报表是完整版本,但不是唯一的展示形式。

Step 8 — Draft POs and vendor emails, with approval

步骤8 — 起草PO和供应商邮件,需经批准

Purchase orders commit money and vendor emails go out under the owner's name, so both wait for an explicit yes.
State the vendor, the line items, and the total before asking. Draft the vendor email in the owner's voice per the shared voice profile. If no profile exists yet, follow that file's "When there is no sample" instruction — ask for three emails they have already sent a supplier. If they would rather not, write the email plain and neutral and say it is not in their voice. Never invent a personality for someone's vendor relationship.
With Google Calendar connected, offer a recurring block for the restock decision — this works far better as a rhythm than as a fire drill. Keep the approved PO document here — this skill owns it. With QuickBooks or NetSuite connected, hand
ap-processor
the coded memo for each one (vendor, PO number, total, expected date, and the account, class, and job), so the bill three-way-matches against a real record when it arrives.
ap-processor
reads POs; it does not create them.
采购订单会产生支出,供应商邮件会以企业主的名义发送,因此两者都需要得到明确批准才能执行。
在请求批准前,应列明供应商、采购明细和总金额。根据共享语气配置文件,以企业主的语气起草供应商邮件。如果尚未有语气配置文件,请遵循该文件中“无样本时”的说明 — 索要三封他们已经发送给供应商的邮件作为参考。如果他们不愿意提供,就用平实中立的语气撰写邮件,并说明这不是他们的惯用语气。绝不要为用户的供应商沟通关系虚构人设。
如果连接了Google Calendar,可以提供一个定期的补货决策日程块——将其作为常规节奏处理远胜于临时救火。将已批准的PO文档保存在此处——由本技能负责管理。如果连接了QuickBooks或NetSuite,将每个PO的编码备注(供应商、PO编号、总金额、预计到货日期,以及账户、类别和项目)交给
ap-processor
,这样账单到达时就可以与真实记录进行三向匹配。
ap-processor
负责读取PO,不负责创建PO。

Closing offer

收尾提议

Close with one line on what was decided — the total buy and the items about to run out. Then offer the most relevant next step with its exact trigger phrase: "reorder" (
/restock
) when the owner wants the POs drafted and sent end to end. Up to two more from the router's table, such as "cash forecast" (
cash-flow-snapshot
) or "pay the bills" (
/pay-the-bills
). Three offers at most, and never repeat one the owner already declined this session.
收尾时用一句话说明已决定的内容——总采购金额和即将缺货的商品。然后提供最相关的下一步操作及其确切触发短语:如果企业主想要起草并端到端发送PO,使用“补货”(
/restock
)。还可以从路由表中再选择最多两个选项,比如“现金预测”(
cash-flow-snapshot
)或“支付账单”(
/pay-the-bills
)。最多提供三个选项,且绝不要重复用户本次会话中已经拒绝的选项。

What not to do

注意事项

  • Do not invent a velocity, a lead time, or a stockout date. Too little history is reported by SKU, not smoothed over.
  • Do not treat an out-of-stock period as zero demand. It is suppressed demand and it biases everything downstream.
  • Do not recommend reordering a zero-velocity item. No sales means stop buying, not buy more.
  • Do not size a reorder without subtracting what is already inbound.
  • Do not apply seasonality without a year of history. Ask the owner instead.
  • Do not send a PO or a vendor email without approval. Both spend money or spend goodwill.
  • Do not report units without dollars. The owner thinks in cash.
  • 不要虚构销售速度、前置时间或缺货日期。 历史数据不足的情况应按SKU逐一报告,而非平滑处理。
  • 不要将缺货时期视为零需求。 这是被抑制的需求,会导致所有后续计算出现偏差。
  • 不要建议补货零周转商品。 没有销量意味着应该停止采购,而非继续采购。
  • 测算补货量时不要忘记扣除在途库存。
  • 没有一年以上历史数据时不要应用季节性调整。 应转而询问企业主。
  • 未经批准不要发送PO或供应商邮件。 两者都会消耗资金或商业信誉。
  • 不要只报告数量而不报告金额。 企业主是从现金角度思考的。

Reference files

参考文件

  • reference/data_sources.md
    — Shopify, Square, NetSuite, and the CSV path, with required fields
  • reference/velocity_and_reorder.md
    — the 7/28-day math, distortion handling, and reorder sizing
  • reference/seasonality.md
    — when to adjust, when to ask, and how to say which you did
  • reference/po_drafting.md
    — purchase order structure and vendor email drafting
  • reference/gotchas.md
    — the mistakes that stock out a bestseller or bury cash in a pallet
  • reference/data_sources.md
    — Shopify、Square、NetSuite和CSV导入方式,以及所需字段
  • reference/velocity_and_reorder.md
    — 7/28天销售速度计算、异常数据处理和补货量测算
  • reference/seasonality.md
    — 何时进行调整、何时询问用户,以及如何说明所采用的处理方式
  • reference/po_drafting.md
    — 采购订单结构和供应商邮件起草
  • reference/gotchas.md
    — 可能导致畅销品缺货或现金被库存积压的常见错误

Using a tool that isn't listed

使用未列出的工具

The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer
build-connector
— it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.
本技能中列出的连接器是经过测试的可行路径,而非限制。如果企业主希望该流程使用尚未连接或未列出的工具,可以提供
build-connector
——它会先检查连接器目录,否则通过Zapier进行连接,绝不会直接基于原始API手动开发。连接建立后,该工具就会像其他可选连接器一样加入本技能,遵循相同的审批流程。