Cake & Confectionery FactoryS&OP control room
فارسی

Twelve weeks out, the Kolucheh line runs into Nowruz — and the plan already knows it.

Weekly demand forecast (Holt-Winters), a capacity- and labor-constrained production plan solved as a linear program, material requirements, and a bullwhip analysis of purchasing, generated by food-manufacturing-sop-planning-engine.

Where the value is

Cash that can be released once, and savings that repeat every year — found by the engine in this plant's own data.

Value opportunities (green = one-off cash, blue = per year)

Revenue by month and line, last full year

How each opportunity is measured

OpportunityTypeValueBasis

Line profitability, last full year

LineRevenueMaterialsDirect laborContributionMarginPer machine-hour

The bullwhip effect: how a real need becomes tied-up cash

Every purchase order starts as the warehouse's calculated need. Each layer adds its own "just in case" — and the extra stock is cash the plant doesn't have.

From warehouse need to purchase — average PO (need = 100)

Where the excess stock comes from

Cash tied up in excess raw-material stock, weekly average

Excess stock value by material: today vs managed policy

Largest over-buys

Material · PONeed → boughtExcess valueDeal net

The managed policy — what changes

  • One declared tolerance per material, set from consumption volatility at a 95% service level ( on average) — instead of three stacked guesses ( in total).
  • A deal gate: take extra quantity for a supplier offer only if the discount beats the cost of the cash it ties up, capped at 10% of the need.
  • One transparent ledger: every PO records need → each layer → purchase (fact_replenishment_chain), so each tolerance has an owner and a number, and the gap is visible before the money is spent.

Layer tolerances, deal odds and the 55%/yr cost of cash are documented simulation assumptions (analytics/bullwhip.py) — replace them with your ERP's PO history to get the real numbers.

The 12-week plan at a glance

Forecast, capacity-constrained plan and the first-order service and cost KPIs.

Forecast vs. planned output, by week

Bars: units. Line: fill rate. Red bars mark the weeks where demand outruns what the plant can actually make.

Where the shortfall actually happens

Bottleneck line — weekly output

Which SKUs absorb it

Revenue lost to unmet demand, by SKU

Production lines, 12-week scorecard

Planned output against forecast for every line; revenue at list price.
LineForecastPlannedFill rateUnmet unitsRevenue plannedRevenue lost

Production lines in depth

Execution quality from the two-year production log, plus how hard the plan pushes each line.

Where each line loses output (share of scheduled capacity)

Monthly OEE by line

Planned utilization by week — the tighter of machine hours and labor hours

Line fact sheet

LineOperatorsOEEScrapDowntime / dayChangeover lossAttendanceAvg plan load

Workforce attendance by month (present ÷ scheduled)

Attendance by shift

Waste: where the plant scraps product

Scrap costed at material plus direct labor per unit, from the two-year production log.

Scrap cost per year (bars) and scrap rate (line), by line

Monthly scrap cost (bars) and scrap rate (line)

Top 10 products by scrap cost, per year

What reaching the scrap target is worth

ProductScrap rateCost / yrSaving / yr

Materials at risk, and what to reorder

The MRP nets the plan's material needs against projected stock and safety-stock targets.

Raw materials below their safety-stock target, by week

Largest recommended reorders over the horizon · Lead: supplier lead time · Short: weeks below safety stock

MaterialOrder qtyValue (USD)LeadShort

The warehouse in depth

Raw-material stock, cover against the safety-stock target, and inbound reliability — from the two-year inventory ledger.

Days of cover now vs safety-stock target (red = below target, amber = excess)

ABC: a few materials carry the consumption value

Raw-material stock value by month

Material fact sheet

MaterialClassOn handValueCoverSafetyLeadTurns / yrTime below safetyStatus

Inbound: supplier reliability

SupplierShare of spendOrdersOn timeAvg delayPayment terms

The ledger above comes from the base simulation, where each order is sized to the calculated need. The bullwhip section at the top shows the extra stock an over-ordering chain adds on top of it.

Cash conversion cycle

Trailing 90-day DIO + DSO − DPO, weekly. Steady-state weeks only (see docs/DATA_DICTIONARY.md).
—
Average CCC, last 12 weeks of data
Raw materials (DIO) barely move the number — short shelf life keeps finished-goods stock near zero, so inventory isn't where the cash is tied up.

The real driver is the gap between how slowly retail/wholesale customers pay (DSO) and how quickly perishable-ingredient suppliers must be paid (DPO) — dairy suppliers run near cash-on-delivery, while large retail chains routinely stretch 50–90 days.

This is computed from simulated receivables and payables ledgers (analytics/working_capital.py), not asserted — the same inventory and purchasing decisions the rest of this engine plans around are what move this number.

Forecast accuracy, backtested

8-week rolling backtest, WAPE per SKU. Overall: —.
Best-forecasting SKUsWAPEHardest-to-forecast SKUsWAPE