Case study

RunUp

A PWA that helps bar staff track stock, restock faster, and now count what's on hand from a photo instead of by hand.

Client
Personal project
Role
Product Design + Development
Year
2026
Tools
React, Vite, Tailwind CSS, Firebase, Claude (vision), Vercel
RunUp home screen showing today's shift stock status: 9 empty, 6 low, 4 complete, and a restock breakdown by zone.
The challenge

Bars usually track stock however works in the moment: a runner's memory, a whiteboard, a spreadsheet nobody keeps current. Everyone ends up recounting the same shelves shift after shift, and no one has a clear read on what's actually there.

The process

RunUp splits the bar into zones, one per fridge or shelf, each with a target stock level per product, and builds a restock list automatically, sorted by zone, so a runner knows exactly what to grab from the deposit. Once more than one person started using it on their own phone, I added a small backend, Firestore behind a Vercel function, so stock stays in sync no matter who's updating it. I also added a camera scan: point your phone at a shelf and a vision model reads back how many of each product it sees. Since I was building this solo, going with an existing vision API instead of training a custom model was the practical choice. There was no training data to gather, and it worked on the first test. A runner still confirms the count before it saves, since a crowded shelf can trip the model up.

The result

Runners use RunUp on shift today, each on their own phone, with the same stock numbers updating live no matter who's holding the camera.