My friend Angelina is spending a month in Cyprus and the Greek islands. Six stops, a fistful of ferries, and the special brand of phone signal you get standing on a rock in the middle of the Aegean.
So I built her an app.
Not because she asked. Because I’m the sort of person who hears “month-long island-hopping holiday” and thinks you know what would really help here? A bespoke offline-first progressive web application. She wanted a nice trip. She got software. You’re welcome, Ange.

Every screenshot here is from a public demo you can open yourself — say hello to Sam, our stand-in traveller. Angelina’s real companion, with her actual bookings, stays private to her.
What it actually is
A trip companion that lives on her phone and works with the wifi turned off. It knows which stop she’s at today, which hotel she’s in, and how to walk there. It has the handful of genuinely good things to do at each place — not the top-40 TripAdvisor sludge, the real list. Every emergency number that matters, per country. And an AI concierge called Ariadne (Greek islands; I’m not made of stone) she can ask anything, from “where’s the nearest pharmacy” to “is this ferry going to ruin my afternoon.”

Plus a printed-quality PDF pack, for the moment the phone dies at the exact worst time. Which it will.

How it got built (I didn’t write it)
I didn’t write a line of it. I directed it. The whole thing ran through my build pipeline — brief in, then spec, engineering design, a QA plan, and the actual code shipped in milestones — with Claude Code writing every line and me reviewing, catching, and re-pointing it between passes.
I have opinions and a keyboard. The AI has infinite stamina and no opinions. Turns out that’s a very good match, right up until it isn’t.
The bits that only broke in real life
Here’s the honest part, because a Lab Note that pretends it all went smoothly is a brochure, not a note.
- The app passed 320 tests, sailed through every preview build, and then threw a 500 error the instant it touched production. (A native-ES-modules import quirk that was invisible to every test and every preview.) Lesson filed permanently: your tests can all be green and the thing can still be on fire.
- “Your link has expired” — on a link that was ninety seconds old. (A mismatched security pepper between environments. Deeply boring; took an embarrassing while.)
- A restaurant pinned 45 km away, in a different country, across a militarised line. The AI was very confident about it. There were two places with the same name; it picked the one in Northern Cyprus.
- She added it to her home screen — the correct, sensible thing to do — and it promptly forgot who she was. (iOS quietly drops part of the link and hands installed apps their own storage jar. Only a real iPhone surfaces that; my iPad never did.)
None of these were the machine being stupid. They were the machine being confidently, plausibly wrong in exactly the spots where a human has to be awake. Which brings me to the actual lesson.

The thing I didn’t expect
The code was the cheap part.
All of it — the React, the offline service worker, the sync, the API, the concierge — Claude Code produced in a handful of focused sessions. Genuinely fast. If you’d asked me beforehand where the effort would go, I’d have said “the build.” I’d have been wrong.
The expensive part, the part that made it good, was everything no model can shortcut: verifying every emergency number against the official source, opening every single map pin to confirm it’s in the right hemisphere, throwing out the tourist-trap spots and keeping the two per town that are actually worth her time, writing the blurbs so they read like a friend tipping you off rather than a hotel brochure.
The taste. The curation. The judgement about what to leave out. That isn’t overhead around the product. It is the product. The AI made the build cheap enough that the curation became the whole game — which is a much nicer problem to have.


So — want one?
Which is a long way of saying: I can build one of these for you. Or, more to the point, for someone you love who’s about to do the trip of their life — a honeymoon, a big-birthday adventure, a first solo lap of Europe. It is a genuinely unreasonable gift, in the best way.
You send me the trip. I hand back a private link and a printed pack. They get to feel, for a month, like they’ve got a local in their pocket everywhere they go.
Angelina’s version shipped. She’s installed it, shared it with her boyfriend, and — the highest praise a build can get — used it to find dinner. The app works. The trip is entirely hers.
I’ll be over here, watching the analytics like a proud and slightly unwell parent.