All work
Nani, 2026, personal project

From Saved Post to Planned Day

Nani is an iPhone travel planner for the person who does the planning. You save ideas from TikTok, Instagram, Notion or a chat, and Nani turns them into real places, days and bookings. I designed it and built it in SwiftUI for my own two-week trip to Japan.

Role

Product designer, end to end. I also built the app in SwiftUI.

Timeline

June to October 2026, about 4 months solo

Platform

Native iOS 26 (SwiftUI, SwiftData, MapKit, Claude API, Supabase)

Stage

Build 14 on TestFlight, built for a 15-day Japan trip (Oct 27 to Nov 10, 2026)

Fig. 00The trip page, a planned day, and Ask Nani.
01

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.

02

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.

Fig. 01The plan before Nani: one Notion page and a camera roll.
03

Research

I started by questioning my own first idea, that Nani was a planner for couples. Desk research and a friend interview changed it.

01One person plans. Even on couple and group trips, the planning work falls on one person, and that person usually enjoys it.
02The other person decides. Companions weigh in on where to go and where to stay, not on the logistics.
03Timing loses trips. A friend planning Hokkaido said: “I have to research when flights, hotels, restaurants, and attractions open reservations, then create calendar reminders so I don’t miss them.”
04Saved posts are dead ends. Sharing a TikTok or Instagram link into most apps saves a bookmark, not a place. When I tested it, links gave useful results less than 5% of the time.

Competitors put their effort into group voting, co-editing and expense splitting, which is not how planning actually happens.

Fig. 02Research synthesis and competitive landscape.
04

The Problem

Trip planning happens in three moments, and each one needs something different:

01Saving: capture an idea from anywhere in one step, and get a real place back.
02Shaping: turn a pile of ideas into days that make sense on a map.
03Going: on the ground, see today, what’s next, and what still needs booking.
05

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.

Fig. 03Moving from trip-centric to library-first.

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.

Fig. 04Sharing a TikTok into Nani.
Fig. 05Every share makes the next one faster.

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.

Fig. 06Importing a Notion plan.

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.

Fig. 07A day as a timeline and on the map.

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.

Fig. 08Ask Nani before and after.

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.

Fig. 09The booking reminder line and the Bookings tab.
06

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.
07

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.

Fig. 10Nani’s visual system.
Fig. 11Before and after the restyle.
08

Outcome

TimelineAbout 4 months from first commit to a trip-ready app
Builds14 TestFlight builds
Notion import15 days, 17 bookings and 79 ideas (64 saved, plus stops found in day pages) in one pass
Cost per TikTok shareAbout $0.003 for the AI to read the caption and cover
Fig. 12Launch reel.

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?