โ† back

๐Ÿฝ๏ธEat Out Better

aimobile

Built with my friend Sean ยท currently in friends-and-family testing

Snap a photo of a menu, get every dish ranked for your dietary restriction, with the reasons in plain English and swaps to make a bad pick less bad.

Eat Out Better welcome screen
Welcome
Ranked menu results
Ranked results

The problem

Eating out with a dietary restriction is a guessing game. A menu tells you a dish exists; it doesn't tell you the cooking method, the hidden butter, or whether the "grilled" option is actually fine for high cholesterol. So people either interrogate the server, default to the same safe dish forever, or gamble and feel bad about it.

Where it came from

This one's personal. Sean and I both have high cholesterol, and every time we ate out we wanted the same thing: point a phone at the menu and know what's actually good for us. We're the target users, which is the cheapest validation there is. It's in friends-and-family testing now while we work out accounts, monetization, and marketing.

How I thought about it

A few principles shaped every call:

Non-judgmental. Inform, don't moralize. The user decides for themselves; the app never scolds, and it's careful to stay "helpful guidance," not medical advice.

Substitution-forward. Always offer a way to make a worse choice better, rather than just flagging it red.

Confidence over perfection. Nobody needs the mathematically "healthiest" dish. They need a defensible option they feel good about ordering. That reframed the output from a ranking engine into a confidence engine.

The product work

My piece was the architecture and the evals.

The data flow. I designed the pipeline end to end: menu screenshot โ†’ route to the right model for the job โ†’ LLM reads and scores the menu โ†’ structured JSON out โ†’ rank the dishes from that JSON. Keeping the model's job "return clean structured data" and doing the ranking on our side made the whole thing predictable and cheap to tune.

The eval suite. I built an eval set from four real menu photos where I already know what the output should be, so every prompt or model change gets scored against ground truth instead of vibes. That's what let us change things without silently breaking the ranking.

Analyzing your menu screen
Reading the menu