Overview
An AI-first design exercise, a take-home brief, solo and end-to-end. The brief was "design a travel itinerary planner." I chose to solve a narrower problem than that: every travel app helps you make the plan; none of them help you when the plan falls apart. Constraint: a prototype with written, not computed, times — and no real traveller sat next to me on a rainy Tuesday.
Every travel app helps you make the plan. None of them help you when the plan falls apart, which is exactly the moment you need help.
Replan knows what in your day is fixed and what can bend. It tells you the truth about your day before you leave. And when the day breaks, rain, a closed door, tired legs, it rebuilds around what's left and shows you exactly what it changed and what it cost you.
Every trip gets replanned. This one makes it a feature.
The problem
I started where the brief pointed, helping people pick a destination, and ended up somewhere else entirely, because the evidence kept pointing away from it.
- Travel apps are built to sell you things, not to plan your day. What ranks highest is shaped by ads, commissions and availability, not by how well it fits your actual trip. That's not a flaw in the product; it is the product. A plan that quietly falls apart on day two still made a sale.
- AI-generated itineraries look right and don't work. The failure modes are consistent: days so over-packed you're rushing with no room to breathe; places that have already closed down; stops grouped far too far apart to do in one day. The plan is confident. The day is impossible.
- A plan that was right yesterday is wrong today. Weather, sudden closures and transport delays break it, and it has no way to notice.
- And the finding that reframed the exercise. I went looking for how experienced travellers actually plan, and kept seeing the same behaviour: they group stops by hand on a map so they're not doubling back, they keep tweaking for weeks, they lock it in just before they fly, and then leave everything from that point on to "day-of decisions." They print it out. They expect it to change.
Every product in this market serves the plan you make. Not one serves the replan you'll actually do. That's the hole. And no travel app can fill it, because a broken plan doesn't sell anything.
The insight
Making a plan is easy. Making one that survives the day is hard. Fixing one that didn't is unbuilt.
An AI will hand you a beautiful day that is physically impossible. So the design problem was never "generate an itinerary." It's three things nobody has bothered with:
- Show your work: why is this stop even in my plan?
- Tell the truth: this day doesn't actually fit, and here's the trade-off.
- Fix it: it's raining and I'm exhausted. Now what?
Who this is for
Meera, 29. Four days in Kyoto, booked six weeks out. She planned it herself, no agent, no package. She's read enough blogs to know what she wants and enough forums to distrust a top-10 list. She has three things she absolutely won't miss, and a loose sense of the rest. Day two is rain. Her plan doesn't know that yet.
Designing for: the traveller who plans their own trip. 3–7 days, destination broadly decided, and enough experience to know that no trip survives contact with a Tuesday.
Explicitly not designing for:
- Group trips. A real, painful problem. Deliberately left out.
- Booking and payments. I'm not building a shop. That absence is a decision, not an oversight.
- Business travel, digital nomads, months-long trips. Different jobs entirely.
What I'm assuming, said out loud, not buried:
- Place data (opening hours, closing days, location) is available and reliable. It's faked in this prototype.
- Weather and travel times can be checked live.
- The traveller has signal while they're there. This is the assumption I'm least comfortable with, the moment you most need your plan is the moment you have no bars.
- I'm not solving how to pick a destination. That was Idea 1. I killed it.
What I ideated
Three ideas. Two are dead.
| Idea | What it was | Verdict |
|---|---|---|
| 1 · The Globe | A 3D Earth you spin. Click a city, set your days, watch a "how far can I get" ring bloom outward. Drill in, generate. | Killed |
| 2 · The Group Board | Group planning. Vote on places, settle arguments, split the day when people want different things. | Killed |
| 3 · The Living Plan | A plan that can bend. Every stop shows why it's there. It tells you what won't fit. When the day breaks, it rebuilds, and shows you the bill. | Built |
Idea 1 · The Globe, and why I killed it
I built this one first, because it's the one I wanted to build. A slowly turning Earth. Click San Francisco and a ring blooms outward as you add days, three days reaches Big Sur, five reaches Yosemite. It's genuinely beautiful, and I'd happily have spent the whole exercise on it. Then I asked what it was actually for, and the answer was: not much.
| Why I killed it | What I found |
|---|---|
| It helps the fewest people | It only helps someone who doesn't know where they're going. Most people show up already knowing. I'd designed for the smallest group in the room. |
| You pay before you get anything | Three clicks before you learn a single useful thing. All cost up front, payoff later. |
| It shuts people out | A spinning globe ignores reduced-motion settings, has no sensible keyboard path, and makes a real slice of people feel sick. Fixing that means removing the thing that made it beautiful. |
| Wrong job | It's built for wonder. Meera's actual job is a plan that works on a rainy Tuesday. Wonder is the designer's pleasure, not the user's problem. |
The honest version of this story: I started at the wrong end of the problem. I designed the moment of inspiration, because inspiration is the fun part to design. The traveller's hard moment is 8am on a rainy Tuesday, unglamorous, and nobody wants to design it. Which is exactly why nobody has. So I killed the beautiful thing and went there instead. It survives as an optional Explore mode for the few people who really are starting from nowhere. It is not the front door.
Idea 2 · The Group Board, and why I killed it
Group trips are where planning truly falls apart: one person builds the plan, four people have opinions, and a WhatsApp thread decides nothing. It's a problem of agreement, not of discovery. Killed for one reason, plainly: shared editing, voting, settling disagreements and splitting the day per person cannot be built honestly in a short span.
What I built, the Living Plan
The core idea, everything else follows from this. Every itinerary product I looked at treats a day as a rigid list of times. That one choice is why none of them can fix themselves: when reality moves, the list has no idea what's allowed to bend. So I treated a day as three different kinds of thing:
| Type | What it is | What happens when the day breaks |
|---|---|---|
| Fixed | Can't move, a reservation, a booked tour, the sunset she flew here for | Never moves. Everything else moves around it. |
| Flexible | An intention, not a timestamp, "a temple morning", "a slow coffee hour". A rough window, not a clock time. | Slides, swaps to another day, or waits |
| Breathing room | Deliberate empty time, a real thing in the plan, not a gap between things | Takes the hit first |
Breathing room is the whole design. Every other tool treats empty time as wasted space, somewhere to squeeze one more attraction. I treat it as the thing holding the day up. A plan with no breathing room cannot survive a day. And an app that sells you a full day is optimising for how impressive it looks, not for how your legs feel at 4pm.
The three rules. The system follows three rules, everywhere, with no exceptions:
- Never quietly drop something she said she can't miss. If it won't fit, say so, and show the choice.
- Never hide a trade-off. Every change costs something. Show the cost.
- Never lie about time. If she'd get there twenty minutes before closing, the card says twenty minutes, not "Visit Kiyomizu-dera."
Those three sentences are the entire design spec. Everything below is just what they force.
- The day runs top to bottom as a single ribbon. Fixed things have solid edges. Flexible things have soft ones. Breathing room is drawn as visible empty space, the white space in the interface is the breathing room in the day.
- Travel time is drawn, not hidden: a visible thread between stops with the real number on it. Most apps show you five pins on a map and let you discover the ninety-minute bus ride by yourself.
- Every stop carries a "why it's here" tag:
you said: slow mornings·12 min from your hotel·closes 16:30, go early. Never#1 on TripAdvisor, there are no rankings in this product, because a ranking is where the commission hides. - Each day shows an honest day total:
6h 10m out and about · 1h 40m travelling · 2h 10m free. Plain numbers. No score out of ten.
The reality check, the day, told the truth
The system warns; it never blocks. It's her trip. The job is to make sure the decision is informed, not to make it for her.
This day doesn't fit. Fushimi Inari and Arashiyama are 2h 40m of travel apart. One of these is going to feel like a commute. → Move Arashiyama to Day 4 (it swaps with the coffee morning) → Keep both (you'll need a 7:30 start)
Two real choices, each with its real cost. And she can ignore both, the warning just shrinks into a quiet marker, so the plan never pretends the problem went away. Why this is the hardest screen to get right: the honest version talks the user out of a busier day. Every commercial instinct in travel pushes the other way, a fuller day looks like a better product. Designing the restraint in is the actual design decision.
The replan, the day, when it breaks
This is the screen the market doesn't build. It opens once each morning and asks for ten seconds:
- Weather: shown, not asked. "Rain until 2pm."
- How you're feeling: one slider: Fresh ←→ Wrecked. No numbers. At 8am on day three, nobody can rate their own legs out of five.
- Today: two taps: As planned · Take it easy.
Then it rebuilds, as a preview. Stops slide, an outdoor morning swaps to a clear day, the breathing room takes the hit. Nothing is committed until she says yes. The system proposes. She decides. And then it shows her the bill:
✅ Kept, Nanzen-ji · you said you couldn't miss this one ↔️ Moved, Arashiyama bamboo grove → Day 4 · it's outdoors, and Day 4 is clear ➕ Added, Nishiki Market · indoors, 8 min walk, you said food ⚠️ It cost you, you lose the sunset window at Kiyomizu-dera on Day 4
"Here's what I changed, and here's what it cost you." Every other product hides its thinking and just hands you a new answer. This one shows its working and names the price. That one panel is the case study, showing the work, telling the truth, and fixing the day, in a single object. And Undo everything isn't optional: a fix you can't take back is a fix nobody will ever dare to tap.
How I built it, decisions first, then the AI
I don't hand an AI a vibe and hope. I write the rules, the rules are the source of truth, and the agent builds against them. This is the part of my process I most want you to look at.
The visual system
| Choice | Value | Why |
|---|---|---|
| Background | #FAF8F5 | Warm off-white. The plan should feel like paper, because paper is what people actually end up carrying. |
| Text | #1A1815 | Not pure black. Easier on the eyes in sunlight. |
| Accent | #C8442B | One colour only. Torii red. Used exclusively for fixed stops and for costs, the two things she must never miss. |
| Breathing room | #EDE9E2 | Drawn faintly, but drawn. It exists. It is not nothing. |
| Warning | #B8791F | Amber, not red. A tight day is a trade-off, not an error. |
| Type | Serif for the human voice, sans for the system voice | You should always be able to tell which one is talking to you. |
The rules the AI had to build against
1. Never show a stop without saying why it's there.
2. Travel time over 45 min is shown on the plan. Never buried in a card.
3. A day over 8 hours triggers the reality check. Warn, never block.
4. Breathing room is a real object with a minimum size. Never squashed to fit more in.
5. Something she can't miss is never dropped to make the maths work.
6. Every rebuild produces a "what changed" panel. No silent edits. Ever.
7. Every rebuild can be undone completely.
8. Reduced motion: the rebuild happens instantly, and the "what changed" panel still appears.
I audited my own prototype against my own rules, and it failed three of them
Once it was working, I stopped building and tested the build against the three rules, line by line, path by path, trying to break it. It broke. The most damning finding: a product whose entire argument is "I will always tell you the truth" had a control that asked the user how they were feeling, and then ignored the answer.
| What I found | Which rule it broke | What I did |
|---|---|---|
| Two of the three ways to change the plan skipped the receipt. Adding a place and resolving a reality check both rewrote the day with no "What changed" panel. | Never hide a trade-off | Fixed. Every path that touches the plan now produces the same receipt, with the same undo. |
| A third option that was secretly the second one. "Change it up" ran exactly the same code as "Take it easy." | Never lie | Deleted. Two honest options beat three where one is a lie. |
| The feelings slider fed nothing. Fresh↔Wrecked was read and never used. Pure decoration, in the one moment the product asks the user to be honest. | Never lie | Wired it. Wrecked now genuinely drops a stop and widens the breathing room. |
| The day total kept lying after the day was fixed. Resolve a reality check and it still read "over a full day." | Never lie about time | Fixed. It recomputes, or it doesn't show. |
| There was no "this can't be fixed" state. "Take it easy" always succeeded, so rule 1 had never actually been tested. | Never quietly drop a must-not-miss | Built it. Now, when the only way to lighten the day is to move something she said she can't miss, it says so and hands the choice back. |
| Contrast failed WCAG AA in two places, the amber warning and the muted secondary text. | , | Fixed. Both now pass AA. |
The lesson: the pretty parts held up fine. Everything that broke was in the states nobody demos, the paths that skip the receipt, the option that lies, the failure that never happens. That's where design actually lives, and it's exactly the part an impressive-looking prototype lets you skip. So I went looking for it on purpose.
Where I overruled the AI
The first Kyoto plan the model gave me was the textbook failure: six stops a day, zero breathing room, no travel time shown, and a temple scheduled twenty minutes before it closed. It was confident, it was beautifully written, and it was undoable. That isn't a prompting mistake. It's what the model is for, it optimises for how much value the answer appears to contain, and more stops reads as a better answer. A designer optimises for how the day actually feels to live, and a lived day has legs in it.
So I overruled it, and turned the disagreement into a rule: breathing room became a real object with a minimum size, and the day got a ceiling. Now the model generates inside a system I designed, instead of defining the system itself. Anyone can produce more, faster, with AI. The value is in knowing where the model is reliably wrong, and building the guardrail that makes it right by default, for everyone on the team, not just for you.
What I didn't build
Deliberate, these are positions, not omissions:
- Booking. The moment this product earns a commission, those three rules start to bend. Its absence is the product.
- Group trips (Idea 2). A real problem, and the next one. Faking shared editing in the time I had would have been worse than declaring the gap.
Known gaps, I ran out of hours, and I'd rather say so:
- There is no real time engine. Travel times, opening hours and closing times are written, not calculated. The prototype shows what an honest feasibility model would say; it doesn't yet compute it. This is the biggest gap.
- Nothing persists. No offline mode, no saved state, reload and the plan is gone.
- The map doesn't move. It shows the route for each day but doesn't redraw after a rebuild. A map that contradicts the plan is worse than no map, so this is the first thing I'd fix.
- The three rules are followed, not enforced. Nothing in the code stops a future path from dropping a must-not-miss stop. Today it's honest by construction; it should be honest by constraint.
And the one I most want: watching a real person replan mid-trip. I inferred day-of behaviour from forums and travel communities. I'd rather sit next to someone at 8am on a rainy Tuesday and watch what they actually do.
