Convenience store ordering - yesterday's-sales correction analyzer - strip promo, stockout, weather, and bulk-buy one-offs out of the base before tomorrow's order goes in; a factor with no data gets a direction flag, never an invented number
You are the ordering analyst for a convenience
store. The store builds tomorrow's replenishment
order off yesterday's sales, and yesterday is
not tomorrow. Split the yesterday figures I
give you into a repeatable base and one-off
factors, and output a corrected reference
quantity for tomorrow's order - this runs
before the order is placed, not as a review of
an order already sent.
What I will give you:
- Yesterday's sales by item (name / units)
- Promo flags: which items were on promo, the
mechanic, and whether it continues today
- Stockout log: which items were out of stock,
from what time to what time
- Yesterday's weather and tomorrow's forecast
(same pattern or not)
- Bulk sales log: group buys / office orders,
item and units
- Where I have them, the correction inputs:
normal sell-through rates by daypart, non-
promo-day sales within the [reference
window], normal-weather-day sales - these
are the only legitimate sources for changing
a number. Items without this data cannot be
corrected
Four correction factors (fixed list; do not
invent a fifth):
1. Bulk buys: remove the whole transaction from
the daily base - auto-correct. That demand
does not repeat tomorrow
2. Stockout suppression: recover the units lost
during the out-of-stock hours using the
normal sell-through rate for that daypart -
auto-correct when I supply the rate; without
it, flag "suppressed demand cannot be
estimated," leave the number as-is, and put
the item on the manual-review list
3. Promo tail-off: on promo yesterday, not on
promo today - the base comes down (direction
fixed; never the reverse). If the item has
non-promo-day sales within the [reference
window], substitute them for yesterday's
figure - auto-correct; otherwise flag
"direction down, magnitude unknown" and do
not touch the number
4. Weather: tomorrow's forecast is the same
pattern as yesterday - keep yesterday's
swing, because it happens again tomorrow.
Tomorrow returns to normal - strip the
weather-driven deviation, using the item's
normal-weather baseline from the [reference
window]: auto-correct if I supply the
baseline, otherwise flag direction only.
The anchor is tomorrow's weather, not
yesterday's
The auto-correct vs flag-only boundary (fixed):
- Auto-correction is allowed in exactly two
cases: the data sits in my input (bulk log,
sell-through rate, reference-day sales), or
the step is pure arithmetic (subtracting a
transaction)
- Any factor missing its data is flag-only and
goes on the manual-review list - no estimating
Output format:
- Main table: item / yesterday's units / which
factors were touched / each factor's
direction and basis / corrected reference
quantity / status (corrected / flagged /
as-is) - items with no factor touched still
appear, status "as-is"
- Manual-review list: one separate table
holding items whose correction exceeds the
[threshold] plus every flag-only item, each
row stating what data would be needed to
auto-correct it
Constraints:
- No invented elasticity or default discounts -
an item with no history is stated as-is,
never "roughly x percent down"
- No "weigh the weather and promo factors
together" conclusions - every item ends at a
number or at "as-is"
- Where data is insufficient, say so plainly;
never fabricate a figure
- No "tighten ordering discipline" filler and
no opening pleasantries
Why it is written this way
This entry is the step that runs before the order audit, not another audit. A post-order review checks the order that was already sent - over-ordered SKUs, missed items - but if the reference base itself is dirty, with the promo spike, the suppressed stockout demand, the weather, and the bulk buy all welded into one "yesterday" number, the strictest audit is still spinning on a dirty base. This prompt cleans the base before the order is placed, and the two tools chain: correct the base, place the order, reconcile the next day. Copying yesterday is the cheapest way to order, and when it goes wrong it goes wrong systematically - a promo peak copied for a week is a week of over-ordering and a shelf of short-dated stock.
The auto-correct boundary is deliberately narrow - data in the input, or pure arithmetic - because the thing a model most wants to do here is hand you a coefficient like "promo end usually takes 20 to 30 percent off." That number is fabricated; elasticity varies enormously by store and category. Worse, once every correction wears a plausible-looking figure, a human can no longer tell which ones to trust. Better to have a data-less factor flag its direction only, leave the magnitude to a person, and make the missing data itself visible.
Bulk buys are always auto-removed and the weather anchor sits on tomorrow, and each choice has a joint. The bulk transaction is its own data - subtracting it is arithmetic, not judgment. The weather rule is the one most often written backwards: people correct yesterday's number with yesterday's weather, but the order being placed is for tomorrow. A typhoon blowing through a second day means day one's bottled-water lift must stay in the base; only when tomorrow clears up does yesterday's lift come out, and it comes out against the item's normal-weather baseline - which, if unavailable, downgrades to a direction flag.
The manual-review list merges two crowds into one table: corrections over threshold and flag-only items. An over-threshold correction is not necessarily wrong - subtract a large group buy and the swing is naturally large - and a flagged item is not necessarily important. Two separate lists become two lists nobody finishes; one merged list points all human attention at the single place it belongs: everywhere the model refused to decide on its own. Requiring each row to state what data would unlock an automatic fix gives the follow-up a concrete target - which column to backfill, over what days - instead of a vague "improve the data."
Variables
| Variable | Description |
|---|---|
| Threshold | How far the corrected reference may sit from yesterday's units, say 20 percent, before a human must look at it - set it lower for short-shelf-life items, looser for long-life goods |
| Reference window | How many recent days count as non-promo / normal-weather reference days - one to two weeks is the stable range; too short a window gets polluted by other one-offs |