// case study
Mudo: one person,
idea to App Store.
Mudo is a privacy-first mood and anxiety tracker for iOS — live on the App Store, currently at version 2.10. I built and ship it alone: product decisions, design system, engineering, subscriptions, and App Store operations. This is what it looks like when one person owns a product end to end.
Role
Everything — product, design, code, store ops
Platform
iOS 17+ (SwiftUI)
Status
Live on the App Store, v2.10
Stack
SwiftUI · Core Data + CloudKit · Foundation Models · StoreKit 2 · WidgetKit · App Intents
// the brief
Most mood trackers are bloated journals: forced accounts, ten-screen check-ins, data shipped to someone else's server, and "insights" that restate what you just typed. The brief I set for Mudo was the opposite — a check-in fast enough to survive a bad day, intelligence that runs entirely on the device, and an architecture where privacy isn't a policy page but a structural fact.
No client, no spec, no team to hand things to. Which is exactly the point of this case study: every decision below — product, technical, commercial — had to be made and owned by one person, the same way it would be on your project.
// decisions that mattered
Privacy as architecture, not a marketing line
Mudo has no accounts, no analytics SDK, and no backend. Mood data lives in Core Data and syncs through the user’s own iCloud via CloudKit — users get sync and backup without my servers ever existing. The only network call in the entire app checks the App Store for a newer version. When the listing says “private,” that’s a property of the architecture, not a promise in the copy.
On-device AI with a quality gate
Insight cards, weekly reports, and next-day follow-ups are written by Apple’s on-device Foundation Models — nothing leaves the phone. But raw LLM output isn’t shippable: every generated insight passes through a quality gate that scores it for substance and statistical support. If a card would only restate the user’s mood back at them, it never shows — a curated template takes its place. The same fallback path serves every device without Apple Intelligence hardware, so the experience degrades gracefully instead of gating the app to the newest iPhones.
A strict friction budget
A mood tracker dies the day a check-in starts feeling like a chore. Every flow was designed against a budget: a check-in takes under ten seconds, and home-screen widgets log a mood through App Intents without opening the app at all. Streaks, achievements, and a notification system with its own routing layer handle the habit loop — capped and scheduled so they nudge instead of nag.
A real subscription business layer
Monetization runs on StoreKit 2: a subscription group with monthly and annual plans, free-trial introductory offers, a discounted promo tier, and a paywall flow that tracks conversion state across sessions — including the unglamorous edge cases, like making sure a prompt isn’t recorded as “shown” before it actually passed its display checks.
Shipping discipline most contractors skip
Every release ships with prepared App Store Connect copy — promotional text, what’s-new, keyword strategy — and deliberate calls like lowering the deployment target from iOS 18.4 to 17.0 to widen the addressable device base while keeping AI features hardware-gated. App Review compliance (no diagnostic claims, no overclaiming AI on unsupported hardware) is handled as part of the work, not discovered as a rejection.
// what shipped
Sub-10-second mood check-ins
On-device AI insight cards with template fallbacks
Weekly reports and pattern timelines
Next-day follow-ups that continue the week’s thread
Home-screen widgets with one-tap logging (App Intents)
iCloud sync via CloudKit — no account required
Streaks, achievements, and a capped notification system
StoreKit 2 subscriptions with trials and promo offers
Onboarding, data export, deep links, universal links
// why this matters to you
Mudo isn't in this portfolio because of its category. It's here because it proves a specific claim: I can take a product from nothing to live-on-the-App-Store and keep it shipping — design system, on-device AI, subscription infrastructure, release notes, App Review, all of it — without a team and without being managed.
If you have an app that needs to exist and no technical co-founder to build it, that's the exact gap I fill: one person, one conversation, a shipped product.