Demand planning, on your own machine

A forecast you can stand behind.

Stratos turns the sales exports your team already produces into a reviewed, auditable twelve-month plan. The models compete, the planner decides, and every number can explain itself.

I — The problem

Every month, one planner faces two hundred products and a spreadsheet that answers to no one. The busiest weeks of the year arrive on a calendar the spreadsheet has never heard of; the formula that sets next quarter’s stock was written by someone who left; and when a number is challenged in the room, there is nothing behind it to show.

So the plan is negotiated instead of read. Sales pads it, production discounts it, finance re-does it — and the company quietly runs on three private versions of the truth.

Two hundred products. Twelve months. One person to answer for every number.

II — Who this is for

The quantity is decided long before the order is.

Stratos is built for businesses that decide how much to make or buy before anyone asks for it — where the same products are produced month after month, and getting the quantity wrong costs money in both directions.

That is most of fast-moving consumer goods, and it is just as true of the people who supply them — the packaging, the ingredients, the co-manufacturers whose own volumes are set by someone else’s plan. It fits retailers too, wherever a line is predictable enough to be made rather than ordered.

What these businesses share is not an industry. It is a monthly decision, made under pressure, with consequences that arrive weeks later and land on somebody else’s desk.

Everyone downstream builds on your number.

III — What forecasting is

What the past already says about next month.

Every plan assumes something about next month. A forecast is that assumption written down, where it can be checked — and honest about how sure it is.

Take one product and lay out what it actually sold, month by month, for the last few years. You will see a shape — a level it tends to sit at, a drift up or down, a season that returns, and the odd month that broke the pattern for a reason someone remembers.

A forecast reads that shape and extends it. What matters is the second part: it also says how far out it could be. Near months are tighter, because less can happen. Far months are wider, because more can. A single number with no band around it is not a forecast — it is a wish with a decimal point.

The peak moves. A model keyed to civil months does not. RAMADAN · 18 FEB – 19 MAR 2026 RAMADAN · 8 FEB – 9 MAR 2027 CUT-OFF · 31 JUL 2026 WHAT HAPPENED · MAR 2026 STRATOS · FEB 2027 A CALENDAR-BLIND MODEL · MAR 2027 it simply repeats last year’s March Wrong twice over: short in February, the month that mattered — then stock left over through a March peak that never came. A S O N D J F M A M J J A S O N D J F M A M J J 2025 2026 2027 Stratos scans for the market factors that move each product, and re-fits them every cycle.
Fig. 1 — the same product either side of the cut-off. Ramadan falls eleven days earlier each civil year, so the peak moves. A model keyed to civil months does not.

The season does not sit on the same month each year.

Ramadan opens about eleven days earlier every civil year. In 2026 it ran from 18 February to 19 March, so the demand it drives landed in March. In 2027 it runs from 8 February to 9 March, so most of it lands in February instead. The peak has moved a month, and nothing about the product has changed.

A model that only understands civil months cannot see this. It learns that March is the big month, and repeats March. That is wrong twice in the same year: short of stock in February, when the demand actually arrives, and then holding stock through a March peak that never comes.

Stratos does not treat the season as a property of the month. It scans for the market factors that move each product — Ramadan and the two Eids, the school year and the breaks in it — keeps the ones that measurably matter for that product, places them on the civil calendar for every year ahead, and re-fits them every cycle. The peak moves because the driver moved, which is the only reason a peak ever moves.

The engine is fitted to your data, not the other way round.

There is no single forecasting method that suits every business, or even every product inside one. So Stratos is engineered around what you actually sell and what your history can actually support.

Before anything is forecast, every product is sorted by what its own data can carry. A product with a long, clean history gets the full competition. One with a shorter or patchier record is held to looser expectations and given a simpler method that suits it. One that sells in occasional bursts rather than steadily is recognised as such and treated differently. And a product with too little history to say anything honest about is not modelled at all — it is left out rather than handed a number that looks confident and is not.

The same applies at the level of the business. What counts as a season, which calendar drives your demand, how far ahead you plan, how much cover you are willing to hold — all of it is configuration, set for your operation when the system is installed, and changed without anyone writing code.

What this is not

Nothing here forecasts your demand with a neural network. These are established statistical methods, chosen because their workings can be opened and argued with. Stratos does have an AI tool, further down this page — but it is a diagnostician, not a forecaster, and it is not permitted to produce a figure of its own.

