★ Module M8 · Phase 3 · Prep Forecasting

Tomorrow's prep sheet, on Jesse's phone by 7am. Built from 28 days of sales, this week's weather, and what's happening in Stoughton.

Every morning at 06:30, the model pulls the last 28 days of Toast velocity, the NOAA forecast, the Stoughton High athletics calendar, Patriots schedule, any Sknny Chef post that went up in the last 72 hours, and Thursday's catering pull-through — then writes Jesse a one-page prep sheet. He accepts as-is, adjusts, or skips per item. Goal: cut overprep waste, kill same-day 86s.

Step 01
Prep item library — what Jesse preps in bulk
Twelve items the model forecasts daily. Pause anything Jesse doesn't want the model touching (e.g. one-off specials).
11 active · 1 paused
Showing 12 items Jesse pre-loaded from his prep list. Add new items by category — they inherit the closest existing item's baseline until 14 days of data accumulates.
Item Unit Horizon Safety stock Status
Carnitas
slow-braised pork shoulder · 8hr
lbs
/%
Active
Carne asada (marinated)
flank · 12hr marinade · prep night before
lbs
/%
Active
Pollo asado
citrus + achiote marinade · 6hr
lbs
/%
Active
Birria (stewed)
chuck + dried chile broth · Tue–Thu special
lbs
/%
Active
Pico de gallo
cut fresh AM · 36hr shelf life
qts
/%
Active
Salsa verde
serrano + tomatillo · 5-day shelf
qts
/%
Active
Salsa roja (habanero)
fire-roasted · 7-day shelf
qts
/%
Active
Cilantro-lime rice
batch cooks every 4 hrs during service
lbs
/%
Active
Black beans
overnight soak · 2hr simmer
lbs
/%
Active
Pinto beans (refried)
house-rendered lard · 3-day shelf
lbs
/%
Active
Guacamole
smashed to order; bulk for catering only
qts
/%
Active
Cilantro-lime crema
not on the line right now · seasonal
qts
/%
Paused
Step 02
Forecast inputs — what feeds the model
Weighted ensemble. Toggle off anything Jesse doesn't trust (or that breaks). Weights normalize automatically.
7 active · 1 standby
28-day Toast sales velocity CORE SIGNAL
Per-item daily sales pulled from Toast Sales API. Exponentially weighted — recent 7 days count more than days 22–28.
%
Live
Day-of-week pattern
Fri/Sat run 2.3x Tue volume. Sun is 1.4x. Monday is the trough at 0.7x. Computed from last 90 days.
%
Live
Weather (NOAA NWS API)
Rain reduces dine-in volume 18%, boosts delivery 12% (net –4%). Heat over 88°F boosts agua fresca + cold items. Free API.
%
Live
Stoughton High football schedule
Home games push Friday dinner +28% (post-game crowd through 10pm). Public PIAA scrape.
%
Live
Stoughton HS school calendar
PD days + half-days +14% lunch (teachers eat out). Snow days –22%. Pulled from district ICS feed.
%
Live
Patriots home games at Gillette
–12% Sunday dinner (Stoughton crowd is in Foxboro). +6% Sunday late-night if Pats win. NFL public schedule.
%
Live
Sknny Chef social signal (last 72hr)
Any Sknny Chef YouTube or TikTok post that featured a menu item triggers a +15–40% bump on that item for 72hr. M10 Content Engine pushes the signal.
%
Hot signal
M1 Catering pull-through
Any confirmed catering order in the next 5 days reserves its raw-ingredient share — model never double-counts. Hard block, not weighted.
%
Hard block
Local event calendar (Stoughton town)
Concerts on the common, parades, fair days. Disabled — too noisy until we get a clean ICS feed from the town.
%
Standby
Step 03
Tomorrow's prep sheet preview
What Jesse opens at 06:42. Accept the whole sheet, or go row-by-row.
Ready · 06:42 generation
Wed, May 28 · Prep Sheet
Weather: 72°F partly cloudy, 0% rain — neutral Events: nothing major in Stoughton Catering pull-through: 3 events Thu (18 lb protein reserved) Sknny signal: Mon TikTok featured carne asada tacos (+8% live)
Carnitas 38 lbs+19%
Baseline 32 lb 3 catering events Thu · 18 lb pre-prep Tue velocity steady
Carne asada (marinated) 28 lbs+8%
Baseline 26 lb Sknny TikTok Mon · carne tacos No catering pull
Birria (stewed) 22 lbs+22%
Baseline 18 lb Tue–Thu special running Last 4 Weds: avg sold 19 lb
Pico de gallo 14 qts+17%
Baseline 12 qts Catering pull-through (Thu prep) 36hr shelf — slight over OK
Salsa verde 8 qtsflat
Baseline 8 qts No signals firing 3-day horizon · 5-day shelf
Pollo asado 24 lbs−8%
Baseline 26 lb Sunday over-produced 1.5 lb Pollo velocity soft this week
Cilantro-lime rice 22 lbsflat
Baseline 22 lb No signals Batch-cooks during service anyway
Black + pinto beans 14 + 10 lbsflat
Baseline 14 / 10 No signals Standard Wed prep
Step 04
Safety stock + shrink tuning
Trade-off: more buffer = less likely to 86, more likely to overprep. Each item tunes independently.
Recommended 12% (currently 15%)
15%
15%
12%
18%
10%
22%
Last 28 days: 3 stockout events (salsa verde Wed 5/15, carnitas Sat 5/17, pico Fri 5/23) · 2 overproduce events (pollo asado Sun 5/19 −1.5 lb / $11 waste; carne asada Mon 5/13 −2 lb / $34 waste) · total waste cost ≈ $45. Model recommends nudging fleet-wide safety stock down to 12% — current setting is slightly conservative. Salsa verde is the outlier; keep it at 22% until we add 30 more days of data.
Step 05
What happens when Jesse hits "send to kitchen"
Five downstream actions chained on accept. All idempotent — retry-safe if printer is offline.
5 actions wired
Push prep sheet PDF to kitchen printer at 07:00
Brother HL-L2350DW · network printer near the walk-in. Falls back to Jesse's phone if printer doesn't ack in 90s.
Ready
Block raw ingredient counts in inventory app
Each accepted item subtracts its raw-ingredient need from MarketMan / Toast inventory. Prevents M1 from re-promising the same proteins.
Ready
Auto-update M7 Food Cost Drift Monitor
Tomorrow's expected COGS recomputes the moment the sheet is accepted. M7 alerts only fire when actuals diverge from the new expectation.
Ready
SMS line cooks the top 3 items + ETAs
Twilio SMS to Manny + Carlos at 07:00 — "Today: 38 lb carnitas (start 7:30), 28 lb carne asada marinade (start 8:00), 22 lb birria (start 9:00)."
Ready
Retrigger forecast if a Sknny Chef post hits in next 24hr
M10 Content Engine fires a webhook when Roxanne posts. Forecast reruns, item-specific bump applies, Jesse gets a "hot signal" notification only if delta is over 10%.
Hot loop
Tomorrow's sheet
Wed May 28 · Prep Sheet
Generated 06:42 · ready for Jesse to send
12 items · 6 with signal bumps · 3 catering blocks
ItemQtyWhy
Carnitas 38 lb +19% catering
Carne asada 28 lb +8% Sknny
Birria 22 lb +22% special
Pico 14 qt +17% catering
Salsa verde 8 qt flat
Pollo asado 24 lb −8% soft
Tip
The sheet retriggers any time a hot signal fires (Sknny post, last-minute catering, surprise PD day). Jesse gets a push notif if the delta is bigger than 10%.
This week's accuracy
Predicted vs actual sold · last 7 days · top 5 items
Good
MAPE (7-day avg)
8.2%
Stockouts · overproduce
1 · 1
Predicted Actual
Carnitas
+4%
Carne asada
−5%
Pollo asado
−9%
Birria
+7%
Salsa verde
+33%
1 stockout · salsa verde Wed (+3 qt next time). 1 overproduce · pollo asado Sun (−1.5 lb, ~$11 waste). Model is auto-adjusting both for next week.
Signal contributions
Where today's recommendations came from
Sales velocity (28-day)
62%
M1 catering pull-through
18%
Sknny TikTok bump
12%
Weather + events + DOW
8%
Signal mix varies daily. On a Friday with a Stoughton High home game, sales velocity drops to ~48% as event signals take over. On a slow Tuesday with no catering, velocity hits ~85% — the model leans on history.
All changes auto-saved · 12 items forecasted · next run 06:30 AM tomorrow