Operations + analytics deep-dive
Cannabis demand forecasting — the patterns that beat guessing
Most cannabis dispensary demand forecasting is ‘look at last week, order the same.’ That works in steady-state — but cannabis demand is anything but steady-state. Demand follows 4 distinct patterns: weekly cycle (Friday peak ~2.2x average, Tuesday valley ~0.6x), monthly cycle (paycheck-bound, 1st-of-month + 15th-of-month spikes), seasonal cycle (summer-trending Sativa + outdoor-friendly products, winter Indica + edibles), and event-driven (rush days per /guides/cannabis-holiday-rush-operations + weather + local events). Forecasting against ALL of these instead of just the trailing-week average cuts stockouts by ~60% + reduces aging-inventory by ~40% at typical operator scale. The pattern math we run at Green Life + SCC, what to ignore, and how to update the model when reality drifts.
The 4 demand patterns ranked by predictive power
- **Weekly cycle (highest predictive power, narrowest window).** Friday is the peak — typically 2.0-2.4x daily average for the WA market. Saturday is second peak ~1.6-1.9x. Sunday is ‘Sunday-pickup-hangover’ ~1.1-1.3x. Tuesday is the valley ~0.5-0.7x. The weekly multiplier is the SINGLE biggest forecasting signal an operator has — and most ignore it because they rationalize the variance as ‘every week is different.’
- **Monthly cycle (high predictive power, paycheck-driven).** First-of-month + 15th-of-month see a 1.3-1.6x spike compared to mid-month days. Direct deposits + government-benefit payments time to those dates; cannabis-customer disposable income spikes accordingly. Some operators see a smaller end-of-month dip as customers wait for the 1st.
- **Seasonal cycle (moderate predictive power, slow-moving).** Summer (May-Sept) tilts toward Sativa-leaning + outdoor-friendly product (pre-rolls, beverages, lighter edibles). Winter (Nov-March) tilts Indica-heavy + edibles + concentrates. Holiday weeks (Thanksgiving / Christmas / NYE) shift further toward edibles + gift-able product. The shift isn’t huge but compounds on aging-inventory if ordered against the wrong season.
- **Event-driven (high predictive power, narrow window, hard to plan).** 4/20 + Greenwednesday + 7/10 + holiday weekends per /guides/cannabis-holiday-rush-operations. Plus weather events (cold snaps drive 1.2-1.4x indoor consumption + edibles), local events (concerts / sports / festivals nearby), and one-off WSLCB or competitor closures (a competitor outage routes their customers to you for 2-7 days).
The weekly multiplier table
These are the WA-market weekly multipliers we run against the trailing-30-day-mean as the baseline. Multipliers are dispensary-specific within ~10% — pull your own from your transaction data within the first 90 days of operation per /guides/cannabis-dispensary-opening-day-first-30-days.
| Day | Multiplier (×) | Why |
|---|---|---|
| Friday | 2.0-2.4 | Pre-weekend purchase, payday-bound |
| Saturday | 1.6-1.9 | Weekend leisure |
| Sunday | 1.1-1.3 | Pickup hangover + day-off |
| Thursday | 1.0-1.2 | Pre-weekend prep |
| Monday | 0.7-0.9 | Recovery from weekend |
| Wednesday | 0.7-0.9 | Mid-week valley shoulder |
| Tuesday | 0.5-0.7 | Lowest day |
Sum across the week: ~7.0 day-multiplier units. Match that to projected weekly revenue when ordering. Example: $100K projected week → Friday alone is ~$28-34K. Inventory has to cover Friday peak independently of Tuesday valley availability — Friday stockouts cost 4x more than Tuesday stockouts at the unit level.
Combining the patterns
Demand forecast = baseline × weekly-multiplier × monthly-multiplier × seasonal-multiplier × event-multiplier. The multiplicative-not-additive structure matters. A Friday + 1st-of-month + summer + 4/20 = 2.2 × 1.5 × 1.1 × 4.0 = ~14.5x daily baseline. That’s the day every operator under-orders for and stocks out by 2pm.
- **Baseline = trailing-30-day daily mean** (excludes the spikes — a clean baseline against which multipliers apply). Compute weekly so it adapts to slow drift.
- **Weekly multiplier from the table above** — apply per day-of-week.
- **Monthly multiplier 1.3-1.6 on 1st + 15th**, ~1.0 mid-month, ~0.85-0.9 last 3 days of month (paycheck-bound dip).
- **Seasonal multiplier per category** — summer +5-15% Sativa, +5-10% pre-rolls + beverages; winter +5-15% Indica + edibles + concentrates. Apply to category-level reorder math, not aggregate.
- **Event multiplier from /guides/cannabis-holiday-rush-operations** — 4/20 = 4.0-5.0x, Greenwednesday = 2.5-3.5x, 7/10 = 1.5-2.0x, NYE = 1.5-2.0x, weather events 1.2-1.4x.
- **Round UP, not down.** Stockouts cost more than aging-inventory at the margin most operators run. Per /guides/vendor-reliability-and-the-math-of-reorder, the aggressive-reorder-on-velocity-spikes math fits here.
Where the model needs constant updating
- **New competitor opens within 5 miles.** Demand-forecast baseline shifts down 8-15% for 60-90 days as customers try the new shop, then partially recovers. Adjust baseline + monitor weekly.
- **Existing competitor closes (temporarily or permanently).** Their customers route to you. 5-15% baseline lift for 2-7 days (temporary outage) or permanent (closure). Monitor inventory tightness DURING the spike — don’t ride it down to stockouts.
- **Local event nearby.** Concert, festival, conference, sports playoff in your neighborhood = 1.2-1.5x daily for the event days + the day after. Calendar-feed integration helps; manual log otherwise.
- **Weather extremes.** Snow days drop foot traffic 30-50% (winter); heatwaves push customers to evening hours + cold-product purchases. Adjust both forecast + product mix.
- **Marketing-campaign send.** Per /guides/cannabis-customer-sms-deliverability-discipline, an opt-in SMS blast lifts the next-3-days demand by 5-15% for the campaign-targeted segment. Smaller than the patterns above but real.
- **WSLCB regulatory changes.** New age-verification requirement, packaging change, advertising-rule update — typically 2-4 week adjustment period as customers + staff adapt. Monitor the variance during these windows.
What CannAgent does to make this stick
- **Demand-forecast surface at /admin/operations/forecast** — renders next-14-days projected daily demand by category, with the multiplier breakdown shown so the operator can see what’s driving each prediction. Manager edits any multiplier with a 1-line explanation that logs to audit.
- **Auto-applied multipliers in /admin/reorder** — baseline reorder math (trailing-30-day mean) auto-multiplied by the upcoming day-of-week + monthly + seasonal + known-event multipliers. Operator sees the unscaled + scaled numbers side-by-side.
- **Weather feed integration** — weather forecasts pulled from a free API; auto-applies 1.2-1.4x cold-snap or 0.7-0.8x snow-day multiplier. Operator can override.
- **Local-event calendar** — manager-maintained calendar entries (concert / festival / conference) drive a 1.2-1.5x event-multiplier on those dates. Renders on /admin/operations/forecast for transparency.
- **Quarterly recalibration report** — every 90 days, a report at /admin/operations/forecast-recalibration computes actual vs. predicted multipliers for the prior quarter + flags any pattern drift > 10%. Manager reviews + signs off; updated multipliers feed back into the forecast model.
- **Stockout post-mortem ↔ forecast model** — every stockout per /guides/cannabis-vendor-diligence-fire-or-keep gets a category: vendor-failed / forecast-undercalled / customer-spike. The forecast-undercalled ones flow back into multiplier calibration.
Takeaways
- Demand follows 4 patterns most operators ignore: weekly cycle (Friday 2.0-2.4x peak / Tuesday 0.5-0.7x valley), monthly cycle (1st + 15th paycheck-bound 1.3-1.6x spikes), seasonal (summer Sativa / winter Indica), event-driven (rush days + weather + local events + competitor changes)
- Forecast = baseline × weekly × monthly × seasonal × event multipliers — multiplicative not additive. Friday + 1st + summer + 4/20 = ~14.5x baseline. The day operators consistently under-order for + stock out by 2pm
- Round UP not down — Friday stockouts cost ~4x more than Tuesday stockouts at the unit level; aging-inventory cost is asymmetric to stockout cost at most operator margins
- Update the model when: competitor opens/closes within 5 miles (8-15% shift), local event nearby, weather extremes (snow drops 30-50%, heatwave shifts to evening cold-product), WSLCB regulatory changes (2-4 week adjustment)
- 90-day recalibration loop — pull actual transactions, compute actual vs. predicted multipliers per pattern, flag drift > 10%. Most operators never run this loop + drift gets to 30-40% over 18 months without correction
- CannAgent: /admin/operations/forecast surface with multiplier-breakdown transparency + auto-applied multipliers in reorder math + weather-feed integration + local-event calendar + quarterly recalibration report + stockout post-mortem feedback into model
Ready to talk through your migration?
30-minute demo. We end by quoting the cutover from your current setup — fixed scope, no hourly games.