The problem
Gallatin Brewing runs twelve fermentation vessels in a 20-barrel brewhouse. Until BrewEdge, Derek and his two-person QA team were doing manual temperature and gravity checks every four hours — spreadsheets, paper logs, tribal knowledge. When a ferment stuck or a yeast pitched too warm, they usually found out at the next check. By then the batch was often unsalvageable.
Three to four batches a quarter were being dumped or sold as seconds. At Gallatin’s scale that’s real money, and it was getting harder to justify the SKU expansion they wanted to do.
What we did
Week one: sensor hardware. We deployed twelve Raspberry Pi Zero 2 W nodes, one per vessel, each with a temperature probe and a Tilt-compatible gravity sensor. All nodes broadcast over LoRa to a single Pi 4 gateway on the brewhouse floor — no WiFi dependency, no single point of failure at the vessel level. NixOS declarative configs meant every node was identical and reproducible.
Week two: time-series storage. We stood up Postgres with TimescaleDB on the gateway machine and piped all sensor telemetry into it at 30-second intervals. Grafana dashboards went live for each vessel: real-time temperature curves, gravity trend lines, attenuation progress.
Weeks three and four: the intelligence layer. We integrated Claude via a lightweight Python daemon that reads the last six hours of telemetry per vessel on a five-minute cadence. Claude flags anomalies — a gravity plateau that looks like a stuck ferment, a temperature spike that suggests contamination risk, attenuation rates that are trailing recipe targets — and writes structured alerts with a severity level and recommended action. No alert fatigue: Claude only fires when the signal is genuine.
Week five: recipe management and QA logging. We built a simple web UI where Derek’s team logs brew notes, attaches photos, and closes out batches with a pass/fail and tasting notes. Every log entry is timestamped against the sensor record so post-mortems have the full picture.
Week six: testing, training, and handoff. We ran two complete brews end-to-end with the team using BrewEdge as their primary QA tool. Fixed edge cases (the oak aging barrel room runs ten degrees colder and confused the anomaly model until we gave it a zone flag). Shipped final documentation and left the system fully on NixOS so any config change is a git commit.
Results
In the eight weeks since launch, Gallatin has had zero undetected stuck ferments. Batch failure rate is down 67% compared to the same period last year. QA labor — the manual check rounds — is down 40% because the sensors are doing the watching. Batch-to-batch consistency, measured by terminal gravity deviation from recipe targets, improved 15%.
Derek is now running two new seasonal IPAs that would have been too risky to try before: the sensor coverage gives him confidence to experiment. The system paid for itself in the first month.
