02 / Selected work

Pucclab

EmbeddedAIInteraction Design

Pucclab is a physical AI espresso lab that connects brewing data and tasting feedback to guide the next shot.

Pucclab in use: selecting a coffee, preparing the recipe, following the extraction, tasting, and receiving the next test.
My role
Concept, interaction, firmware & backend
Context
Working physical prototype
System
ESP32 · FastAPI · local AI

A lab, not a recipe screen

I conceived and built Pucclab across the interaction, ESP32 firmware, backend, notebook interface and AI recommendation loop. The working prototype connects the handheld controller, extraction telemetry and coffee history rather than presenting a standalone AI demo.

Dialing in espresso is an experimental process. Coffee changes with origin, roast, age, equipment, and preparation. A useful system therefore needs more than one target recipe: it needs to remember what was tried, what physically happened, how the cup tasted, and which direction is worth testing next.

Pucclab turns that loop into an instrument. Select or scan a coffee, adjust dose, ratio, grind, RPM, and temperature, then brew with the espresso machine's physical paddle. During the shot, the display becomes a live gauge for flow, time, and weight. The finished result remains on screen and leads directly into a seven-axis tasting.

The AI barista

The recommendation layer is built around evidence, not a generic chat prompt. It receives the current recipe and extraction, tasting scores, coffee metadata, roast age, the calibrated grinder coordinate, the fixed equipment profile, and up to eight previous shots for the same coffee.

It first decides whether the shot needs correction or exploration. A good result can be repeated unchanged. When the shot is already technically sound, the barista can propose two sensory directions—for example more body at a shorter ratio or more clarity at a longer one—and explain what to watch for. Grind changes stay on the real integer steps of the grinder, so the advice remains physically actionable.

One distributed instrument

The handheld ESP32 controller owns the interaction: a 400 × 240 monochrome memory display, rotary encoder, scanner, battery, and a ten-pixel progress strip. ShotStopper lives inside the espresso machine and connects to a dedicated BLE scale. It provides brew-by-weight control, telemetry, manual bypass, remote stop, and signed over-the-air maintenance. Home Assistant bridges wake, sleep, and brew temperature.

Timing-critical safety remains local to ShotStopper. The backend can be offline without taking control away from the physical paddle, and Pucclab caches its coffee catalog so the collection remains browsable during reconnection.

Coffee memory

The local-first notebook stores coffee facts, scan associations, baseline recipes, grinder calibration, shot results, tasting, and the recommendation attached to each experiment.

Coffee Notebook showing coffee cards, baseline recipes, roast information, and shot counts.
Coffee Notebook showing coffee cards, baseline recipes, roast information, and shot counts.

The shot history makes differences visible across the collection: dose, beverage weight, ratio, duration, and grind remain comparable instead of disappearing after each extraction.

Shot history showing proportional dose and beverage bars with ratio, time, and grinder setting.
Shot history showing proportional dose and beverage bars with ratio, time, and grinder setting.

Unknown vial codes, barcodes, and coffee URLs can become drafts directly from the device. The web interface completes or enriches the record before it joins the active notebook.

Add Coffee interface for manual records, scanned sources, drafts, and URL enrichment.
Add Coffee interface for manual records, scanned sources, drafts, and URL enrichment.

What the prototype demonstrates

  • One physical workflow from coffee selection to tasting and the next experiment
  • AI recommendations grounded in measured shots, equipment and sensory feedback
  • Local brew control that preserves the physical paddle and manual bypass
  • Calibrated grind settings that preserve physical burr distance across maintenance

Why I built it

Pucclab treats espresso as a creative practice that can still be measured, remembered, and improved. The goal is not to automate taste. It is to give each shot enough context that the next decision becomes more precise—and to keep that intelligence inside the physical ritual of making coffee.