Essential ERP Features

The Problem

Manual replenishment means a person deciding what to reorder from a sales report, a spreadsheet or a feel for what usually moves.  Alongside it sits a minimum and maximum threshold, set once at implementation, and left untouched until it is obviously wrong.  Neither the spreadsheet or static min/max levels respond to what demand is actually doing this month.  The failure is asymmetric and expensive in both directions.  A product whose sales are accelerating blows past a stale minimum level before anyone notices and stocks out.  Sales are lost because inventory is unavailable.  A product whose sales are decelerating keeps getting reordered at the old max stock level and the cash sits on a shelf.

The damage is further compounded when cash is not available to buy high margin, fast selling items because that cash is tied up in this dead stock.  Both look identical on a report that shows only units sold.  Underneath that stock sitting idle on the shelf, a subtler and more damaging error lurks.
Most demand analysis treats a day with no sales as a day with no demand.  It is not.
A product that sold out on day ten and then sat at zero stock for eighty days did not have low demand; it had unmet demand, and no stock to meet it.  Every figure calculated downstream from an uncorrected sell-through rate on a spreadsheet or report inherits that error.

How Stok.ly AI Forecasting Works

The baseline: a 30-day moving average

For a stable, non-seasonal product, a 30-day moving average of actual daily demand provides a genuinely effective forecast.  It is a transparent calculation and does not require a buyer to trust a black box.  It’s known weakness is that it responds slowly to a change in direction (acceleration or deceleration), which is exactly what the second model addresses – and why they are used in conjunction.

The correction: a trend-adjusted forecast

A demand trend ratio compares the mean of the last 30 days against the mean of the last 90. Above 1.0 and the product is accelerating; below 1.0 and it is slowing.  That ratio is applied to the moving average as a multiplier, producing a trend-adjusted forecast that moves faster than a plain historical average can.  A product selling 40% faster this month than its quarterly average has a forecast that reflects that, today, rather than in three weeks’ time.

Why stockout days are excluded from sell-through

Days on which a product had zero available stock are removed from the demand calculation entirely.
This is the single most consequential correction in the engine.  Consider two products, 100 units purchased of each.  One sells out in ten days. The other takes a hundred days to clear.  A bestseller list shows both as having sold 100 units and treats them as equivalent.  In reality, the first item would probably have sold several times over.  Because this analysis on velocity is applied at source, in the nightly batch, every downstream number inherits the corrected figure rather than needing to be fixed later.

Confidence that reflects the evidence behind it

Every forecast carries the number of days of demand history that supports it.  Five days of history still produces a forecast, but the AI states the limitation and hedges the recommendation accordingly.
A full year of history produces a confident recommendation, because there is a full year of evidence behind it. Confidence is stated explicitly as part of the answer rather than implied by the absence of a caveat.

One consistent definition of demand, whatever your model

Demand is recorded at the moment stock physically needs to leave a location, not when a sales order is logged.  For a retail till, sale and demand occur at the same moment.
For a wholesale order taken today and dispatched in ten weeks, sale and demand do not occur at the same moment.  In Stok.ly, the forecast is built around the dispatch date, because that is the date that determined whether stock needed to be on the shelf.  Stock moving between your own locations is not counted as demand at the sending location.  Raw material consumed into a manufacturing run is.
The result is that a business running retail, wholesale and ecommerce together gets one coherent demand signal instead of three signals that disagree because there are three models in operation.

Statistical percentiles alongside mean averages, because averages hide spikes

Every rolling demand window carries statistical percentiles as well as a mean average.  A product averaging seven units a day with a 90th percentile of twenty-five behaves nothing like a product averaging seven with a 90th percentile of nine, and stocking both to the average will leave you short on one of them when sales spike.  This is covered in depth on the sales velocity analysis page.

G2 Customer Reviews

What do you like best about Stok.ly – Inventory-Centric Cloud ERP?
“we have been a user for the last 4 years and we cannot think of life without it for our retail business. it makes listing to shopify and other marketplaces easy, keeps inventory accurate online and the POS is easy to use. accurate inventory across all sales channels is the big win for us.”

★★★★★ 4.9/5 — 22 reviews on Capterra
·
★★★★★ 5.0/5 — 18 reviews on G2

The Numbers and How They Are Calculated

Demand forecasting fields, definitions and calculations
Field What it tells you How it is calculated How the buying team uses it
Moving average forecast Expected daily demand for a stable product Mean of actual daily demand over the trailing 30 days, excluding zero-stock days The baseline expectation for a settled, non-seasonal line
Demand trend ratio Whether demand is accelerating or slowing 30-day mean demand ÷ 90-day mean demand Above 1.0 buy more and protect cover; below 1.0 review open purchase orders
Trend-adjusted forecast Expected daily demand corrected for direction of travel Moving average forecast × demand trend ratio The figure that feeds reorder point and days of cover
Demand standard deviation How erratic demand is for this product Standard deviation of daily demand across the trailing 90 days Drives safety stock; high variability earns a larger buffer
Demand percentiles What a bad day actually looks like, not just an average day 30th, 60th and 90th percentile of daily demand across each rolling window Reveals spikes a mean conceals
Days of demand history How much evidence sits behind the forecast Count of days the data lake holds for this SKU at this location Calibrates how much weight to put on a new product’s forecast

What Actually Changes

