Order forecasting for Papa Johns
Per-store, per-hour order forecasts set against what the staff on shift can handle.
Friday 18:00 to 19:00: 63 orders forecast against room for 60 (3 staff × 20), which is 105.0%, so the slot is closed. 10 of 24 slots that day are closed.
The orders are made up. With only two weeks of them the real pipeline can't fit its hourly SARIMAX models either, so it falls back to this: the mean of the same weekday in past weeks, then its slot rule.
University of Kentucky senior design, sponsored by Papa Johns. The system learns how many orders each store gets in each hour, forecasts the next day, and compares that to staffing capacity hour by hour, marking a slot open while the forecast stays under 80% of it. A Flask API and React page let you pick a store and date and see each hour's forecast against capacity.
The problem
Online ordering needs to know which pickup and delivery windows to offer without overbooking the kitchen. That's a forecasting problem (how many orders will this store get at 6 p.m. Thursday?) feeding a capacity problem (can the staff on shift absorb them?).
How it's put together
What I took from it
Small per-hour series and long forecast horizons make SARIMAX unstable; the fallback path mattered more than expected.
Capacity was a stated rule of thumb (staff × 20 orders an hour), not learned. The next step was learning it from prep-time data.
Next: YapinA macOS menu-bar app: press a hotkey, talk, and styled text is pasted wherever you are.