Sunday afternoon I sat down to plan a fishing trip to Baja California. I opened Claude, described what I was looking for — roosterfish on the fly, maybe a few days in Mexico City on the way down — and asked for some help thinking through the itinerary.
Claude returned a mapped route with stops, transit options, accommodation suggestions, and day-by-day logistics.
I stared at it for a second and thought: this should be an app.
So I said that out loud. And Claude just… started building it.
Over the next two days I had a fully functional AI travel planner with a dark-mode map interface, photo carousels, a booking page with affiliate links, shareable itinerary URLs, terms of use, and a privacy policy. I named it Muévete AI — Spanish for “get moving” — and it’s live at muevete.ai.
I want to be honest about what happened here, because I think the story is more interesting than the headline. And more work.
I am not a developer.
Fifteen years ago I was a non-technical co-founder at a “big data” startup (remember those?). We had technical co-founders, a roadmap, sprints, standups — the whole thing. It took months to build anything. The gap between what I could imagine and what I could ship felt like a canyon I was always trying to shout across.
That startup failed, for a lot of reasons. I became an attorney. I stayed curious about technology, probably more so than the average lawyer, but I never really closed that gap.
Until this week.
What actually happened
Claude didn’t just write code. It was a conversation — a long one. I’d describe what I wanted, and minutes later it existed. When something broke, I’d describe the symptoms and ask what went wrong. When I had a product instinct — no one is going to share this to LinkedIn, swap it for Facebook — it just happened.
I was functioning as a product manager. And it turns out that’s the job now.
The things I actually contributed:
- Knowing what I wanted (I’m my own target customer — I’ve always wanted this tool)
- Product instincts built up from that startup era, dusted off and surprisingly still useful
- Branding decisions — the name, the tone, the aesthetic direction
- Judgment calls about what to build vs. what to skip for MVP
- Approximately 140 requests for changes, fixes, and new features
The things Claude did:
- All ~2,200 lines of code
- Every architecture decision
- All of the debugging
- The legal copy (the irony)
- Knowing when I was about to make a mistake before I made it
- Somewhere north of 300 individual code edits across the build
The Pareto problem nobody talks about
Here’s the part that doesn’t make it into the “vibe coding” discourse: the last 20% took most of the time.
Getting to a working prototype took a few hours. Getting to something I wasn’t embarrassed to put my name on took two more days. A large chunk of my change requests were bug fixes — things that looked right until you tried them in Safari, or on mobile, or on a 15-day Costa Rica itinerary where four locations ended up stacking on the same map pin.
Some of those bugs I introduced by pushing for features before earlier ones were fully stable. Some were edge cases Claude didn’t anticipate. All of them required me to articulate clearly what was wrong, what I expected instead, and why it mattered. That’s not passive. That’s product work.
Some fixes required a design conversation before a single line of code was written. The destination grouping feature — which clusters nearby stops into a single map pin instead of stacking them — sounds simple. But the naive implementation would have worked fine for a Costa Rica road trip and completely broken a Tokyo itinerary where Shibuya and Shinjuku are close in distance but worlds apart in character. Getting that right meant thinking through the logic out loud before touching the code.
None of that is in the demo video version of this story.
One example worth dwelling on: the photos.
Getting images right took longer than the rest of the development combined. The first approach pulled from Wikipedia — technically free and seemingly logical, since Wikipedia has photos of almost everything. In practice it returned coat-of-arms SVGs, mathematical formulas, and the occasional CIA seal for a national park. We tried a five-step fallback chain. We tried filtering by file type, dimensions, aspect ratio. We tried scraping article image lists for pages with no lead thumbnail.
Eventually I scrapped the whole thing and made a different decision: Pexels as the primary source, category icons as the honest fallback. Then the problem shifted to which Pexels photo — because “New Orleans French Quarter” returns a lot of uninspiring stock shots of boxy buildings that tell you nothing about what it feels like to stand on Bourbon Street at dusk.
The fix was reframing what the AI was generating. Instead of asking for a location name, I asked for an evocative 3-5 word phrase capturing the street-level character of the place. “French Quarter wrought iron balcony evening.” “Chinatown red lanterns night market.” The difference in results was immediate.
It matters because Muévete isn’t trying to show you where a place is on a map. It’s trying to make you feel what it would be like to be there — and book the trip. A beautiful, immersive photo of a candlelit alley in Bologna does that. A stock shot of a generic European building does not.
The numbers, honestly
The build spans roughly 22,000 lines of conversation across 7 sessions — call it 700,000 words of back-and-forth. Around 140 user requests. Around 300 code edits on Claude’s side. The final product is about 2,200 lines of code.
Total cost to build and deploy: under $100. API calls to generate itineraries run fractions of a cent each. Hosting on Vercel is free. The domain was $80.
Compare that to what it would have cost to hire a developer fifteen years ago. Or last year.
What this actually means
I don’t think “anyone can build anything now” — that’s the hype version and it’s not quite right. You still need to understand enough to make good decisions. When Claude suggested letting users supply their own API key to reduce hosting costs, I pushed back — that’s friction that kills consumer products. When it wanted to add account creation early, I said no — test demand first, add accounts when users are asking for them. Those calls matter.
The gap between idea and shipped product has collapsed in a way I genuinely did not see coming. The bottleneck used to be technical execution. Now it’s clarity of thought. Can you articulate what you want? Can you give useful feedback? Do you know what good looks like?
If yes — and especially if you’ve ever run a product before, even badly — you can build things now.
Just budget for the last 20%.
For now: the fishing trip still isn’t planned. I keep getting distracted building the app I was supposed to use to plan it.
Muévete AI is live at muevete.ai. Generate an itinerary, tell me what you think. ¡Muévete!