OldCamp Inc.
A simulated company environment
Knowledge base · KPI glossary · data model · method

One definition for every number.

Every OldCamp project works on the same products, retailers and calendar. Here are the KPI definitions, the shared data model and how the results are checked.

KPI glossary

Every measure has one definition

The same name means the same thing in every project. The formula next to each definition is exactly what the SQL computes.

Data model

Dimensions shared by every project

Each project has its own facts but the same dimensions, so the numbers can be combined, as in the margin bridge.

Products

  • 20 SKUs in 6 brands: Campfire, Trail, Little Campers, Family Camp, Reserve, Wild Oat
  • Categories: sticks, cones, multipacks, tubs, premium, plant-based
  • Invoice price and unit cost per SKU

Retailers

  • 5 retailers: Dyskont Oszczędny, HiperMax, Market Rodzinny, Sklepik Plus, StacjaGo
  • Channels: discounter, hypermarket, supermarket, convenience, petrol station
  • 8 distribution centres, fill rate targets and penalties in the contracts

Plants and lines

  • Ełk and Kalisz
  • 4 production lines
  • Flavour order, changeovers, production days

Calendar and weather

  • 104 weeks: October 2024 to September 2026
  • Fiscal year from October to September
  • Weekly temperature against normal

Value chain

From the production line to the store freezer

Each project covers a different stretch of the same chain. Each bar shows the stages a project covers.

Production

Ełk and Kalisz, 4 lines. Changeovers, start-ups, line capacity.

WasteFill rateForecast

Frozen warehouse

Stock, retailers' minimum shelf life, write-offs after the season.

WasteFill rateForecast

Retailer deliveries

5 chains, 8 distribution centres, penalties for shortages.

Fill ratePromoForecast

Store shelf

Price, leaflet, display and weather.

Promo
Waste Analytics · what it costs to make Case Fill Rate Monitor · will the stock reach the retailer Promo & Pricing · does the sale make money P&L Bridge · how much margin is left Demand Forecasting · how much retailers will order

How it works

One backbone, from raw data to decision

All the projects follow the same path. Every step is automated and can be reproduced with one command.

Data

A Python generator creates two years of weekly data with a season, weather and the mess of a real ERP. A fixed random seed makes the result reproducible.

generator/generate.py

Model

DuckDB and SQL: data quality rules, a star schema and a KPI layer. Every metric has one definition.

sql/01..08 · kpi_definitions.md

Analysis

Root causes, a flavour-order optimiser, a week-by-week forecast, promo and allocation simulators, all on parameters estimated from the data.

optimise.py · forecast.py · sql/07

Dashboard

Static HTML, CSS and JavaScript with SVG charts, no framework and no build step.

dashboard/ · Vercel

Checked against the ground truth built into the data

The data is synthetic, so the true answers are known. The model never reads them, and its results are compared with them.

−2.30 / −2.19multipack elasticity: estimated against true
67%of cases with the right root cause, measured counterfactually
84.4 / 84.1 kgwaste per changeover: model forecast against the pilot measurement
41.8 / 42%Wild Oat growth a year: estimated against true
PythonSQLDuckDBJavaScriptSVGGitHub ActionsVercel