Overview
Saving a place takes one tap. Turning 200 saved places into a trip takes weeks. Nani fills that gap. It finds the real place behind a post, keeps every idea in one library, and lets you drop ideas into days with walking times included.
I owned the problem definition, research, IA, visual and interaction design, the data model, the AI features and the build.
Why I Built This
I’m the planner in my house. For Japan, my plan lived in a Notion database with 64 ideas, 15 days and 17 bookings. The ideas came from TikTok saves, Instagram screenshots and Google Maps lists. Notion held all of it, but couldn’t show me a day on a map, how far apart two stops were, or when a reservation opened.
Research
I started by questioning my own first idea, that Nani was a planner for couples. Desk research and a friend interview changed it.
Competitors put their effort into group voting, co-editing and expense splitting, which is not how planning actually happens.
The Problem
Trip planning happens in three moments, and each one needs something different:
Design Decisions
5.1Library first, trips second
I first built Nani around trips, so every idea had to belong to one. That broke the moment someone saved a ramen spot before a trip existed. I rebuilt the IA so ideas live in one library, and a trip is something you pull ideas into with a heart. Ideas without a trip sit at the top of the library, because they’re the ones that need attention.
5.2Share from anywhere, and learn from every share
Share a TikTok and Nani reads the caption and cover image, finds the place on Apple Maps, and asks you to confirm before saving. Screenshot an Instagram post and it finds every spot in the image. Every confirmed match is saved to a shared lookup, so the next person who shares that post gets the place instantly. “Not it?” fixes a wrong match and counts against it.
The rule I held to: Nani always shows a review step and never saves a guess automatically. An early version auto-filled titles and locations from link previews. It was wrong more often than right, and people spent more time deleting bad text than typing.
5.3Bring the whole plan in from Notion
Planners already have a system, and I didn’t want Nani to make anyone start over. Nani connects to Notion and reads the days, bookings and ideas tables. AI pulls the stops out of each day page, and you check everything on a review screen before it’s imported. Importing again updates only what changed. Anything you deleted in Nani stays deleted.
5.4A day is a timeline, not a list
Each day reads top to bottom with times, photos and the distance between stops (“12 min walk”). I chose not to make up train times: Nani shows walking times when a stop is close enough to walk and plain distance when it isn’t. A day strip at the top jumps between days.
5.5Ask Nani knows your trip
The first version of the AI chat sent back long markdown answers and described every place twice. I redesigned it so that answers are a one-line summary plus place cards, each with a heart and an “Add to day” button. “Plan my day” returns a timeline you can add in one tap. Nani knows your days, hotels and open bookings, so “ramen near the hotel, open late?” works.
5.6One line for what to book next
The Hokkaido interview led to booking reminders. Rather than a to-do list, the trip page shows a single line for the most urgent booking (“Book Kyoto ryokan in 6 days”), and only when something is due. When nothing is due, the line disappears. Reminders arrive before reservations open.
What I Got Wrong
- Unassigned at the bottom. I sorted the library by trip date, which buried the ideas that needed a home. I moved them to the top within an hour.
- Designing for 20 ideas. I skipped filters because I assumed people would save a few dozen ideas. I save hundreds. A filter sheet was the right call after all.
- “Ginza” instead of the sushi bar. Apple Maps’ top result for a restaurant name was sometimes the neighborhood around it. Nani now searches only for named places near the trip and rejects districts.
Visual System
Nani started as Kanso: Japanese-minimal, white, with one red accent. Halfway through, I restyled it after studying Navan and Mindtrip:
- Type: a serif for titles only; sans for everything you read.
- Color: black ink for actions, and red only for urgent things (hearts, “to book”, delete).
- Surfaces: hairlines instead of shadows, white pages, and photos first.
- Icons: SF Symbols, monochrome tiles. Category colors appear only on map pins.
I shipped the restyle in eight phases, one screen family at a time, with dark mode working at every step.
Outcome
| Timeline | About 4 months from first commit to a trip-ready app |
|---|---|
| Builds | 14 TestFlight builds |
| Notion import | 15 days, 17 bookings and 79 ideas (64 saved, plus stops found in day pages) in one pass |
| Cost per TikTok share | About $0.003 for the AI to read the caption and cover |
What I’d do differently: ask about real scale before designing around it, test share links with real posts on day one, and set up the visual system before building screens, not halfway through.
Next: shared trips so a companion can heart their must-dos, iCloud sync, and Instagram links through Meta’s official API.
Every screen answers one question: what’s the next thing I’d do on this trip?