Marlowe & Finch Bar tools · Pour cost
Pour-cost variance · partner integration

Someone else counts the bottles.

The inventory platform does the counting — that's its job, and it's good at it. Our job is what happens next: its variance numbers land in the quality layer as telemetry, alongside every agent metric, with the same freshness checks and the same audit trail. This is a bridge, not a build. Read by Tommo, Beverage

Blended pour cost
23.3% vs 22.4% target
Weighted across five categories, last 30 days
Variance at retail
$2,140 /mo
Stock depleted but never rung through the till
Feed freshness
41 min ago
Last partner sync · freshness SLA 24 h

Connected sources

Three feeds, one telemetry stream. Partner data stays clearly labelled as partner data.

WISK inventory feed

Partner data

Computer-vision bottle counts and stock depletion by SKU. Nightly count deltas plus a weekly full audit, pulled over the partner API every 6 hours. 214 SKUs tracked.

We never touch the counting logic. Backbar or Bar-i drop onto the same connector shape.

Connected · last sync 41 min ago

POS sales feed

Till data

Rung sales by PLU in 15-minute batches. Variance is only meaningful as sold versus depleted — the till provides the "sold" half, the partner provides the "depleted" half.

Connected · last batch 12 min ago

Keg telemetry (UC23)

In-house

Flow-meter yield on Tommo's six rotating taps. The counting platforms sit this one out — flow-metered draught is outside their model — so beer variance arrives from our own keg tool instead.

Connected · streaming

Why partner, not build: WISK, Backbar and Bar-i already own bottle counting credibly. Competing there would be building a worse scale. The differentiated piece is underneath — variance as first-class telemetry in the quality layer, with freshness guards and an audit trail the counting apps don't offer.


Pour cost by category, against target

Last 30 days. Brass fill = running over target; the dark tick is the target.
Spirits86 SKUs · WISK feed
21.0%target 20.0% · +1.0 pt · $820/mo
CocktailsBatch + à la minute · WISK feed
23.4%target 22.0% · +1.4 pt · $640/mo
Draught beerSix rotating taps · UC23 flow meters
24.8%target 23.0% · +1.8 pt · $460/mo
Wine by the glass22 SKUs · WISK feed
29.6%target 30.0% · −0.4 pt · $130/mo
Non-alcoholicSodas, cordials, zero-proof · WISK feed
18.2%target 20.0% · −1.8 pt · $90/mo
at or under target over target category target Scale 0–35% pour cost

Draught note: the beer line is the one category the partner feed doesn't cover — its variance comes from the UC23 keg tool's flow meters. From the quality layer's side it's just another telemetry source; the pane below treats them identically.


Variance drill-down: one SKU, 6% over

The bridge surfaces the gap and the candidate causes. A human decides which story is true.

Straits dry gin — house pour, 700 ml

+6.0% vs theoretical
Expected depletion30.2 btl
Counted depletion32.0 btl
Gap+1.8 btl
Variance at retail$610
Most consistent

Overpour

Free-pour drift on the well. The gap scales with volume and clusters on Friday and Saturday late shifts — the signature of heavy hands at speed, not a one-off.

Test: jigger audit on the weekend late shift; blind pour-test three 30 ml pours per bartender.

Partial fit

Pricing / PLU mapping

The gin sits in three cocktails. The new pandan gimlet special was rung under a generic "cocktail special" PLU for nine days — depletion with no matching SKU sale. Explains roughly 0.6 of the 1.8 bottles.

Test: re-map the PLU and re-run the period.

Weak fit

Spillage / breakage

No breakage logged this period, and unlogged spillage rarely repeats in the same weekly pattern. Kept on the list because staff under-report spills everywhere, but the shape of the data doesn't point here.

Test: spot-check the spill log against the variance calendar.

Recommended, not applied: re-map the gimlet PLU today, run the jigger audit this weekend, re-check the SKU next cycle. The bridge raises the flag and ranks the stories; nothing changes in the partner system or on the till without a person doing it.

The bridge into the quality layer