Every figure on every screen decodes into the steps that produced it. That is the point: a number you cannot defend in a meeting is not worth having, however it was produced.

IV — How it works

One cycle, every month.

Stratos does not replace the planner’s judgement. It gives that judgement a place to stand, a record, and a way to be checked next month.

01

Ingest

The same export your team already emails. Stratos maps it to a clean monthly picture, proposes the cut-off, and waits for the planner to confirm.

02

Review

Months that broke pattern are flagged with their evidence — a collapse, an event, a spike. The planner rules on each. Nothing is corrected quietly.

03

Simulate

Several model families re-forecast months they never saw. The winner must beat doing nothing at all, or it does not win.

04

Publish

One plan is signed and becomes the record. Every publication is revisioned; nothing is overwritten, and amendments carry a reason.

05

Grade

Next cycle, last cycle’s promise is measured against what actually happened — in kilograms and in money, at every level of the portfolio.

06

Roll up

The published plan loads the production lines, sizes the buffer, and feeds the executive view of volume, revenue and gross profit.

Inside steps two and three: the pass that runs twice.

The first scan for unusual months knows nothing about the model. The second one is the model — and what it did not see coming comes back to you.

The loop: scan, rule, train, be surprised, look again WHAT THE MODEL DID NOT SEE COMING GOES BACK FOR A SECOND LOOK — advisory, never automatic 010203 040506 Pattern scan You rule Train & compete Model surprises Grid search Publish forward Months that break the product’s own shape — found without a model. Keep, correct or mark. Nothing changes on its own. Every family forecasts the twelve months it was never shown. The shipped model’s own surprises, scored in its own noise. Challenge the factors; every alternative re-fitted and ranked. Twelve months ahead, signed, revisioned, never overwritten. THE APP FINDS YOU DECIDE THE APP COMPUTES Every flag waits for a person. The loop never closes itself.
Fig. 2 — the detection pass runs before the model, and again from inside it.

Forecast Simulation.

Before a model is allowed to forecast your next twelve months, it has to prove itself on the twelve it was never shown.

The split, the test, the scoreboard 1 · THE SPLIT THE PRODUCT’S WHOLE HISTORY TRAINED ON EVERYTHING BEFORE HELD OUT THE LAST 12 MONTHS One split, one honest test. The model is never shown the year it will be judged on. 2 · THE TEST THE TWELVE HELD-OUT MONTHS EVERY GAP IS SCORED — ITS SIZE AND ITS DIRECTION WHAT HAPPENED THE WINNER THE OTHERS Every family forecasts the same hidden months. Only then are they scored. 3 · THE SCOREBOARD MUST BEAT DOING NOTHING SARIMAX · airline SARIMAX · sma2 ETS damped Seasonal naïve Seasonal MA Moving average Naïve WINS Shorter is better. Ties go to the model you can explain.
Fig. 3 — the split, the test, the scoreboard.

A model that fits your history perfectly has proved nothing; it has only memorised. So Stratos cuts each product’s history once, twelve months back. Every candidate family is trained on everything before the cut and then asked to forecast the twelve months it has never seen — the same twelve months, for all of them, so the comparison is fair.

The families are not variations on one idea. They run from a plain repeat of last year, through moving averages and exponential smoothing, up to methods that can take account of outside factors like Ramadan. Each is fitted to the product on its own, because the rule that suits one product rarely suits the next.

Each month’s gap between forecast and reality is measured, and the families are scored on the total weighted error and on bias, which says whether a model leans high or low rather than merely missing. The winner is the one that actually forecast best, with a preference for models a planner can explain when the margin between them is thin. One competitor is always in the race: the seasonal naïve, which simply repeats last year, and anything that cannot beat that has not earned the product.

Where nothing clears the bar, the item is not quietly passed off as fine — it is flagged on the page, with the gate it failed. And the whole competition is re-run every cycle, so a model that stops working loses its product to another one without anybody having to notice it slipped.

← Back to the instruments

Outlier scanning, with a Kalman innovations filter.

Not “which month looks odd” — which month actually surprised the model that is doing the forecasting.

