
Our Story
Every meal tells a story worth sharing
Restaurants Aren't Static
I created Umami because I got tired of looking at a 4.2-star average and having no idea what it actually means. Is this place still good? Did they hire a new chef? Did everyone leave? A single number doesn't tell you any of that.
We've all been there—the restaurant that used to be amazing but clearly lost the plot. Or you find this place you've never heard of and the ratings have climbed 0.8 stars in the last year. That trajectory tells you everything. It shows you which places are getting better, which are coasting, and which are genuinely slipping. That's the story that matters.
So instead of showing you a frozen snapshot in time, Umami shows you the trend. Watch a place rise. See when quality dips. Find the restaurants that are actually on an upswing. Once you start looking at ratings this way, you can't go back.

Behind the Scenes
Coding of the Future
Getting Started
I built the whole backend and database myself from scratch. Migrations, APIs, the aggregation logic—everything. This mattered because it forced me to actually understand the problem deeply. If you don't know how the data flows, you can't build anything real on top of it.
Growing It
Then the scope got bigger. Google Places integration. Complex data seeding. Dealing with messy real-world data. That's when I started working more closely with AI tools—Claude, mostly. But the difference was I could actually evaluate what it suggested because I'd built the foundation myself. I knew what was right and what was sketchy.
Where We Are Now
Now I use AI for a lot of the implementation work. Code reviews, data work, frontend polish. And it's fast. But here's what I learned: this only works if you know your system well enough to catch mistakes. I can read AI-generated code and spot problems. I know what questions to ask. That foundation I built early made everything that came after actually useful.
What That Actually Means
- →You need to understand your own system before you can use tools effectively
- →Being pragmatic means using the right tool for the moment, not sticking with what you know
- →Good fundamentals let you judge whether AI output is actually good
- →Modern tools can make you faster without making your code worse
- →You have to be willing to change how you work when the situation calls for it
Under the Hood
The Technical Foundation
What's Inside
- →React frontend with Next.js (TypeScript for fewer surprises)
- →Node.js backend running Express
- →MySQL database that keeps track of everything
- →Secure login with JWT tokens
- →Real reviews pulled from Google Places
What Actually Works
- →Rate each dimension separately (food, service, vibe, price). Your 4.5 for food might be a 2.5 for the atmosphere.
- →Every month, we take a snapshot. Six months from now you can compare how things have shifted.
- →Actual historical data so you can see the trend line, not just today's number.
- →Charts make it obvious when something is getting better or worse.
How It Actually Works
- Getting Real Data: We pull actual reviews from Google, then spread them across years with realistic variation so you can see real trends instead of everything being recent.
- Smart Aggregation: Every restaurant's overall rating is a weighted blend of different factors (60% for the food, 15% service, 15% atmosphere, 10% prices). Does the math fast.
- Keeping It Current: New reviews get incorporated automatically. Monthly snapshots build up the history so you actually have something to compare against.
- Solid Code: TypeScript everywhere means the frontend and backend actually speak the same language. Less bugs. More reliable.
Go Find Your Next Favorite Place
Seriously. Explore the map, watch the ratings change over time, and find restaurants that are actually getting better. Skip the ones that are coasting.
Explore Restaurants