Backyard Singularity
For Tracey · Liquor City Claremont

Craft beer vision scanner

A concept for recognising barcodeless craft cans at checkout: what the problem is, how the solution would work, and how the pieces fit together.

Concept · nothing built yetCraft Beer Vision ScannerOctober 2026
1

The problem

This is something I have experienced almost every time I buy the beers I enjoy at a bottle store. No barcodes, or barcodes reused across products, mean that delays are inevitable, as cashiers search for the right keyword, are often unable to find it, and end up calling in assistance from others to try to determine what keyword the beer was saved under.

Constant new releases are what makes a craft brewery a proper craft brewery. They're also what makes these beers hard to ring up.

1.1How shops cope today

Search by keywords

How it works
Staff key each beer into the till under a brewery, beer name or short form. Cashiers search for it.
Where it breaks
  • Relies on staff experience and knowing the range.
  • Keywords aren't obvious, especially for brewery collabs etc.
  • Can designs often don't make clear which text is the beer, the brewery or the style – not all cashiers are craft beer experts.
  • Different people save things under different names.

The shop's own barcode stickers

How it works
The shop prints its own barcodes and sticks one on every can, so it scans like any other product.
Where it breaks
  • Manual work on every single can.
  • Sticker and printer stock to keep up.
  • Condensation on cold, wet cans: stickers fall off or crumple.

1.2The new idea: Craft Beer Vision Scanner

A phone on a small stand (end hardware design tbc) at the till recognises the can and hands the till the shop's own code for that beer, exactly as a barcode scanner would. The cashier checks the name, price and pack size before anything is sent.

Bolts on, replaces nothing

To the till it looks like an ordinary barcode scanner. That means it should work with any POS capable of third-party hardware integration (almost all POS have this).

The cashier always decides

Final confirmation for the cashier – if the tolerance level is below a pre-determined configurable % it will show more than 1 option (in order of decreasing likelihood) and the cashier picks.

Fixes the names at the source

When stock arrives, the can is scanned once. The app reads it and files one clean record with every name/combination it might be searched by (i.e. it will also cater for manual interventions using keyword search).

The exact hardware and software are still open. A short proof of concept decides them, using real cans and a real till (see 2.5).

2

Architecture

2.1How the pieces fit together

Everything time-critical happens on the phone/device at the counter, so a scan doesn't wait on the internet. The cloud holds the shared catalogue, reads new cans when stock arrives, and keeps a log of every confirmed scan.

AT THE COUNTER IN THE CLOUD · BEHIND THE SCENES Android phone on a counter stand Camera takes the photo CameraX Reads the name on the can Google ML Kit text recognition Matches the can's design MediaPipe Image Embedder Local copy of this shop's catalogue Confirm screen: name, price, pack Works offline. Checkout photos stay on the phone. Till link (one of) A · USB bridge ESP32-S3 board plugs into a USB port, just like a scanner B · Bluetooth keyboard phone pairs with the till PC as a keyboard Your till Code lands in the item field, then Enter, as if scanned Nothing installed on the till. Nothing changed in the till. code keys Shared catalogue Supabase · EU-hosted database + storage Breweries and their aliases Beers, collab partners, aliases Till codes and prices per pack size Reference photos and fingerprints Scan log: every confirm, with price AI can-reading Reads a new can's breweries, collab partners, beer name, style, ABV and size Supabase Edge Function → Gemini Flash-Lite or Claude Haiku New stock, and a checkout backup Admin page single web page · Cloudflare Pages Import the till's item list Approve AI name clean-ups Manage aliases Beers still needing a till code Scan log and match tuning catalogue syncs down, scan log up photo of new stock reads and updates the catalogue item list export, once
Orange arrows are the checkout path. Grey arrows run in the background.

2.2At the till: the checkout scan

The name on the can is the most precise clue, so it's trusted first. The can's design is the fallback for when the text is stylised, glared or a confusing collab. Both checks start the moment the can is scanned, so the cashier only sees the answer.

Can set down under the phone tap, or auto-capture once the image is steady Read the name Google ML Kit → match against every name and alias Fingerprint the design MediaPipe Image Embedder → nearest reference photos Both run at the same time, on the phone, offline. 1 · Name match within tolerance? score above the name threshold and clearly ahead of the runner-up 2 · Picture match within tolerance? similarity above the picture threshold and clearly ahead of the runner-up 3 · Do name and picture each have ideas? including when they point to different beers 4 · Cloud AI read: “Looking closer…” about 1–2 seconds, then back to the name check same AI can-reading as new stock no no no retry yes yes yes still nothing Show that beer marked “strong” when the picture agrees Show that beer the design decides when the text is unclear Show up to 3 candidates, best first a disagreement is never settled silently Not found search by name (alias-aware) · retake · add as new 5 · Cashier confirms Name, breweries and price shown large · captured photo beside the reference photo Pack: single · 4-pack · 6-pack, asked whenever a beer has more than one till code 6 · Code typed into the till, then Enter, exactly like a barcode scan Every confirmed scan is logged with the price at that moment
The tolerance levels are configurable via the admin dashboard. They're set from the proof-of-concept results and can be tuned per shop.

Collabs match as a set of breweries in any order, so OC × ACBC and ACBC × OC are the same beer. Each confirmed scan can also add its photo as a further reference, so picture matching improves with use.

