Claude Code - Dinner Helper
One of those small annoyances in our house is figuring out where to order from on a Saturday night. We end up rotating through the same few spots by default and half the time we're ordering from somewhere we just went to two weeks ago. I kept thinking there had to be a better way to solve this and it turns out the data I needed was already sitting in a Google Sheet the whole time.
So I built something to solve this! This is my second project using Claude Code as an AI coding partner (the first was my activity dashboard) and I'm really excited to share how it went.
The Idea
We use Tiller Money to track our finances in a Google Sheet. Every restaurant transaction is already categorized with a date. I wanted to build a simple mobile app that the whole family could use to get a suggestion for where to eat based on how recently and how often we've been to a given place. Places we haven't visited in a while should bubble up, places we just went to should get pushed down.
The result is a private, mobile-first web app. It's shared only with the family and it's been a fun little side project to tinker with.
How Claude Code Fits In
Iām an ex-developer turned AI-curious engineer. I can read code and I understand how things fit together at a high level, but building something end-to-end on my own would have taken me weeks of frustration and half-finished Stack Overflow rabbit holes. Claude Code has genuinely changed that for me.
What I've found is that it's not just about the speed (though that's real). It's about the quality of the learning. When I didn't understand why something was built a certain way, I could just ask and get a real explanation in context. When I pushed back on something feeling overcomplicated, Claude would explain the tradeoffs and we'd find a simpler path. I probably learned more about how Next.js App Router actually works this weekend than I had from months of casual reading.
The whole thing took about 6-7 hours spread across a couple of evenings.
Stack
Next.js 15 (App Router) with React 19 and TypeScript
Tailwind CSS 4 for styling
Upstash Redis for storing restaurant data
Claude Haiku for cleaning up merchant names
Google Apps Script for syncing the data from Tiller
Hosted on Vercel
How It Works
A Google Apps Script runs inside the Tiller Sheet every Saturday. It reads only the merchant name and date from restaurant-categorized rows (no dollar amounts, nothing sensitive) and sends that payload to the app. The app never holds any Google credentials which was an intentional decision Claude helped me think through. Basically if anything ever went wrong on the app side, the worst case is someone sees a list of restaurant names.
When new merchant strings come in that the app hasn't seen before, they get sent to Claude Haiku for cleanup. Tiller merchant names are pretty messy in practice. Things like Ls Woking Dragon, Coquitlam or White Spot #141. Claude strips the city suffix, removes branch numbers, flags venue concession vendors (Rogers Arena food stalls kept showing up under "Restaurants"!), and infers the cuisine type. It also picks an emoji and a color theme for each restaurant card in the UI which was a fun bonus. Results get cached permanently so the same string never needs to be parsed twice.
The Suggestion Logic
The scoring is pretty straightforward: score = 50 - recency_penalty + frequency_bonus
Heavy penalty if you were there in the last two weeks, lighter penalty within a month, and a small bonus for places you visit often because you like them for a reason! Anything you haven't been to in over a year drops off the list entirely. From the scored list the app does a weighted random pick so it doesn't just mechanically serve up the top result every time. Hit "Reshuffle" and you get a fresh draw from the same pool.
What I Actually Got Out of It
Beyond just having a working app, I feel like I came out of this project with a much better understanding of how serverless apps actually fit together. The data pipeline, the Redis caching layer, the scoring logic, the mobile UI with per-cuisine color themes... all of it came together in a way that I can actually explain and reason about now. That's the part I'm most proud of.
I'm looking forward to continuing to tinker with this and keep learning through building real things with Claude Code!