The Development Itinerary II: From Quiet Beta to Public Launch
By Miltos Vafiadis
This is Volume II. Volume I maps iterations 1–24, from the first commit to a working product.
Volume I ended on 3 August with a phrasebook and a promise that the journey continues. It did. Five and a half weeks later the odometer reads 49 iterations, and somewhere in the middle of them the app stopped being a thing I was building and became a thing other people use — on 4 September, when planitshare.app went properly public and, over the days that followed, about twenty strangers walked in.
This volume is the part of the story where the interesting problems stopped being "how do I build this" and started being "how do I know this is true." Here's the route.
Leg 1 — The B-Side (iterations 25–27)
Everybody who travels with me asks the same question: where do we eat. The B-Side is my attempt at virtual Miltos — an AI that makes trip suggestions built from a place's everyday life instead of its landmark checklist, complete with the running joke of recommending a coffee spot when you asked for a museum.
Then iteration 26 taught me the most useful thing I learned all volume. When I checked the recommendations properly, the model had never once invented a place. Every bar, every bridge, every bakery was real. What it invented was the reason: a real bar written up as a cheap no-menu taverna, a real bridge described as opening for boats. The hallucination wasn't in the noun, it was in the adjective — which is exactly the kind that survives a quick sanity check. So now every claim gets its own web search, the model is allowed to say "I don't know" about price, and a category is allowed to come back empty. You can watch it check each pick, live.
By iteration 27 the B-Side stopped being a solo tool: every trip got an Explore tab where the whole group votes on ideas, by name, and the winners get copied straight into the itinerary.
Leg 2 — Ground Truth (iterations 28–32)
Ground Truth is the country reference: plugs, voltage, tap water, tipping, emergency numbers, visa and entry rules, arrival cards. It is also the one feature in the app where no AI runs when you press the button. Research happens in advance, a human reviews and publishes it, and every fact carries the date it was checked. You get an instant answer from a person's judgment, not a fresh guess.
The story that shaped it: Thailand's passport rule went live citing thaiembassy.com — a commercial visa agency one letter away from the real Royal Thai Embassy network at .org. A careful human reviewer approved it anyway, because careful humans approve things. So source checking moved out of the reviewer's head and into code, and the re-run cited the Thai foreign ministry with zero commercial sources, down from six of seven.
The rule that came out of it applies to the whole app: absence of data is not clearance. If we don't know whether your passport clears a rule, that rule renders neutral — never green.
Leg 2 also contains my favorite bug of the entire project. A trip named "Family in Halkidiki" put its pin in Indiana, United States, because the search engine liked the word "in". Halkidiki, it turned out, was missing from that map provider entirely. A second place-search engine went in behind it.
Leg 3 — Travel as a family (iterations 33–36)
Here's an insight that cost me a whole iteration to see: a child has no email address, so no app can invite them anywhere. Every app I'd copied, including mine, treated "who is on this trip" and "who can log in and edit this trip" as the same list. They are not. Trip membership is a permission; trip presence is a fact. Once those came apart, households, kids, multiple passports per person and a real before-you-go checklist all followed.
Then the reverse: a spouse who started as a row inside someone else's household can now claim their own account, and their passport records physically move to them — the household owner loses access rather than gaining it. Iteration 36 added buddies, so inviting the people you always travel with is a tap instead of typing an email address you keep misspelling.
Also in this leg, for anyone who has ever thrown away a bottle of water at a security lane: seventeen airports are now published as having lifted the 100 ml cabin-liquids limit, and the ones where it's only some lanes get a different sentence, not a green headline with a caveat underneath. That's exactly how someone ends up in the wrong queue.
Leg 4 — The games (iterations 37–40)
Two of them, and they are unashamedly for fun.
Been There Done That is a map of the world you've actually seen — tick countries straight on the map, collect passport stamps, work through 229 curated places across five collections (Wonders, UNESCO sites, a Top 50 beaches list, Game of Thrones filming locations, and the venues Anthony Bourdain documented). It shipped before lunch and then kept evolving all afternoon while I played with it, which is the best possible way to find out what's missing.
The Aviation Geek Log is for the other kind of traveler: log the airlines, aircraft types and airports you've flown, earn ten collectible badges, take the code quiz, compare your logbook against a friend's. It sits on a hand-curated dataset of 1,003 airlines and 119 aircraft types. My favorite design decision in it: your logbook counts everything you ever flew, but the progress bars only count what's still flying — so that 2001 Sabena flight earns you a Retro Airlines badge instead of dragging a percentage down forever.
Between the two, iteration 39 did something less fun and more overdue: the app started saying out loud that it's in Beta and that its curated data is incomplete. The moment it admitted that, the admission turned into the recruiting pitch — Human Curators Wanted. Use it, send real feedback, and if your judgment holds up, you get a curation desk of your own.
Leg 5 — Out into the world (iterations 41–44)
Iteration 41 opened Lessons: five real engineering case studies from this very build, written for undergraduate students, 95 lessons deep, each with its own permalink so a lecture slide can cite one directly. Concept pages show the same failure shape biting five completely different technologies. It's the first part of the site built to be read rather than used.
Then, on 4 September, planitshare.app went public. The whole launch iteration started from a single screenshot: a blog post shared in a chat app whose preview cropped my wordmark down to "...anitshare...", because chat apps crop toward a center square and nothing had been composed for one. Link previews, an RSS feed and search-engine discovery followed.
What happened next is the reason this leg exists. About twenty people I had never met signed up, and every admin screen in the app turned out to have been built for a world where I personally knew every user. All four replacements were mocked, approved and built in a single day.
And then the numbers got honest. Excluding my own accounts from the reports took an afternoon and produced, within the hour, the single most useful sentence of the volume: every Smart Mileage Search in the previous month had been mine. Two members had ticked places in Been There Done That, one had stamped the Logbook, one had built a B-Side list. That's a real picture of a real product week two, and I'd rather have it than a flattering one.
Leg 6 — Instruments and arrivals (iterations 45–49)
Iteration 45 is the one I recommend to anyone building anything: I took the app on a real trip plan — London, October — and two days of genuine use produced more fixes than the spec I'd written for that iteration would have. Nothing finds the rough edges like being your own annoyed user.
Iteration 46 shipped Will It Be Late?, which answers the question a departures board can't yet: not "is my flight delayed" but "is the actual aircraft that will fly my leg running late somewhere else right now?" It chases the inbound aircraft exactly one leg back, using live data from FlightAware, and says "can't tell" rather than guessing further. I tested it the same evening against real departures and deliberately picked Istanbul as the stress case, which produced six fixes before midnight.
Iteration 47 opened the curation desk properly, so the volunteers who offered to help with loyalty program data finally have somewhere to go. Iteration 48 curated Singapore Airlines end to end — 35 partners, 75 regions, 356 rules, transcribed from the airline's own published table — and iteration 49 put KrisFlyer live as the third loyalty program.
But iteration 49's real story is the re-check. A second pass by a different model found five defects in that freshly curated data. My own ten-minute walk through the desk found two more that an agent had already signed off as green. And the worst find wasn't even in the data: asking why Will It Be Late? had "never heard of" a flight that was sitting at gate 12 revealed that it had never worked for tomorrow's flights at all, since the day it shipped — the data provider was refusing the request, and the app was politely reporting that refusal to travelers as "no such flight."
The numbers
I teach; I know the "show me the data" face. Forty-nine iterations in just under ten weeks. Three loyalty programs curated by hand, the newest one running to 356 rules on its own. 1,003 airlines and 119 aircraft types in the logbook dataset. 229 curated places in the game. 95 lessons in the teaching section. Two languages kept in lockstep, every string, every iteration. One production database, every migration reviewed before it ran.
Four things this volume taught me
The AI stopped being the interesting part. Verification became the interesting part. Anyone can get a model to produce a confident paragraph; the engineering is in deciding what has to be checked, by what, before a human sees it.
Absence of data is not clearance. The passport check renders neutral when it doesn't know. The liquids rule says nothing where nothing is established. A blank is a blank, and dressing it up as a green tick is how software hurts someone.
Check the instruments before the engine. More than once the thing that looked broken was the dashboard measuring it — "today" computed in the wrong time zone told a traveler at 00:25 in Athens that their finished trip was "Live, Day 13 of 13." When output looks wrong, suspect the reporting first.
A second pair of eyes is not optional, and it doesn't have to be human. But a human still has to walk the floor: the two defects that survived a machine review this volume were caught by ten minutes of clicking around with a suspicious mind.
The whole volume on one page
For sharing, and for the wall:
There's a boarding pass for every iteration too — the deck now runs to all forty-nine — which I'll keep posting as the journey goes on.
Want to come along? Come aboard — it's free. If you'd rather help build it than just use it, the beta program and the curator desks are both open from your dashboard, and "your judgment is good" is the only qualification either of them asks for.
Comments
No comments yet — be the first.
