The file format
One row per site, with these columns (headers in any order; unknown columns are ignored):
id,tier(market,warehouse,packaging,dosing,productorraw),name,country,lat,lon(decimal degrees, south and west negative).- Consumption points:
base(demand a month),growthandlongGrowth(% a year in years 1–3 and after),season(± %),launch(YYYY-MM) andramp(months). - Every other site:
capacity(a month, in its tier's unit). Warehouses:handling(days) andcover(weeks of safety stock). CMOs:leadandrelease(days) andyield(%). suppliers: sites of the tier directly above, asid:share, separated by|; add:daysto set a lane's transit time instead of estimating it from the distance.expansionsasYYYY-MM:+amountandoutagesasYYYY-MM:months:loss%, separated by|.candidatesfor the investment optimiser, aslabel:add:capex:build:qualify, separated by|(build and qualify in months); add:opexfor a running cost a year.
After the sites, an optional table headed setting,value (or a Settings sheet in Excel) sets the product, startYear, startMonth (1–12), the bill of materials (packPerUnit, kgPerSachet, rawPerProduct), the seasons (demandPeak, rawPeak, rawSeasonMax), the investment optimiser's packValue, discountRate, terminalYears and currency, and the tiers' own names and units (tier.dosing.name, tier.dosing.unit…). Comma, semicolon or tab separated; with semicolons, decimal commas are read.
The file stays in your browser: nothing is uploaded.
What to do
Every action is priced by solving the month-by-month plan with it and without it, one after another, so that actions which depend on each other show up. The order comes from the plan, not from an AI model. It solves dozens of plans, so it takes a few minutes.
What reaches the shelves · within capacity
The plan within capacity: no site makes or ships more than it can, so some demand may go unsupplied. Sites build stock ahead of a peak (up to the limit you set), re-source to suppliers with room, and draw safety stock in a crunch; what still cannot be made is lost. Every consumption point counts the same unless you give it a priority in the editor.
This plan has no real stock cost: set a pack value, unit cost and holding cost under Capacity investment. Until then stock is almost free, so the fill rate is an upper limit, not an economic plan.
What more capacity is worth
What 1,000 more packs a month of capacity at each site would earn over the 13 years, in present value, from this plan's shadow prices. It is the value of the first extra unit: it falls as capacity is added, because the next bottleneck takes over. For the same reason a low value does not rule a line out: expanding one site can make another worth building. Run the investment optimiser to price a whole expansion.
Tier outlook
Each tier's load against its capacity. Year 1 is the average month; the peaks are the busiest single month at any site of the tier, in the 3-year monthly window and in the 10 yearly periods after it.
Network Studio
The chain by tier, from raw ingredients on the left to the shelves on the right. Squares are production sites, hexagons warehouses, pills consumption points; arrows are transport routes, as wide as their share. Add sites, draw routes, drag a site up or down its column, and edit anything in the inspector. Ctrl+Z undoes.
Connect: drag from a site to one in the next tier (from a supplier to its customer, or back). Add: click where the new site should go. Delete: click a site or a route.
Southern milk seasons and southern demand run six months behind the north. A ring marks a site that runs out of capacity at some point in the 13 years. Click a site to see its plan.
Custom parameters: define your own fields for sites and routes
Your own fields, such as a certificate, an owner, CO₂ per tonne or a cost: shown in the inspector and the tables, used to colour the diagram, and carried by every file. They describe the network; the plan does not use them.
Selected site
Load by tier
Every site's load in a tier, stacked, against the tier's combined capacity. The tier can have spare capacity in total while one site is short: sourcing shares are fixed.
Capacity requirements · every site, 46 periods
Utilisation = load ÷ capacity. The first 36 columns are months; the last 10 are years. A yearly cell is coloured by its busiest month (or by its average; switch above), so a seasonal overload is never averaged away. Hover a cell for the numbers; click it to see what drives it.
Capacity to add
Capacity investment
Which candidate expansions are worth building, and about when. A year-resolution screening model, separate from the month-by-month plan above: it finds the candidates and a rough timing. Every package it chooses is then priced again by the month-by-month plan, and that price is the one to trust. Capex, running costs and the margin lost on unmet demand are all discounted alike, and capacity is credited for a number of years after the horizon. Define candidates (capacity added, capex, build and qualification time, and an optional running cost a year) on a site in the Network Studio inspector.
Pack value, unit cost and holding cost also set what stock and lost sales cost in the month-by-month plan. The example's figures are illustrative assumptions.
No site has a candidate expansion defined yet. Add one to a site in the Network Studio inspector.
Lead-time ladder
How far ahead each tier must act for a pack to reach the shelf, along the main sourcing path (the largest share at each step).
Consumption forecast · packs a month
The final consumption forecast that drives every tier above. One shared scale, so the markets compare directly. Demand peaks in the local cold season: southern markets peak six months after northern ones.
The network as tables: every site and route
Changes re-plan at once. Each site sources from one or more sites of the tier directly above; shares are normalised, and a transit time left blank is estimated from the distance (by road within 1,500 km, by sea beyond). Expansions are written YYYY-MM:+amount, separated by |. Switching scenario discards edits; save your network as a file or a link to keep it.
How Tierwise plans, and what it leaves out
Method. Requirements planning, tier by tier from the consumer upstream. The forecast at each consumption point is what must arrive there each month. A warehouse ships that and builds or draws its safety stock (a cover of weeks of coming demand), and the shipment has to leave it the handling time earlier. A CMO's output for month m must be made the release time earlier (quality testing and hold), grossed up for its yield; its inputs must arrive the production lead time earlier still. What a site needs is split across its suppliers by their sourcing shares, shifted earlier by each lane's transit time and converted through the bill of materials: in the example, 1 pack = 20 sachets, 1 sachet = 25 g of powder, 1 t of powder = 0.7 t of dairy base.
Tracing. The plan is linear, so every site's load splits exactly into the consumption points behind it and into its direct customers: that is what the selected site shows under "What drives the load".
Capacity to add. For each site, the additions that keep it at or under the target in every month, reviewed once a year: each is sized for the busiest month until the next review (for a raw-ingredient site, the leanest milk month counts) and rounded up to two significant digits.
Time. Planning runs month by month over 156 months, so every lead time shifts the plan exactly, including fractions of a month. The view shows 36 months, then 10 years, each year built from its own 12 months. A year's average and its busiest month are both kept.
Latitude. Demand peaks in the local cold season (southern markets six months apart). Raw-milk capacity swings with the grass season, more strongly away from the equator. Transit is estimated from great-circle distance: by road within 1,500 km, by sea beyond, unless a lane sets its own.
Limits. The requirement plan assumes unlimited capacity (lot-for-lot): it shows where and when capacity is short, and how much to add. Inventory is held only at warehouses, as safety stock. There is one product. Sourcing shares are fixed over the horizon. All figures in the example are illustrative.
Within capacity. Switched on, a linear program solves the whole 13-year horizon at once, month by month, with no site above its capacity. It decides what each site makes or ships, which lane carries it, how much stock to build ahead of a peak (stock may be held up to the months you choose; warehouses keep at least two months for safety stock) and what demand cannot be supplied. The objective is in money: a lost pack costs the pack value, and a pack in stock costs the unit cost × the holding cost each month, both discounted. A network without those settings uses fixed penalty weights, in which stock is almost free. Sourcing can keep the planned shares, re-source among the existing (qualified) lanes, or open every lane from the tier above. The model runs over a warm-up before the first month and a run-out after the last, so the edges of the horizon are not distorted. It is solved by HiGHS in your browser, in a few seconds.