Inspiration
Many people do not dislike walking; they struggle with the decision to go outside when there is no reason to do so. Michi gives that decision a small, curiosity-led purpose without points, streaks, or pressure.
What it does
A user can say, “Going out feels difficult, but I have 60 minutes. I want greenery and fewer crowds.” GPT-5.6 converts the statement into a fixed, reviewable set of constraints. The user can inspect and edit every interpretation before it affects a route.
Destinations and roads are never invented by the model. Michi evaluates real MapKit walking routes with a hard time limit, the user’s chosen conditions, and normalized public data. The destination remains hidden until arrival, while the route and estimated time stay visible. After arrival, Michi provides a route back to the exact starting point and lets the user save one optional sentence in a private journal.
Explainable public-data personalization
Michi normalizes data across Tokyo’s 23 wards and 26 cities. The bundled city layer contains 44,622 place anchors and 1,040 station anchors, with per-category coverage disclosed instead of implying that every dataset covers every municipality.
For each recommendation, Michi can rescore the same MapKit candidates without public-data features. It only says that public data changed the route when this counterfactual selects a different route.
In the recorded Kyobashi comparison, both sides used the same origin, 60-minute limit, input conditions, MapKit search, and six candidates:
- Time-and-distance baseline: about 22 minutes, 726 m one way, 8 toilets, about 49 street-tree records
- Michi public-data personalization: about 22 minutes, 803 m one way, 11 toilets, about 102 street-tree records
- Public green spaces remained 2; historical station crowding tendency remained “very high”
The comparison exposes the tradeoff rather than claiming that every metric improved. Station ridership is historical tendency data, not real-time crowding, and unverified elevation values are not invented.
How GPT-5.6 is used
GPT-5.6 is deliberately limited to ambiguous-language-to-constraint translation. It uses strict structured output. The local proxy rejects explanation phrases that are not grounded in a continuous excerpt from the user’s own text. GPT-5.6 never receives candidate places, routes, journals, location history, or usage metrics, and it does not create places or roads.
Route selection remains deterministic and explainable. If the proxy is unavailable, the user can choose the same conditions manually and the route engine still works.
How Codex was used
Codex helped implement and iterate on:
- The native SwiftUI and MapKit product flow
- The public-data conversion and provenance pipeline
- Deterministic scoring and counterfactual comparisons
- AI-proxy validation and fallback behavior
- Privacy hardening and release-artifact checks
- Accessibility improvements and Simulator UI flows
- Automated tests and the evidence-backed submission video
The current suite contains 208 automated checks: 154 unit tests, 24 UI tests, and 30 Python checks covering parsing, scoring, routing, fallback, privacy, accessibility, and core flows. A verified Release artifact does not bundle the OpenAI API key.
Privacy and honest scope
Location, journals, feedback weights, and route history stay on-device. AI conversion sends only the text the user explicitly submits, with Responses API storage disabled by the proxy.
Feedback updates on-device preference weights; no model training occurs. Michi is a hackathon prototype, not a safety, accessibility, disaster-response, or real-time congestion guarantee. Simulator walkthroughs are labeled, and an in-app completion is not presented as proof that an outdoor walk occurred.
Running the project
Requirements: Xcode 26 or later and an iOS 17 or later Simulator.
- Clone the repository and open
Walking.xcodeproj. - Select the
Walkingscheme and an iPhone Simulator. - Build and run. Bundled public data and deterministic routing work without an API credential.
- To test GPT-5.6 conversion, add
OPENAI_API_KEYto a local.env.localand runpython3 scripts/michi_ai_proxy.py.
The key is used by the local proxy and is never embedded in the iOS app.
What’s next
The shared conversion format is intended to support additional municipalities and cities while preserving source, year, license, retrieval date, row count, and coverage metadata. Future work would include real outdoor accessibility research and field validation before making any claims about route comfort or safety.