WorkCityBites

Personal · 2026 · Travel · AI

Designed, built and shipped solo

CityBites

A hobby app that builds each day around where you want to eat, then routes the rest of the trip to match.

CityBites Explore and a timed daily itinerary.
My role
Product Design, Engineering
Team
Sole designer and engineer
When
2026 · 2 months
Platforms
iOS, Android, Website

Visit CityBites’s website, opens in a new tab

shipped to both stores
iOS + Android

The 30-second version

Problem
Planning a food trip meant juggling reviews, map pins and a spreadsheet, then checking hours and distances.
What I did
Designed and built native iOS and Android apps, with code checking the constraints and Claude making taste judgments.
Result
Live on the App Store and Google Play, with timed daily itineraries and OpenTable booking.

Context and constraints

CityBites is a travel planner that starts with where you want to eat. Each day is built around restaurants and cafes, and nearby sights, neighborhoods, and walking routes get fitted in around them, based on your cuisines, diet, budget, and the kind of trip you're after. It runs on Firebase, the Google Places API, Apple MapKit, and Claude.

My role and the team

Just me. I designed the product and its design system, CBDS, in Figma. I wrote the iOS app in SwiftUI and the Android app in Kotlin, and built the itinerary backend on Firebase, the Google Places API, Apple MapKit, and Claude.

The problem

When I travel, I plan around where I want to eat, and doing that means juggling review sites, saved map pins, Instagram posts, and a spreadsheet. Then you still have to work out opening hours and how far apart everything is. On a short trip that's a lot of time spent planning instead of eating, and it's easy to end up zig-zagging across a city.

Key decisions

01 / 02

Code checks the constraints

The call
Use code for opening hours, meal fit and filtering out chains. Let Claude choose places and judge taste.
Why
Opening hours cannot be wrong. Claude is useful for judgment calls about what someone would like.

02 / 02

Return a day people can follow

The call
Build a timed itinerary around meals, with nearby stops and clustered routes.
Why
A list of places still leaves the planning to the traveler. Distance, transport and clustering keep the day from zig-zagging.

The work

How it scaled

The itinerary backend uses Firebase, Google Places, MapKit and Claude. Rules in code check the constraints before the plan is returned.

Results

I built it on my own and shipped it to the App Store and Google Play. Claude runs the itinerary engine.

shipped to both stores
iOS + Android

Reflection

I started this to see whether an AI could plan a trip day by day. It works, but only with a lot of structure around it. Claude is good at taste, and I wouldn't trust it with opening hours. What's left now is curation, getting the picks consistently good.