Marlowe & Finch Bar tools · Cellar
Keg & cellar management

Six taps, honestly accounted for.

Every keg tracked from cellar to glass — what it should have poured, what it actually poured, and where the difference went. One tap is leaking margin this week; the cellar tells the story, not a name. Read by Tommo, Bar

Litres poured this week
412 L
Across six rotating taps, Mon–Sun
Cellar yield vs theoretical
95.4%
House theoretical is 97% after foam & line allowance
Margin in the gap
$1,460 /mo
Mostly tap 4 — see the variance callout below

The six-tap board

Keg fill from flow meters, yield from POS vs depletion. Freshness windows are per style.
Tap 1 · 50 L kegDay 5 of 21

Straits pale aleKestrel & Co. Brewing · 5.2%

Keg remaining
62% · 31 L
Freshness window
16 days left
Yield vs theoretical
96.8% / 97%
Tap 2 · 50 L kegDay 9 of 28

Rain tree lagerJurong Hill Brewing · 4.6%

Keg remaining
34% · 17 L
Freshness window
19 days left
Yield vs theoretical
97.9% / 97%
Tap 3 · 30 L kegDay 3 of 24

Black kopi stoutTanjong Brewing Works · 6.0%

Keg remaining
78% · 23 L
Freshness window
21 days left
Yield vs theoretical
96.2% / 97%
Tap 4 · 50 L kegVariance flag

West coast IPALongboat Brewing · 6.4%

Keg remaining
41% · 20 L
Freshness window
14 days left
Yield vs theoretical
89.1% / 97%
Tap 5 · 30 L kegDay 16 of 18

Calamansi gosePasir Panjang Ales · 4.2%

Keg remaining
12% · 3.6 L
Freshness window
2 days left
Yield vs theoretical
96.5% / 97%
Tap 6 · 30 L kegDay 2 of 35

Pomelo orchard ciderGuest tap · Bukit Cider Co. · 5.0%

Keg remaining
88% · 26 L
Freshness window
33 days left
Yield vs theoretical
98.7% / 97%

How yield is read: litres rung through the POS against litres the flow meter says left the keg. House theoretical is 97% — a 3% allowance for foam, line fill and the first pour after a keg change. Anything more than 3 points under theoretical for two consecutive sessions raises a flag; one bad Friday doesn't.


Tap 4 is pouring 8 points under

Foaming or shrinkage? The agent works the physical causes first — and won't point at a person.
The variance, in litres

Since Friday's keg change, tap 4 has depleted 29.8 L but the POS accounts for only 26.6 L sold. That's 89.1% yield against a 97% theoretical — roughly 7.5 glasses of IPA per keg that left the cellar and never reached a docket.

Depleted (flow meter)29.8 L
Sold (POS, 425 ml & 285 ml pours)26.6 L
Unaccounted3.2 L · ≈ $118 so far this keg
PatternWorst in the first hour of each session

The pattern matters more than the total: the gap clusters at session open, which points at the kit warming overnight — not at anything a person is doing mid-shift.

Cellar assistant — variance triage
Bar managerTap 4 is short again. Who's over-pouring on the IPA — is it whoever opened Saturday?
Cellar assistantI won't attribute this to a person — flow data can't see hands, and the pattern here doesn't look like pouring behaviour anyway. The loss clusters in the first hour of each session, which points at the kit. In order of likelihood:
  • Glycol temperature drift overnight — cellar logger shows 4.8 °C at open vs the 3.5 °C set point. Warm beer foams; foam gets binned.
  • Line 4 clean is 3 days overdue — yeast build-up causes exactly this kind of creeping foam loss.
  • Coupler seal on the new Longboat keg — fitted Friday; worth reseating.
I've flagged all three for Tommo to check before tonight's session. If yield is still under after the physical causes are cleared, the next step is a shift-level pattern review through the tab-integrity module — reviewed by a human, never a name from me.

Line-cleaning schedule

Seven-day cycle per line. Brass-edged rows are overdue.
Line Currently pouring Last cleaned Due Status Note
Line 110 m python run Straits pale ale 28 Jun 5 Jul On cycle Clean at keg change if it falls first
Line 210 m python run Rain tree lager 29 Jun 6 Jul On cycle
Line 310 m python run Black kopi stout 30 Jun 7 Jul On cycle Stout line — full caustic, not just rinse
Line 412 m python run West coast IPA 22 Jun 29 Jun 3 days overdue Cleaning skipped during Friday's keg change — candidate cause for the tap 4 variance
Line 512 m python run Calamansi gose 27 Jun 4 Jul On cycle Sour beer — dedicated line, never rotate a lager onto it
Line 6Guest tap · 8 m run Pomelo orchard cider 30 Jun 7 Jul On cycle Cider line — rinse between every keg

