Ask any AI for a three-day itinerary in Lisbon and you'll get something that reads beautifully. Named restaurants. Specific streets. Opening times. It looks like a local wrote it.
Some of it isn't real.
Language models write plausible sentences, and a plausible sentence about a restaurant is indistinguishable from a true one until you're standing outside a shuttered storefront at 8pm with a hungry group. The failure isn't dramatic — the model doesn't announce "I made this up." It just quietly hands you a place that closed two years ago, or a café that exists but is in a different city with the same name, or a name so generic that it isn't anywhere at all.
We decided early that this was the thing we had to fix. Not because it's glamorous — it's the least glamorous part of the product — but because an itinerary you can't trust is worse than no itinerary. You'd have been better off with a search bar.
What happens between "the AI wrote it" and "you see it"
Every activity the AI produces goes through a gate before it's allowed onto your plan. Roughly:
We check the address names the right city. Sounds trivial. Isn't. This is the check that catches the AI putting a beloved Portland restaurant on your Portland Maine day when the restaurant is in Portland Oregon. Same name, 2,500 miles apart, and the sentence reads perfectly either way.
We look the place up. For venues that pass the first check, we query Google Places for the real business and compare what comes back. If the address Google returns doesn't sit in the city we planned, the venue fails.
We reject closed businesses. Permanently closed is an obvious fail. We also reject temporarily closed ones, which took us longer to learn — "temporarily" is Google's word for anything from a two-week kitchen refit to a museum that's been shut since 2024 while it relocates. We planned a real trip around one of those before we tightened it. At build time we can simply pick something that's open instead.
When something fails, we don't quietly drop it. The day goes back to the AI with a specific correction — this venue is closed, this address isn't in the right city, replace it with something real that fits the same slot — and we rebuild that piece. Only after it passes does it reach you.
The part where we admit this costs us
Every one of those lookups is a paid API call, and the correction loop means some days get generated more than once. It makes builds slower and it makes each build cost us more. There's a version of this product that skips all of it, ships faster, and looks identical in a screenshot.
It just falls apart on day two of an actual trip.
What it still doesn't catch
Being straight with you: this isn't perfect and we'd rather say so than let you find out on your own.
We verify that a place is real, open, and in the right city. We don't verify that it's good. We can't confirm a restaurant will hold your reservation, that a trailhead won't be closed for a rockfall the week you arrive, or that Wednesday hours haven't changed since Google last heard about them. A venue that opened last month may not be in the data yet.
So the itinerary tells you plainly: it's AI-generated, and you should confirm opening hours and bookings before you go. Every page that shows you a plan says it. We'd rather under-promise on the page than have you find out in the street.
Why this is the thing we're proudest of
Nobody's going to share a screenshot of a venue-verification pipeline. It won't show up in a feature list on the pricing page in any way that sounds exciting.
But it's the difference between a travel plan and a piece of creative writing about travel. We're building the first one.