Forecasting from a sales report compared with Stok.ly statistical forecasting
Sales report and min/max Stok.ly statistical forecasting
Where the number comes from A person, at implementation Actual demand behaviour, recalculated nightly
Response to a demand spike None, until someone notices Trend ratio lifts the forecast automatically
Response to a slowdown Continues ordering at the old rate Forecast and safety stock both reduce, releasing capital
Treatment of stockout days Counted as genuine low demand Excluded from sell-through at source
Handling of erratic demand Invisible; only the average is seen Standard deviation and percentiles both held
New product handling Treated identically to an established line Confidence explicitly reduced and stated
Maintenance overhead Periodic manual recalibration None

Questions the AI Answers From Pre-Calculated Data

  • What is the forecast daily demand for this SKU at this location, and which model produced it?
  • Which products are accelerating fastest this month?
  • Which products have decelerated below 0.7 against their 90-day average?
  • How many days of demand history do we hold for this product, and how confident should I be in its forecast?
  • Show me the demand standard deviation for these SKUs so I can see which are erratic.
  • Which products have a 90th percentile demand far above their mean?
  • Break the forecast down by channel and month for the next 90 days

How This Compares to Cin7, Brightpearl, Orderwise and Linnworks

Positions below reflect vendor-documented capability as at 27 July 2026.

  • Cin7. ForesightAI forecasts demand up to 24 months ahead, calculates reorder points, recommends safety stock and generates purchase orders using ABC segmentation, and recommends at least six months of history for good accuracy. It is a paid add-on for Core and Omni, priced on gross merchandise value. Cin7 does not document a pre-computed intelligence layer, a defined statistical service level, or exclusion of stockout days from sell-through.
  • Brightpearl. Forecasting and replenishment live in Inventory Planner, a connected Sage for Retail product, which forecasts from sales history, seasonality, stockouts and trends and can push approved purchase orders into Brightpearl. It depends on synchronisation between two products rather than reading one live record.
  • Orderwise. Data-driven forecasting using historical sales, seasonal trends, min/max levels and lead times, with automated purchase planning. Its public material does not identify this as AI or machine learning. MyForterro AI is invitation-only and proof-of-concept.
  • Linnworks. No demand forecasting capability of this kind; the product’s centre of gravity is multichannel listing and order routing.
Data That Drives Decisions

How to Test This in a Demo, Including Ours

Use the same anonymised data set and the same questions with every vendor, and insist on a live workflow rather than slides.

  1. Show the forecast daily demand for a named SKU at a named location, and state which model produced it and why.
  2. Confirm whether stockout days are excluded from the sell-through rate, and demonstrate it on a product that actually sold out.
  3. Show a product whose demand has accelerated in the last 30 days and demonstrate how the forecast responded and when.
  4. Show the demand standard deviation and the 90th percentile for a product with erratic demand, alongside its mean.
  5. Forecast a SKU with two weeks of history and ask the system to state its own confidence.
  6. Ask for the data timestamp: when was this figure last calculated, and does it recalculate without a user pressing anything?
  7. Change a product’s demand pattern in test data and confirm the forecast moves at the next recalculation.

Score on time taken, number of clicks, whether the answer is traceable to source records, and whether the insight becomes an editable draft without rekeying.

Frequently Asked Questions

What forecasting method does Stok.ly use?

Two models working together. A 30-day moving average provides the baseline for stable, non-seasonal products. A trend-adjusted version compares 30-day mean demand against 90-day mean demand and applies the resulting ratio as a multiplier, so a product changing direction is caught early rather than after it has already stocked out.

Does the forecast exclude stockout days?

Yes. Days on which a product had zero available stock are excluded from the sell-through calculation. Without that correction a product that sold out and then sat at zero looks like a slow mover, and every figure downstream of it — forecast, safety stock, reorder point, GMROII — inherits the error.

How often is the forecast recalculated?

Every night, for every SKU at every location, as part of a batch process that also recalculates safety stock, reorder points, days of cover, stockout risk, margin and GMROII. Nothing needs to be requested or refreshed manually.

How much history does Stok.ly need before it can forecast a product?

A forecast is produced as soon as any demand history exists, but the number of days of history is held alongside it and the AI states confidence accordingly. Five days produces a hedged recommendation; a full year produces a confident one.

Does Stok.ly handle seasonality?

The two models currently in production are a moving average and a trend-adjusted moving average. Neither is a seasonal decomposition model. The trend adjustment responds to a change in direction quickly, which covers a large proportion of real seasonal movement in practice, but a business with pronounced annual seasonality should test this specifically against its own history rather than assume it.

How is demand defined for a wholesale order fulfilled months after it is placed?

Demand is recorded on the date stock needs to leave the location, not the date the order was taken. For a wholesale order dispatched ten weeks after it is placed, the demand and the revenue are both recognised at dispatch, because that is the date that determined whether stock had to be available.

Do stock transfers between our own locations count as demand?

No. Moving stock from a warehouse to a store is not demand at the warehouse. Demand is recorded at the location that actually fulfils the customer order, which prevents internal movement from inflating the forecast at the sending location.

Does raw material consumed in manufacturing count as demand?

Yes. Inventory moving out of a location into a manufacturing run is a demand signal, recorded at the point the stock moves, so component forecasting reflects production as well as sales.

Can we see the forecast outside the AI assistant?

Yes. All forecasting and replenishment fields are available conversationally through the AI assistant and via API, including for Power BI, so a buying team can have a morning dashboard as well as a conversation. The numbers are identical because both read the same pre-computed fields.

  • This field is for validation purposes and should be left unchanged.

Contact Information

All our sales, support and development team are located in Hereford and Cheltenham in the U.K. Please submit the contact form and we will contact you within the same business day.

Technical Support

Sales Team & Customer Services

sales@stok.ly
Book a Demo