The surprise, measured in the series' own noise THE SERIES, AND WHAT THE MODEL EXPECTED RAMADAN RAMADAN WHAT SOLD WHAT THE MODEL EXPECTED THE SURPRISE, IN UNITS OF THIS SERIES’ OWN NOISE 0 +3.2 SURPRISE −2.8 STOCKOUT? FLAGGED — THE PLANNER RULES. NOTHING IS CORRECTED AUTOMATICALLY. inside a known event, the bar is raised
Fig. 4 — the surprise, measured in the series’ own noise.

Most tools flag a month because it is far from an average. That catches every Ramadan and misses the quiet disasters. Stratos asks a sharper question: given everything the model knew a month ago, how surprising was what actually arrived? The filter carries a running expectation for each product and a running measure of that product’s own noise, and scores each month’s surprise in units of that noise. The tolerances are deliberately lopsided — a sudden collapse is more often a stockout or a delivery that slipped than a real fall in demand, so it is questioned sooner than an equally large jump. Inside a known event the bar is raised, because a surprise during Ramadan is usually the calendar rather than the market. What breaks tolerance is flagged, with its evidence, and handed to the planner. Nothing is ever corrected on its own.

← Back to the instruments

Calendar intelligence.

The biggest weeks of your year do not sit still. Stratos knows where they will be, per product, for every year ahead.

The peak that walks backwards through the year JANFEBMAR APRMAYJUN JULAUGSEP OCTNOVDEC Y1 Y2 Y3 Y4 Y5 THE SAME EVENT, ELEVEN DAYS EARLIER EACH YEAR — across five years it moves from May into April. WHERE STRATOS PUTS THE PEAK BEFORE IT HAPPENS ≈ 6 WEEKS OF DRIFT · FOUR YEARS AT ELEVEN DAYS
Fig. 5 — five years of one product, aligned to the civil calendar.

The Hijri year is about eleven days shorter than the civil one, so Ramadan and both Eids march steadily backwards through the Gregorian months. A model that only knows “March” sees a peak that arrives early, then earlier, then splits across two months — and reads all of it as noise. Stratos places the events themselves on the calendar for every year ahead, along with the weeks that lead into them, the school year and the breaks in it. It then measures, per product, how much each of those actually moves demand: the run-up to Eid matters enormously for gifting lines and hardly at all for a staple. The result is a forecast that expects a February peak to become a January peak, because it knows why.

← Back to the instruments

Feature scanning, selection & grid search.

Which signals actually move this product — and what happens if the planner disagrees.

From candidate signals to a defended shortlist 1 · THE CANDIDATES Ramadan · the month Ramadan · run-up Ramadan · the month after Eid al-Fitr · the month Eid al-Fitr · run-up Eid al-Adha · the month Eid al-Adha · run-up School term · in session School term · returns Trading days in month Every product is offered the same list. None is assumed. 2 · MEASURED ON YOUR HISTORY NO EFFECT Eid · run-up Ramadan · month Ramadan · run-up School · returns PULLS DEMAND DOWN Eid al-Adha · month Trading days School · in session DISCARDED — TOO WEAK Bars show effect; whiskers show how sure. 3 · CHALLENGED, THEN RE-RANKED TOO CLOSE TO CALL — WITHIN 2 POINTS OF THE BEST FACTOR SET PENALTY vs. THE BEST Eid run-up + Ramadan month + run-up Eid run-up + Ramadan month Eid run-up + Ramadan month + school Ramadan month + run-up Eid run-up only No calendar factors at all best +1.4 +1.9 +5.6 +9.2 +24.7 IN USE ← THE COST OF NO CALENDAR Fit, minus a penalty for every factor used. Lower wins.
Fig. 6 — from candidate signals to a shortlist that can be defended.

Stratos offers every product the same list of candidate signals and lets the history decide. Each candidate is measured for how much it moves demand and how confident that measurement is; the ones that cannot earn their place are dropped, and the survivors are shown with their strength, not merely their names. Then comes the part that matters in a review meeting. If a planner believes a signal is missing — or believes one that survived is nonsense — the grid search re-fits the alternatives and ranks them side by side, including the option of using no calendar factors at all. The argument stops being a matter of seniority.

How the ranking works, in plain English

The trap. Adding another factor always makes a model fit the past a little better — even a meaningless one. So you cannot choose by fit alone, or you would always choose the biggest set, and the model would be memorising your history rather than learning from it.

