Walking Tours
A self-guided walking tour app for iPhone. Pick a city and the time you have. An AI plans the route, writes the guide from Wikipedia, and reads it to you at each stop.
- React Native
- Expo
- Apple Maps
- Python
- AWS Lambda
- DynamoDB
- Claude Haiku
- Kokoro TTS
- Modal
- Terraform
The idea
I like to explore a new city on foot. Guidebooks are heavy, and audio guides follow a fixed script and a fixed route. I wanted a guide that plans a walk for the time I have, then talks to me while I walk, with my phone in my pocket.
What it does
- You pick a city and a length: one, three or five hours. You can add a theme, for example “Instagram photo spots”.
- The app plans a route of five or six stops and shows it on Apple Maps.
- When you come within 35 metres of a stop, the guide starts by itself. The text on screen follows the voice, sentence by sentence.
- Between stops, the guide gives each turn 30 metres before it. It tells you about the places you pass and stories about the city.
- You can pause to eat or to go inside a sight. Paused time does not count toward the tour.
- At the end you get a summary and a photo collage to share.

Pick a length, the number of stops and how far you want to walk.

The route on Apple Maps, with a note from the guide.

At a stop, the guide plays and the text follows the voice.

The lunch stop offers a pause.

Pause to eat, to go inside, or for another reason.

Each stop has more detail, fun facts and a source link.

A summary of the stops, time on tour and time paused.
How it works
- Find the sightsThe generator collects sights near the city centre from Wikipedia.
- Plan and writeClaude Haiku chooses the stops, puts them in order, fits them to your time and writes a guide for each one.
- Check every factEach fact must quote the Wikipedia text exactly. A script checks that every quote exists.
- Give it a voiceKokoro, a text-to-speech model on a Modal GPU, reads each text and stores it as an MP3.
- WalkThe iPhone app follows your position and starts each guide when you arrive.
The backend is Python on AWS Lambda behind CloudFront, with DynamoDB and S3, all set up in Terraform. It costs nothing when no one uses it. A new tour costs about six to nine cents in Claude calls. A shared tour is stored for 30 days, so the next person gets it for free. Daily limits for each phone, and one for the whole service, cap the spend.
What I learned
- Make the AI show its sources. A rule that each fact must quote Wikipedia makes every claim checkable by a script, not only by a person.
- Test in the street, not only in the simulator. The app keeps a walk log of position accuracy, arrivals and battery. It stores no coordinates. The log answers the questions that matter on a real walk: does the guide keep talking with the screen locked, and what does that cost in battery?
- Treat cost as a design input. Shared tours, caching and daily limits keep a tour at a few cents. There is no idle cost.
- Evaluate the guardrails. A set of 150 prompts checks that the voice guide stays on topic. One run costs about five cents.
What comes next
The backend can already answer spoken questions about the tour, its stops and the route. The next step is to turn on the Ask button in the app. After that comes an Apple Watch app that guides you with taps on the wrist.