Intake of new stock can also (configurable) pre-populate suggested keywords to help cashiers if manual intervention is needed.

2.3When new stock arrives

The goal here is to also remove keyword search issues for the current manual path. It takes a little longer than an instant checkout scan (a couple of seconds is fine here) because it uses the cloud AI read, but is only done once per product.

  1. Photograph the can

    The front, plus an optional turn to catch collab names or small print.

  2. AI reads it

    Every brewery including collab partners ("x", "&", "collab with"), beer name, style, ABV and size, each with a confidence level.

    AI can-reading function
  3. Tidy the names

    Breweries are matched against known aliases. A new brewery gets suggested short forms for a person to approve.

  4. Already on file?

    The photo runs through the checkout match. If the beer is known, one tap adds the photo to improve matching.

  5. Find its till code

    Searches the till's item list by every name and alias and offers the top 3. If it isn't in the till yet, suggests a consistent name for staff to key in.

  6. Link pack sizes

    Single, 4-pack and 6-pack codes, each with its price.

  7. Save

    One clean record, plus its first reference photo and fingerprint.

    MediaPipe · Supabase
What one clean record holdsExample only, not real data – to be finalised in proof of concept
Breweries
OC Brewery OC × Afro Caribbean Brewing Company ACBCAfro
Beer
Mango Sour · sour · 330 ml
Till's old name
ACBC/OC MANGO SOUR 330 kept as a search key, not thrown away
Till codes
Single 4471 · 4-pack 4472, each with its price
Found by
afroACBCOCmango sourACBC/OC or the camera
Also kept
ABV, short description and a clean front photo, plus reference photos for matching

To get started, the till's existing item list is imported once and the AI proposes clean names for a person to approve. The same flow in bulk mode photographs the range already on the shelf.

2.4The components, step by step

StepWhat happensComponentRuns on
1Read the nameOn-device text reading pulls the brewery and beer name off the can and matches it against every name and alias.Google ML Kit Text RecognitionPhone, offline
2Match the designIf the text is ambiguous, the image is compared with the shop's reference photos, by converting the image data into a high-dimensional numeric representation.(Machine learning, not a large AI model, so it can run on-device)MediaPipe Image EmbedderPhone, offline
3Check toleranceConfigurable thresholds decide whether a match is clear enough, and how far ahead of the runner-up it must be.Per-shop settingsPhone
4Quick confirmThe cashier sees name, price and pack and taps Confirm, or picks from up to 3 candidates.Android app (Kotlin, Jetpack Compose)Phone
5Send to the tillThe till code is typed into the till followed by Enter, as if it had been scanned. The code is also always shown on screen.USB bridge (ESP32-S3) or Bluetooth keyboard modeTill
+Read new cansReads breweries, collab partners, beer name, style, ABV and size when stock arrives. Backup at checkout.Supabase Edge Function + Gemini Flash-Lite or Claude HaikuCloud
+Keep the catalogueBreweries, beers, aliases, till codes, reference photos and the scan log.Supabase (Postgres + storage)Cloud, EU
+Manage itImport the item list, approve names, manage aliases, review the scan log.Single web page on Cloudflare PagesBrowser

2.5Still to prove

The order of the checks is fixed. Which parts do each job is decided by testing with real cans from the shop and a real till.

Open questionOptionsHow it gets decided
Is reading the name on the phone good enough as the first check?ML Kit on its own, or the cloud AI read used more oftenBake-off on 25–30 real cans, including collabs and lookalikes
Picture matching on the phone or in the cloud?MediaPipe on the phone, or a hosted model (Vertex multimodal / DINOv2)Same bake-off
Which AI reads cans best?Gemini Flash-Lite or Claude HaikuSame bake-off, scored against the shop's real till names
How does the code reach the till?USB bridge, or the phone as a Bluetooth keyboardA 15-minute test at a quiet till
Phone on a stand, handheld, or another device?Stand with tap or auto-capture; handheld with a volume-key shutter for wet handsTest different options and decide
STEP 1

Talk through how the till, naming and new stock work today.

STEP 2

Laptop bake-off on real cans against the shop's real till names.

STEP 3

A simple app that shows the right code on screen, timed against how cashiers find beers now.

3

Where it could go

The scanner is the first step. Once every craft beer has one clean record, other things become possible. These are ideas for later, not plans.

Delivery listings without the retyping

Each record already holds the style, ABV, description and a clean photo. The same data could produce ready-to-upload Uber Eats and Mr D listings for beers with no barcode, which today have to be created by hand one at a time. Potential for automated listings depending on brewery collaboration (see next idea).

Breweries send their label once

A shared master library of label artwork, supplied by breweries at or before release, allowing pre-rendered photorealistic can image generation, so a new beer is recognised at every till on day one and nobody has to photograph it at the input stage. (Feeds into delivery app listings tool and future ideas...)

The bigger aim

  • Better experiences for customers
  • More reach for South Africa's craft breweries, with less manual work / cost / friction standing in their way to finding new audiences and customers.
  • Ultimately, I would like to help to steer the SA craft scene in general to get closer to what I've experienced in other markets like the UK, the US and Australia.

This is one idea of several. Let's talk it through, and hear what else gets in the way, over a beer.

Backyard Singularity: Embrace the chaos.