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.
Frozen warehouse
Stock, retailers' minimum shelf life, write-offs after the season.
Retailer deliveries
5 chains, 8 distribution centres, penalties for shortages.
Store shelf
Price, leaflet, display and weather.
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.pyModel
DuckDB and SQL: data quality rules, a star schema and a KPI layer. Every metric has one definition.
sql/01..08 · kpi_definitions.mdAnalysis
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/07Dashboard
Static HTML, CSS and JavaScript with SVG charts, no framework and no build step.
dashboard/ · VercelChecked 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.
What comes next
Building towards a connected data product
The current OldCamp experience is a lightweight web-based portfolio layer. It is designed to communicate the business context, data model and analytical logic behind the project.
The next stage is to connect this experience to curated outputs from the OldCamp Databricks environment, creating a transparent path from raw synthetic operational data, through Bronze, Silver and Gold layers, to business-facing analytics.
This project is intentionally evolving in public: from an interactive case study into a more complete, end-to-end data product.