The rule: a line more than 2 days overdue blocks its tap from the "all clear" state on the board, and any variance flag on that tap is automatically annotated with the missed clean — so the schedule and the yield story stay one story, not two spreadsheets.


What to rotate next

Ranked by sell-through and freshness. Suggestions only — Tommo picks the beer.
1

Tap 5 — clear the calamansi gose this weekend

3.6 L left and 2 days of freshness window. Sell-through has been slow (11 L/week vs 24 L/week board average). Suggest a happy-hour feature Friday to clear it rather than tipping it — then rotate in the yuzu wit from the cold room, which suits the same drinkers.

$130saved vs tipping
2

Tap 2 — order the next lager now

Rain tree lager is the board's workhorse at 31 L/week; at current velocity the keg blows Thursday. Jurong Hill needs 3 days' lead time, so the order window is today. Two 50 L kegs covers the weekend fixture crowd.

Thuprojected blow
3

Tap 6 — hold the cider, watch the pace

The guest cider is two days in and already at 13 L/week — stronger than the last two guest taps. If it holds through the weekend, worth asking Bukit Cider Co. about a standing slot rather than a one-off.

13 L/wkearly velocity
4

Cold room — one keg over par

Three kegs racked and conditioning: the yuzu wit (ready), a brown ale (ready Monday), and a second IPA ordered before the tap 4 variance appeared. Hold further IPA orders until tap 4's yield is back over 94% — no point pouring more margin through a foaming line.

3 kegsconditioning
Under the hood How the cellar board works — and why it never names names

The board joins three feeds that usually live apart: flow-meter depletion per line, POS sales per product, and the cleaning log. Yield is simply sold-over-depleted against a house theoretical; freshness windows are set per style (a hop-forward IPA gets 14 days on tap, a cider 35). The interesting part is the triage logic, not the arithmetic.

Design decisions

  1. Physical causes before people, always. Variance triage walks temperature logs, cleaning schedule, and keg-change events before anything else, and the agent is hard-blocked from attributing loss to a named individual. Flow data can't see hands; guessing would poison the room. Anything left after physical causes are cleared is handed to the tab-integrity module as a shift-level pattern for a human to review.
  2. One story, not two spreadsheets. An overdue line clean automatically annotates any variance flag on that tap. Half of "mystery shrinkage" in small venues is a skipped Tuesday clean; connecting the two kills the mystery.
  3. Flags need persistence. A yield flag requires the gap to hold for two consecutive sessions. One chaotic Friday of foam is noise; the same 8 points on a quiet Sunday is signal.
  4. Genuine whitespace at this size. The credible inventory vendors (WISK, Backbar, Bar-i) centre on bottle counting and spirits pour-cost — WISK explicitly excludes beer-heavy flow-meter venues. Six taps and a cold room is exactly the venue they skip, which is why this is a build, not a buy. Where a venue does run WISK for spirits, the right move is feeding its variance data into the same telemetry layer, not rebuilding the counter.
  5. Everything lands in the quality layer. Yield, freshness and cleaning events are telemetry like any other agent's — the UC12 observability layer sees a foaming line the same way it sees a mis-answered phone call: a quality signal with a timestamp and a cause hypothesis.

On the roadmap

  1. Fixture-aware ordering. Feed the sports-fixture and payday calendar into keg ordering, so the lager order ahead of a 3am kick-off weekend is two kegs, not one.
  2. Markdown to clear, not to discount. Wire the "clear this keg" suggestion into the dynamic-markdown engine, so a dying gose becomes a priced happy-hour feature with a floor, not a free-for-all.
  3. Cellar sensor depth. Today's temperature story leans on one glycol logger; per-line temperature at the tap would separate "cellar warm" from "python warm" and sharpen the triage.
Full use-case write-up — the problem, benefits and vendor landscape: UC23 — Keg & cellar management → Related concept — the human-reviewed shift-pattern handoff in the triage lives with tab anomaly detection (UC25); the quality telemetry underneath is UC12.