The fix. Each combination is scored on how well it explains the history minus a penalty for every factor it used. A factor only improves the score if it earns more than it costs. The penalty gets steeper when history is short relative to the number of factors, which matters here — four years of monthly numbers is not much to spend. Lower is better, and the table shows each set’s distance from the best rather than a raw number, because only the gap means anything.

The honest part. A gap of less than about two points is not a real difference — those sets are statistically indistinguishable from the winner. Stratos draws that band rather than hiding it, so a tie is presented as a tie. When several sets are level, the choice belongs to the planner, and the sensible rule is to take the simplest one you can explain to the room.

← Back to the instruments

Capacity check.

A plan the factory cannot build is not a plan. Stratos says so before the month begins, not during it — and what happens next is built to whatever rule you want.

The plan, pressed onto the lines EVERY LINE, EVERY MONTH JFMA MJJA SOND Oven 1 Oven 2 Wafer Pack A Pack B THESE TWO DO NOT FIT LIGHTER → HEAVIER LOAD BEYOND WHAT THE LINE CAN MAKE Two months on Oven 2 do not fit. Everything else does. THE GAP, MEASURED WHAT THE LINE CAN MAKE FEB 420 t HEADROOM MAR 310 t OVER THE CEILING Stratos measures the gap. What should happen next is built to your rule.
Fig. 7 — the published plan, weighed against the lines that must make it.

Once the plan is published, Stratos routes it onto the production lines that actually make the products and compares each month’s load against what that line can produce. The result is a single grid: every line, every month, shaded by how hard it is being pushed, with the months that do not fit marked plainly. Where a month overflows, the shortfall is quantified rather than described — this many tonnes, on this line, in this month — and the neighbouring months show their headroom, so the size and the shape of the problem are both visible. What Stratos will not do is decide for you. It does not schedule the factory, it does not move volume between months, and it never quietly trims the forecast to make the arithmetic work. It shows the collision early enough that the people who own the plant can deal with it while there is still time.

← Back to the instruments

Safety stock from measured error.

How a buffer is actually sized — in five moves, each one visible in the application.

From measured misses to a defensible buffer FORECAST − ACTUAL C · 90% A · 98% trimmed SHELF-LIFE CEILING SERVICE LEVEL 95.0 94.6 PROMISED REALIZED 1 · THE MISSES, COLLECTED 2 · GATHERED INTO A CURVE 3 · THE SERVICE LINE, PLACED 4 · CAPPED BY SHELF LIFE 5 · GRADED IN PUBLIC
Fig. 8 — from measured misses to a defensible buffer.

Stratos never sizes a buffer from a textbook constant. It collects the shipped model’s real misses over the review window, gathers them into their own distribution, and places each item’s service target on that curve — higher for the A items that carry the business, lower where a miss costs little. The buffer is then capped by the item’s shelf life, because stock that expires is not safety. And the promise is graded in public: the service level the plan committed to, printed next to the service level the shelves actually delivered.

← Back to the instruments

VI — The AI advisor

The forecast is statistics. This is what explains it.

When a number looks wrong, the useful question is never “what does the model say”. It is “is this real, and why”. Stratos has a diagnostician for that, built so that it cannot make anything up.

Open an item and you can ask, in your own words, why its forecast missed. What answers is not a chatbot with an opinion about your data. It is a set of the application’s own read-only tools — the same code that produced the run — with a language model on top whose only job is to decide which tool to run next, and to explain what came back.

The sequence is fixed rather than improvised. It begins by checking whether the app itself is lying: it recomputes the accuracy figure you were shown, from the run’s own records, independently of the code that displayed it. If that does not reproduce, it stops and tells you the fault is in the software. It will not go looking for a business explanation for a number that is wrong for a technical reason. Only once the figure is proved honest does it ask what the model was doing, then why, then what to do about it.

