A complete, open system: real growth data, kinetic models, a monitor that turns a log into a verdict, a simulator that tests it, and three ways to run it.
01 · DATAGrowth records373 milk records from ComBase, published experiments, every parameter with its source.data/
02 · MODELSKineticsSquare-root growth law, Gompertz shelf life, Baranyi reference, four rival laws and a neural law.dairyguard.kinetics · growthlaws
03 · ESTIMATORThe monitorShelf life used, chance the limit was crossed, hours left at 4 °C, and a plain verdict.dairyguard.monitor
04 · EVALUATIONVirtual cold chain240,000 trips where the truth is known; AUC, paired bootstrap, calibration.dairyguard.benchmark
05 · DEPLOYMENTRuns anywherePython package and command line, C firmware for an ESP32, and a browser app.cli · firmware/ · demo/
$ pip install -e . && dairyguard assess examples/truck_fridge_failed.csv
DairyGuard Kinetic 2026.10 | Pasteurised milk, psychrotrophic spoilage flora (literature parameters)
Log: 288 readings over 72.0 h, max 26.0 C, 5.0 h above 8 C in 1 warm event(s)
Shelf life used (textbook batch) 127 % [########################]
Chance it crossed the limit 81 % [###################.....]
Hours left if held at 4 C 0 h (typical batch)
Hours left, cautious 0 h (9 batches in 10 reach this)
Verdict: LIKELY OVER THE LIMIT
Limit: FSSAI aerobic plate count limit for pasteurised milk, 3 x 10^4 CFU/mL
Firmware · tested against PythonOn a low-cost chipA C core keeps 64 plausible batches in under 2 kB on an ESP32, drives a green, amber or red light, and matches the Python monitor at every reading.
Browser appWatch a fleet liveSix deliveries judged in real time, a trip you can draw with your finger, and the science behind every verdict.