Skip to content

The demand forecast

How many units the store will sell, and what it will earn, on each of the next 42 days: for the whole store and for each product family. Every day comes with a range. It is shown under Demand ahead on the Pricing page, and the promotion timing recommender reads it.

Where the data comes from

The store's own sales from Dutchie, day by day, since its first order. Units are units paid for: voided orders, returned lines and giveaways are left out. Gross profit is what the register took before tax, less the line's recorded cost. It counts giveaways, because a free pre-roll still costs the day.

Families that average fewer than 3 units a day over the last eight weeks are forecast together as "other".

What it reads into a day

  • The weekday. At one BudLogix store a Friday sells about 27% more than a Monday, and a Thursday about 15% more.
  • The first three days of the month. These are measured, not assumed. At that store they make no difference (1.01 times an ordinary day, range 0.99 to 1.03).
  • Named days. These are 4/20, New Year's Day and Eve, 4 July, Christmas Eve and Day, Memorial Day, Labor Day, Thanksgiving, the day before it and the Friday after it, plus the yearly days the store added for all products under Days left out of sales rates on Replenishment.
  • Where the store's level is now. This is read off its recent weeks.

There is no "time of year" effect beyond the named days. The history is a little over one year, so December cannot be told apart from a store that grew in December.

Named days have been seen once

Each holiday has happened about once since the store opened. One day is one day's luck, so every named day's effect is pulled toward "no effect", and its range is wide. At that store:

  • Christmas Day read 1.75 times an ordinary day, with a range of 1.56 to 1.97.
  • 4/20 read 1.10, with a range of 0.98 to 1.23.

A named day the store has never had yet gets the full spread of what holidays do, which is wide on purpose.

When it may be used

Every Sunday the forecast is tested against the simplest one there is: the same weekday last week. This is done over the last seven months, as if it had been run each week. It is scored one to six weeks ahead on:

  • the error of each day;
  • the error of each week's total;
  • how often the real day landed inside its range.

The forecast speaks only where it beat last week on days at every horizon, and its ranges held about 80% of what happened. The whole store must pass for units and gross profit, or nothing is shown. A family that did not pass says so.

On 7 October 2026 its error on a day was 9 to 25% smaller than last week's, for the store's units and gross profit at every horizon. For a week's total, an ordinary week here sells close to last week, and it only tied.

What runs by itself

pricing:forecast-demand runs every Sunday at 05:40 Eastern, after the demand model is refitted. A failed fit is kept with its reason in words.

Settings it depends on

None on screen. The install-wide switch pricing_tiers.demand_forecast.enabled turns it off everywhere. The yearly, all-products days left out of sales rates on Replenishment are also the forecast's named days.

Last checked against the product on 10 Oct 2026. This is the same article operators read inside BudLogix.