Goodbye Travel Agents, Hello AI Agents
The author recounts a 10-day solo trip across Japan planned almost entirely with AI agents, showcasing their ability to generate itineraries from diverse sources, adjust plans in real-time, and directly modify trip planning apps via an MCP server. The AI saved time by synthesizing information from YouTube, Reddit, and official sites, and handled dynamic replanning during the trip, such as optimizing a Shanghai layover down to the minute and reshaping an afternoon after early check-in.
On this page
I’m writing this on the Shinkansen heading to Osaka, halfway through a solo 10-day trip across Japan that I planned almost entirely with AI agents.
This post isn’t about how AI can write a generic itinerary — anything can do that now. It’s about the small, weirdly clever ways agents earned their keep on this trip: rewriting the itinerary in place so my own trip viewer would render the day correctly, cross-referencing Reddit, YouTube transcripts, and official sources on its own to validate each leg, optimizing a 7-hour layover down to the minute, and replanning the afternoon when check-in finished early.
Note
This article was co-created with Claude Opus 4.7 Max. It has been human-reviewed and iteratively revised to my liking — still through AI, in the same conversational loop that powered most of the trip itself. The voice and opinions are mine; the first drafts and clean-up passes are Claude’s.
Just me, a Wanderlog trip, a pile of specific questions, and one orchestrator wiring it together: my own fork of Happy (setup details further down).
How I used to plan trips
To be honest, I never actually used a travel agent. My planning method was a kind of artisanal scavenger hunt that started with a Google Flights search and spiralled from there: dozens of search tabs, trusting random Reddit reviews from strangers I’d never met, watching hours of YouTube vlogs at 1.5x speed, and reading Wikivoyage end to end. Whatever survived the filter — a temple, a restaurant, a Shinkansen connection — would land in Wanderlog, my trip-planning home for years. It worked, but it was slow, and the signal-to-noise ratio was rough — for every useful tip there were five outdated ones and a sponsored post pretending not to be. I eventually had to build my own app to make Wanderlog bearable; more on that further down.
That whole scavenger-hunt pipeline is what AI agents are now quietly replacing for me. Not because the sources are gone — Reddit, Wikivoyage, and YouTube are still where the knowledge lives — but because I no longer have to be the one to ingest, deduplicate, and reconcile it. An agent can read ten YouTube transcripts in the time it would take me to watch one. It can cross-check a Reddit anecdote against the official JR site before I even open a tab. The radical change isn’t that AI is smarter than the internet — it’s that it does the boring synthesis work I used to do by hand.
My honeymoon followed a long version of the “golden route” — Tokyo, Nikko, Kyoto, Nara, Osaka, Hiroshima, Yokohama, back to Tokyo — researched the old way: great, but pretty close to everyone else’s trip. For trip number two I wanted something different: a Hokuriku loop with Kanazawa, an onsen night in Kaga, a deliberate detour through Shanghai on the way in and out. The problem with going off-script is that there’s no script. You’re back to research — comparing trains, checking restaurant queues, double-checking whether your passport actually qualifies for visa-free transit. That’s where AI agents stopped being a curiosity and started being genuinely useful.
I’ve already written about how AI made me a happier engineer; turns out it also makes me a happier traveler. I’ll get to the actual stack later in the post.
The trip, briefly
10 days, five Japanese stops, one Shanghai detour:
Tokyo — arrival, mid-trip pivot, and final base.
Kanazawa — new territory, anchoring a Hokuriku loop back through places I loved last time.
Kaga Onsen — one night in a ryokan.
Osaka — a long day on the way south.
Shanghai — twice, courtesy of the flight routing. Outbound I left the airport (last year’s China trip skipped Shanghai); return stays airside.
Roughly 60 places on the trip, four flights, half a dozen Shinkansen and limited-express reservations, and exactly zero printed PDFs.
A 7-hour layover, edited from inside it
The trip starts with a 7-hour Shanghai layover. An earlier session had already brainstormed a candidate route — Yu Garden, The Bund, a sit-down xiaolongbao lunch — so the question for the next session wasn’t what should I do but the much more useful am I actually gonna make it?
What came back wasn’t a vague “yes, you have time.” It was:
A check on PVG immigration wait times from live data
Confirmation that my passport qualifies for visa-free transit (and a warning not to ask for the 240-hour transit stamp — the 30-day visa-free entry is the right lane)
Maglev timings vs. metro alternatives
A queue-aware lunch slot: 11:55 AM at Jia Jia Tang Bao, not 12:15, because the line spikes at noon
A backup: Lin Long Fang, run by the same family, two blocks away, almost no queue
I followed it almost verbatim. Then, mid-route, I realised I was running ahead of plan, so I opened the session and typed:
I’m in Shanghai right now and it’s 10:23 — I already visited Yu Garden, The Bund, Nanjing road and I’m now super close to Jia Jia Tang — but it’s probably too early for lunch now. What should I do, considering this is my first and likely last time in Shanghai? I still want to get to the airport in time though.
A new mini-itinerary came back tuned to the actual time I had, the actual block I was on, and the hard cutoff for the Maglev back. The pre-trip plan was a starting point; the trip itself got edited while I was inside it.
Mining YouTube for places guidebooks miss
For a second visit to Japan, the usual recommendation engines are useless — every blog post wants to send you to Fushimi Inari. So I asked the AI to do something a guidebook can’t: download the auto-generated transcripts of a dozen “hidden gems in Japan” YouTube videos and synthesize them.
The pipeline, sketched in a couple of prompts:
yt-dlp --write-auto-subs --skip-download against a list of video URLs
Parse the .vtt caption files
Cross-reference with relevant Reddit threads (via the search-mcp server my agent already had)
Deduplicate and rank by how often a place was mentioned
By the time this finished running, most of my actual May 11–20 itinerary was already locked in — so the real payoff was a ranked shortlist of places that didn’t fit in this trip: a Tōhoku road-trip skeleton and a few Hokkaido anchors, queued up for trip number three. Worth running anyway: the same pipeline will surface much more during pre-trip planning when there’s actually space on the calendar.
Real-time replanning, from wherever I happened to be
Kanazawa, May 14. I finished a morning of sights earlier than expected and suddenly had four hours to kill before my next anchor. “What can I do with the next four hours within walking distance of where I am?” Ten options came back, ranked by time-of-day suitability — D.T. Suzuki Museum (better in afternoon light), Nishi Chaya District, a gold-leaf workshop with a reservation phone number.
The AI didn’t replace the planning; it just made replanning cheap enough that I bothered to do it. The Kaga ryokan check-in below is the canonical example — same idea, longer thread, real MCP mutations at the end.
Trip-viewer: a Wanderlog of my own
Wanderlog’s planning model is great; the app itself is painfully slow and the UI hasn’t improved in years — I stopped paying for Pro over it.
Note
Update, mid-draft: opening Wanderlog to double-check something for this post, I noticed the app is suddenly snappier. Looks like the update they pushed a few days ago genuinely landed. Credit where it’s due.
I’d already taken a stab at fixing this years ago. denysvitali/trip-viewer — a small Flutter app that imports a Wanderlog trip and renders it as a timeline, a map, an expense list, and a packing list — has been around for a while. I originally hacked it together using one of the first GPT models through GitHub Copilot, and it’s served me well across several trips since. For this trip I gave it a proper revamp with GPT-5.5 — most of the timeline and map rewrite came from a single long session, and the new version finally feels like something I’d ship if it weren’t already personal. It refreshes from Wanderlog on pull-to-refresh (and silently in the background after about a week). The planning still lives in Wanderlog; the looking-at-it lives somewhere I (mostly) built, and my trip ends up neatly organized exactly how I want to read it on a phone.
There’s a catch, though: Wanderlog has no documented public API, and — at least until I built wanderlog-cli — no MCP either. So before agents could touch anything I took the app apart, figured out how each operation maps to a backend call, and built an MCP server that exposes the right tools on top of it. With that in place, my agents can now modify any trip I own — add places, reorder days, switch a train reservation, leave a note — through structured tool calls. No prompt-engineering a JSON payload, no manual edits, no copy-pasting from chat into Wanderlog’s UI.
Here’s the loop that emerged during the trip — verbatim from the May 15 thread, the one captured in the screenshot below.
I open the session at the ryokan:
I’ve just arrived at the Ryukan, it’s May 15th. Can you readapt my plan based on this information? I think dinner it at 6 PM. Create a proposal first, then, only if I accept it, modify the plan.
The agent comes back with current vs. proposed:
Here’s the current May 15 plan vs. where you are now:
Original (afternoon):
14:00–15:00 mokume woodturning (optional)
15:15–16:15 Kakusenkei Gorge Promenade
16:15–17:00 Kiku no Yu public bathhouse
17:00–17:30 Yamanaka Onsen stroll
Proposed re-plan (you’ve checked in at Kuriya Yasohachi, dinner 18:00):
Drop mokume — you’ve skipped that window by arriving at the ryokan.
~15:30–16:30 · Kakusenkei Gorge Promenade — ~10 min walk north from Yasohachi, the highlight of Yamanaka. Easy 1 km riverside loop with Ayatori Bridge + Korogi Bridge.
~16:30–17:00 · Yuge Kaido stroll — the lantern-lit shopping street along the gorge, ends at Kiku-no-yu / Yamanaka Onsen square. Short and on the way back.
~17:00–17:45 · Ryokan onsen bath — soak in Yasohachi’s bath before dinner (recommended over Kiku-no-yu since you’ve paid for the in-house onsen and kaiseki is right after).
18:00 · Kaiseki dinner at Yasohachi.
Trade-off: this skips the public bathhouse (Kiku no Yu) in favor of the ryokan’s own bath — more relaxed, no rushing back wet. If you’d rather do Kiku no Yu, swap step 4 for it (~16:30–17:15) and shorten the gorge walk.
Want me to apply this to the itinerary?
Meanwhile reality slips:
It’s 3:33 PM right now and I’m checking in. This might take a while
The agent recalibrates against the slip:
Got it — assuming check-in wraps around 16:00, you’ve got ~2 hours before dinner. Tighter proposal:
~16:00–17:00 · Kakusenkei Gorge + Yuge Kaido combined — walk from the ryokan up to the gorge (Ayatori Bridge area), loop back along Yuge Kaido (lantern street). About 1 hour at an easy pace.
~17:00–17:45 · Ryokan onsen bath at Yasohachi — soak before kaiseki.
18:00 · Dinner.
Drop mokume, Kiku-no-yu, and the separate Yamanaka Onsen block entirely — not enough runway and they overlap with what you’ll see on the gorge/Yuge Kaido walk.
If check-in drags past 16:30 and you’re tired, fallback is: skip the outing, head straight to the ryokan bath at ~17:00, dinner at 18:00.
Want me to apply this?
Reality slips a second time — this time, in my favour:
Finished my check-in. It’s 3:48 PM now and the dinner is at 7 PM. Plan accordingly. I’ll be able to do the Onsen until 1AM (and then again at 5AM)
And the final proposal lands:
More breathing room — ~3 hours before dinner, and onsen can wait until after. Revised:
~16:00–17:15 · Kakusenkei Gorge Promenade
[truncated for AI cost control]