Mosey
A travel app built for one trip: 27 days across Denmark and Norway. Native iOS, anti-itinerary, with contextual suggestions and a daily plan generated by on-device AI.
- 60
- Places curated
- 42
- Events bundled
- $0
- AI inference cost
Challenge
I have a 27-day trip to Denmark and Norway coming in July, and I didn't want a rigid itinerary app. I wanted something that works with how I actually travel: show up somewhere, figure it out, document it later.
Every travel app I tried was either a planning tool (calendar-first, top-down) or a discovery tool (a map with reviews). None answered the question I actually ask each morning: what do I feel like doing right now, given the weather, where I am, and what I haven't done yet.
Approach
Built for one user and one trip. That constraint cut most of the decisions: no social layer, no login, no multi-trip support, everything local with SwiftData. The Today tab leads with intent, not a calendar; a Plan tab covers the days I want structure; a Journal logs visits after the fact.
The AI was meant to run on Claude's API, until one auto-plan run burned through my quota in a single session. I moved the whole inference stack to Apple's on-device Foundation Models on iOS 26: no API key, no cost, works offline. For a personal app that was the right call anyway.
Outcome
The app builds clean and runs on iOS 26. The auto-plan generates an eight-day, eleven-stop itinerary entirely on-device. 60 curated places across Copenhagen, Herlev, Billund, and Oslo; 42 events bundled for the trip window.
It's not on the App Store. It runs on free provisioning until I decide whether the developer fee is worth it. The trip starts in July, and that's the real test.
Who I designed for
One user: me. That sounds like a cop-out until you notice most travel apps fail precisely because they're built for everyone.
My pattern: I don't pre-book much, I move by bike and transit, I eat where I end up, and I document the day afterward. I wanted the app to support that, not fight it. The anti-itinerary framing isn't a tagline, it's why the Today tab opens with "what do you feel like doing today?" instead of a schedule. The Plan tab exists for the days I do want structure, but it's opt-in.
The key decision: on-device AI
The original plan used Claude's API for both the concierge chat and the structured auto-plan. That lasted until the first real auto-plan run exhausted my monthly quota in one session.
I moved everything to Apple Foundation Models. It meant raising the iOS target from 18 to 26, which is a real cost: anyone on older iOS can't install it. For a personal app, fine. Guided generation produces the day-by-day plan on-device, streaming, with no network call and no bill. The model is good enough for the job. I'm not asking it to replace a travel agent, just to turn a list of places into a sensible daily order.
Where it is now
Build is clean, the core works, the trip hasn't happened yet, and I'm honest about that being the unfinished part.
Three things I know are rough: a handful of force-unwraps that could crash on a day I'm not near a laptop; an auto-plan that sometimes repeats day titles; and about fifty hardcoded colors that should be tokens. I did the audit and noted everything but haven't applied the fixes. The widget and Live Activity are built but disabled for now. CloudKit sync waits on the developer-account decision, which I need to make before July so the person travelling with me can get a TestFlight build.
Selected screens
" Building an app for a specific trip you're about to take is a strange kind of pressure: a hard deadline, a real user, and the stakes are exactly one vacation. The things I skipped (social, purchases, multi-trip) stay skipped, because there's no version of this where I regret them. "
Digital Reports
→Batch reporting for industrial grinding: 36 hi-fi frames in Figma plus a working coded prototype that runs ahead of the production roadmap.