MEATMASTER / OFFLINE-FIRST COUNTER TOOL

Built for the cooler. Not the boardroom.

An offline phone app a working meat-counter clerk built with AI, using real shift data, to replace cardboard and paper lists.

TODAY’S COUNTER

SCAN → PLU MATCHED

Production list ready
Case refill worksheet ready
Pull today | Mark down tomorrow

01 / THE REAL PROBLEM

A frontline worker out-engineered the problem with a phone.

Daily spot-checks, production, refills, and markdowns were already a system. It just lived on cardboard and a paper list. The app was shaped by the real constraints: a phone is the only device, the cooler has no signal, and the store’s locked-down inventory system should not be touched.

MeatMaster is a paper-speed bridge, not a data pipe. Its output matches the existing entry screen one-to-one, avoiding double entry and avoiding job risk. Building it was also the point: a practical way to learn how to ship a genuinely complex project with AI as a pair, not a vending machine.

02 / CAPTURE ONCE, INFER EVERYTHING

One fact becomes the workday.

A pack date is not just a date. Once captured and confirmed, it can power expiry, what to pull, the pull order, and the route through the case. The human confirms; the app does the arithmetic.

CAPTURED FACT

PACK DATE

EXPIRY

PULL ORDER

WALK ROUTE

CASE PLACEMENT

03 / THE DAILY WORKFLOW

The phone does the remembering.

Scan a package and the app names the product while recording the count. The morning list scales recipes into a per-day cooking playlist. The case worksheet manages refills for marinated cuts, wings, kabobs, and salmon. Sell-by logic keeps one simple rhythm: pull today’s date, mark down tomorrow’s.

Reference decks turn the counter into a map: a paged case layout, a garnish walk order, and a one-pan meal library. The point is a workday that stays at paper speed, with fewer things to hold in your head.

04 / THE CLEVER ENGINEERING

Reliability wins when you’re standing in a walk-in.

OFFLINE FIRST | NO BUILD STEP

Plain HTML, CSS, and JavaScript with no framework, bundler, or server. A service worker precaches the app shell so it works in a dead-signal cooler. Update-on-load and controller-change reload fixed a real failure: an installed app stuck on an old version for days.

BARCODE ENGINE | ZBAR, NOT ZXING

Variable-weight scale labels use GS1 DataBar, which the first library could not see. zbar-wasm decodes DataBar plus UPC/EAN at any rotation, and an Otsu-threshold fallback rescues glare and low-contrast photos. EAN-13 price fingerprints enable exact package matching and duplicate-scan detection.

DATA THAT PROVES ITSELF

The 66-page manual became machine-readable input: recipe cards, ingredients, steps, and photos were extracted without hand typing. A per-page column-boundary method repaired the manual’s shifting two-column step layout. Ingredient totals validated themselves against yield: 28 of 28 matched.

DERIVED DATA | HARD BOUNDARIES

Integer date triples avoid timezone drift and enforce a plausibility gate for future OCR. The case map is the source of truth for garnish walks and refill lists, so one fix re-sorts everything downstream. Every new feature lives in a self-contained module that cannot corrupt a live count.

05 / BOSS FIGHTS, PROOF, AND NEXT

Every awkward constraint became a rule worth keeping.

A scanner library that could not read DataBar was replaced. Glare and curved labels got a threshold fallback. A hosting quirk that dropped WebAssembly files became a guarded one-file rule. Two-column PDFs got page-specific parsing. Date math moved to integers. Two AI coding agents sharing a repo got strict handoff and version discipline. The honest platform limit remains: pure iOS web apps cannot supply the haptics that would be nice here, so the limitation is documented rather than faked.

FULLY OFFLINE

0 LINES TYPED

28 / 28 VALIDATED

FORMULA | 0 FAILURES

NEXT | BARCODE-ANCHORED OCR + FORECASTING

The next scanner step uses barcode corners to locate and de-rotate sell-by date crops, then routes the read through the existing plausibility gate. Barcode decode stays decoupled from slower OCR so the working scanner stays instant. Logged counts can then support consumption-based reordering and production forecasting.

A frontline worker built real software for the work in front of them. That is the whole point.