The tools measure. The model explains. Only one of them may produce a number. YOU ASK “Why did we miss February by so much?” IN YOUR OWN WORDS THE APPLICATION’S OWN TOOLS · READ-ONLY, DETERMINISTIC Recomputethe grade Decomposethe miss Probe thedetectors Check thecalendar Drop toSKU grain Refit themodel They read the run’s own records and call the engine’s own fitting code — not a copy of it. THE MODEL MAY NOT COMPUTE A NUMBER A TOOL CAN COMPUTE WHICH TOOL NEXT A MEASURED NUMBER The model chooses the next tool, and explains what came back. IT ORCHESTRATES AND WRITES · IT DOES NOT MEASURE THE FINDING every figure traces back to a tool · a proposal, never a change Switch the model off and the tools still run. The diagnosis is slower by hand, not weaker.
Fig. 9 — the tools measure, the model explains, and only one of the two is allowed to produce a number.

It is not allowed to do the arithmetic.

The tools read the run’s own records and call the engine’s own fitting code — not a reimplementation of it, the same code. When the advisor tests a what-if, the application first refits the shipped model on unchanged history and checks the answer against what was actually published. If those do not agree, the what-if is not trusted and you are told so rather than shown a number.

Building a deliberately incapable assistant is an odd thing to do, and it is the whole point. A tool that can quote a figure it invented is worth nothing in a meeting where the figure is challenged. This one can only quote arithmetic you could repeat yourself.

Off until you want it, and then it is yours.

The advisor ships switched off. Turning it on is a decision made once per installation, and it then runs on your own account with your own provider. We are not in the middle of it, we do not hold the key, and we never see the conversation.

If your policy allows no external service at all, leave it off. The tools underneath are ordinary application code and keep working without it; the same diagnosis can be driven by hand, one step at a time.

What leaves your building when it is on

The item’s name, its demand history, and how the product family is made up of SKUs — because a diagnosis conducted in code names would not be defensible line by line, which is the point of having one.

What does not leave: money figures, transaction records and customer identifiers. That boundary is enforced by a test that scans what the tools are allowed to return, rather than by anyone remembering to honour it.

VII — What changes for you

What your month looks like afterwards.

Nothing here promises a better number. The measurable change is in how the month runs, what you can show when a figure is challenged, and how much of the argument disappears.

The cycle finishes

The same sequence every month, in a known amount of time, whoever is running it. Not a fortnight of chasing exports and rebuilding formulas.

Every number opens

Any figure on any screen decodes into the steps behind it. When sales challenges a number in the room, you open it rather than defend it.

Last month is graded

This cycle measures the promise the last one made, in kilograms and in money. You find out whether last month’s plan was any good before you commit to this month’s.

The factory objects early

Once the plan is published it is weighed against the real production lines, month by month. A line running over shows up in that review, not in the week it was due to be made.

Buffers are sized, not guessed

Safety stock comes from the model’s own measured misses for that product, rather than a blanket number of weeks applied to everything.

One version survives

One plan is signed and becomes the record. Sales, production and finance argue with the same document instead of maintaining three.

The forecast stops being an opinion and starts having a record.

VIII — How it is delivered

On your own machine. Under your name.

Stratos installs on a machine you control — in your building or on a server of your own. There is no tenant, no shared cluster, and no copy of your sales history anywhere you have not put it.

It runs where you are

A single install on hardware you control — a machine in your building, or a server in your own cloud account. Your sales data is read where it sits and never sent to us for processing.

Every cycle is kept

Each month’s run is archived whole — the data, the decisions, the published plan. Old cycles can be reopened and read, never rewritten.

Configured, not coded

Your product hierarchy, calendar, measures and service policy are settings. Adapting Stratos to your business does not mean a development project.

Plain language throughout

The application explains itself to a planner, not to a statistician. Every recommendation says what it is and why, in words.

Your data, however it arrives

A spreadsheet your team already emails, an export from your ERP, or a database we read directly. We fit the intake to what you have rather than asking you to change it.

The factors are yours

Whatever actually moves your demand — a religious or civil calendar, a promotion diary, a tender season, a competitor’s move — we put it in front of the models and let your history judge it.

IX — The demo

Step inside.

The demo is the real application, running over a fictional client — John S Foods, a Gulf biscuits and snacks manufacturer invented for the purpose. Every figure on every screen was computed by the same engine that would run in your building.

  • A full planning cycle, from raw export to a published, signed plan.
  • The Forecast Simulation with its scoreboard, item by item.
  • Last cycle’s promise graded against what actually happened.
  • Capacity load and safety stock built on the published plan.

One email at most, to follow up on your visit. No mailing list, no third-party trackers.

Rather talk to a person first? WhatsApp us · sales@elunia.cloud