Inspiration
Many people do not dislike walking; they struggle with the decision to go outside when there is no reason to do so. Points and streaks can make that decision feel like another obligation. Michi starts somewhere gentler: a small question that the user genuinely wants to investigate.
What it does
A user can write something ambiguous, such as “I am a little tired, have 15 minutes, and want a quiet green route.” GPT-5.6 translates only that sentence into a fixed set of walking constraints. Every interpretation is shown before it is applied, and the user can change it.
Destinations and routes are never invented by the model. Michi combines real MapKit walking routes with the time limit, fatigue, slope, crowding tendency, toilets, drinking water, greenery, time of day, and previous route feedback. It then gives the walk one curiosity prompt. After returning, the user may leave one sentence, gradually creating a private curiosity journal instead of a competitive activity log.
Open data that changes the product
Michi normalizes 44,622 locations and lightweight route features from Tokyo and national sources: parks and public facilities across the 23 wards and 26 cities, cultural properties, toilets and accessibility attributes, public drinking-water spots, street-tree coverage, 264 official walking courses, cooling shelters, baby-rest facilities, evacuation/support locations, police boxes, station ridership, and elevation.
To avoid treating open data as decoration, Michi recomputes the same candidate set without public-data features. It only says that open data changed the recommendation when this counterfactual selects a different route, and it displays the values that caused the change.
How we built it
The iOS app is built with SwiftUI, MapKit, Core Location, and XCTest. A configuration-driven Python pipeline converts CSV, GeoJSON, and KML ZIP distributions with different encodings, columns, and projections into one city-data format. Bundled snapshots retain municipality, year, license, retrieval date, row count, required columns, and SHA-256 metadata, so the app can start immediately and explain its provenance.
GPT-5.6 runs behind a local proxy using strict structured output. The proxy rejects explanation phrases that are not grounded in a continuous excerpt of the user’s input. It does not receive location, journal entries, candidate places, route history, or usage metrics. If AI is unavailable, every condition remains manually selectable and route selection still works.
Codex accelerated the full workflow: SwiftUI and MapKit implementation, data conversion, test design, privacy hardening, accessibility checks, release verification, and the demo workflow. Trust-sensitive product decisions—hard time limits, deterministic scoring, counterfactual attribution, and optional self-reporting—remain explicit in code and tests.
Challenges and lessons
The hardest engineering problem was not downloading data; it was making incompatible public datasets comparable without overstating what they prove. “Near a police box” cannot become “safe,” street trees cannot become guaranteed shade, and an in-app completion cannot prove that a real walk happened.
We learned that AI is most useful here at the boundary of human ambiguity, while deterministic software is better for time limits, geographic evidence, attribution, and safety-related explanations.
What’s next
Next we would conduct a small field study, improve route feedback from real walks, deploy a production proxy with App Attest, and publish additional city-data packs. The converter already separates municipality-specific schemas from the app, so the same experience can expand beyond Tokyo without rebuilding the recommendation engine.
Log in or sign up for Devpost to join the conversation.