One pane. Variance events from the partner feed land next to agent-quality telemetry, with the same statuses and the same audit trail.
TimeSourceEventDetailStatus
17:42WISK bridge variance.sku_over_threshold Straits dry gin +6.0% vs 2.0% threshold · drill-down opened Flagged
17:42WISK bridge feed.sync_ok 214 SKUs reconciled · 6 h cadence held OK
16:05uc01 phone agent call.quality_scored Reservation call scored 9.1/10 · no policy breaches OK
15:30uc23 keg telemetry keg.yield_low Tap 4 pale ale at 87% yield vs 92% theoretical Watch
14:12uc13 pairing agent rec.accepted Pairing recommendation accepted at table 12 OK
13:58WISK bridge variance.category_over Draught +1.8 pt vs target for the rolling 30 days Watch

The point of the pane: a pour-cost breach, a soft keg yield and a low-scoring phone call are the same kind of thing — a signal about the operation that deserves a threshold, a status and a paper trail. The partner keeps counting; the quality layer keeps watch.


Break it: the feed goes quiet for nine days

The failure path, demonstrated. A stale number presented as current is worse than no number.

What the dashboard shows

23.3% Stale — as of 21 June · feed silent 9 days

The headline pour cost is struck through and date-stamped, category bars grey out, and every figure that depends on the partner feed carries the stale marker. The POS and UC23 keg feeds keep flowing — only the partner-fed numbers are demoted. Nothing pretends.

What the layer did

  1. T+26 hfeed.freshness_breach raised the first time the 24 h SLA slipped; sync retries logged, not spammed.
  2. T+48 h — escalated once to Tommo: "WISK feed silent since 21 June — variance figures frozen at last good sync." One notification, not nine.
  3. Day 9 — figures still frozen at last-known-good, still labelled. The guard also blocks downstream use: the drill-down and the monthly variance report refuse to run on stale data.

Root cause in this scenario: the partner API token expired. Two-minute fix — once someone knows. Knowing is the product.

Why this is the differentiator: the counting apps show you their last number; they don't tell you when their own pipeline into your reporting has died. Data freshness is a quality metric like any other, so the bridge treats a silent feed exactly the way UC12 treats a mis-scoring agent — flag, escalate once, refuse to act on bad ground.

Under the hood How the bridge works — and why it stays a bridge

This is deliberately a partner integration, not a build. WISK, Backbar and Bar-i own inventory counting credibly — computer vision, scales, specialist service — and competing with them would mean building a worse bottle counter. The same call we made on rostering: integrate the incumbent, differentiate underneath. The bridge is a read-only connector that pulls depletion and variance by SKU from the partner API, joins it to POS sales, normalises the result into telemetry events, and hands them to the UC12 quality layer with a freshness SLA attached.

The connector shape

  1. Pull, normalise, emit. Partner API polled on a 6-hour cadence; every sync becomes a feed.sync_ok event and every reconciled gap a variance.* event with SKU, period, magnitude and retail value. Backbar or Bar-i slot in by swapping the pull adapter; the event schema doesn't change.
  2. Read-only, both directions that matter. The bridge never writes to the partner system or the till. It ranks hypotheses (overpour, spillage, PLU mapping) from the shape of the data, and a human acts. Same guardrail discipline as the pricing engine's margin floor.
  3. Freshness as a first-class metric. Every feed carries an SLA. Breach it and the layer demotes dependent figures to stale, escalates once, and blocks downstream reports from consuming the frozen numbers. A silent pipe fails loudly.
  4. Draught comes from our side. Flow-metered kegs are outside the counting platforms' model, so the UC23 keg tool feeds the beer line into the same pane. The layer doesn't care whether a source is partner or in-house — only that it's labelled, fresh and thresholded.
  5. Where it goes next. Tab anomaly detection (UC25 — voids, comps and walkouts clustering by shift) belongs under the same telemetry umbrella, and per-cocktail pour-cost engineering can reuse the same joined sales-versus-depletion data without another integration.
Full use-case write-up — the problem, benefits and vendor landscape: UC26 — Pour-cost variance integration → Related concept — the quality layer this bridge feeds: UC12 quality & observability mock-up →