We went to Japan earlier this year, and I wanted to write some reflections about an app that I had built to help aid us in our travels.

As AI models get better, these apps become less impressive but it was still a great experience to think deeply about how to design a useful application, and polish off the rough edges.

App goals

I tried to be pretty specific in the main goals I wanted from the app:

  • consolidate information about the trip into one place so that it would be easy to do proactive planning before the trip (for e.g. confirming what day we needed to buy tickets for the Teshima Art Museum)
  • once on the holiday, quickly identify important stuff we needed to get sorted on a particular day (e.g. some of our hotels had free breakfasts, free laundry, others didn’t)
  • have a scratchpad for particular plans (e.g. answering “What transport options do we have to get to Setoda?”)

What got built

With that end in mind I pretty quickly built the first version. This was powered by one really long markdown file I got Claude Cowork to build, absorbing information from booking emails, a previous Google Spreadsheet I was maintaining, and scraping specific details from Booking.com/other research sources.

It was a basic web app that had a Today view, a ‘trip overview’ view and a placeholder for a chatbot:

The trip view, showing a day's wake-up and sleep locations, included meals, and hotel check-in and check-out times
A day in the trip view

After that was completed, I then built the basic version of the chatbot, as I kinda wanted to get a feel for how hard it was to build a proper chatbot with the OpenAI APIs 😅

The chat view, answering a question about what time the Alpine Route departs
The chatbot, answering a question about the Alpine Route

This worked pretty well for the pre-trip preparation. I used the chatbot quite a bit for asking questions while planning, and the itinerary was also really good to then build a PDF I could share with friends and family.

I also noticed though, that the chatbot I had built wasn’t really good at doing research. I got into a habit of whenever doing any serious trip planning, I’d either need to copy paste the details of the day out from the itinerary, or open the folder in Claude.

Thus as we got closer to the date of departure I basically stopped using the chatbot - I think the last time I used it was to ask a customs declaration question 😂 (“How long are you planning on staying in Japan?”).

About a week before we left, I added a “daily briefing” Telegram bot that would create a small briefing of what we needed to be prepared for every day, inspired by Felix Krause’s usage of OpenClaw to do very similar stuff.

A Telegram message from the Japan 2026 Bot laying out the morning's plan, weather and travel times
The morning briefing

This ended up being my favourite part of the app, because it was a nice grounding summary and mental preparation for the next day’s activities - even if sometimes they were a little wrong.

I quickly added a nightly briefing too that would help prepare us for the next day and remind us to do a rose / thorn / bud gratitude exercise every day. This exercise was inspired by some research into trip planning I had done which suggested that reflection / gratitude practices are some of the most important impacts on trip enjoyment.

A Telegram message previewing a free day in Tokyo and prompting a rose / thorn / bud reflection
The nightly briefing, with the rose / thorn / bud prompt

While these were a little lame and probably unnecessary, I really found they added to the trip 😅

Finally, because a lot of our trip was very weather dependent, I also added a specific weather forecast command (note that forecasts were also integrated into the briefings as you can see above)

A Telegram message showing a three day weather forecast for Shin-Omachi, the Alpine Route, Toyama and Tokyo
The three day forecast command

One thing I really liked while travelling was being able to make edits to the app using Claude Code’s mobile app - I’d grab the timetable for the shinkansen the next day for e.g. so we could make on-the-fly choices:

A note in the app listing Toyama to Tokyo shinkansen departures, arrival times and journey durations
A shinkansen timetable, added from my phone the night before

Key takeaways

  • As I alluded to above - the chatbot didn’t end up getting that much use, except for during the early stages of planning, before I’d memorised key details
  • Polishing an app’s rough edges is super fun!
  • There’s no substitute for road testing, and having the ability to rapidly update and deploy a codebase using Claude Code cloud sessions was really nifty