// 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.12. 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.12
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.
// the app today



// 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.
// anatomy of an insight
Mudo's architecture is the privacy story. This is the path a single mood entry travels - and where it stops:
Check-in
A mood is logged in under ten seconds - or straight from a home-screen widget via App Intents, without opening the app.
On device
The entry lands in Core Data. There is no account, no analytics SDK, and no server for it to be sent to.
iCloud sync
CloudKit syncs and backs up through the user's own iCloud - sync and restore without my servers existing.
AI writes
Apple's on-device Foundation Models draft insight cards, weekly reports, and next-day follow-ups locally.
Quality gate
Every insight is scored for substance and statistical support; weak ones are swapped for curated templates - the same path serving devices without Apple Intelligence.
Delivered
Cards, reports, and follow-ups reach the user. At no point did their data leave the phone.
// 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
// results
<10s
Check-in budget
every flow designed against it
1
Network call
the App Store version check - that's all
0
Accounts or servers
data stays on-device, syncs via iCloud
v2.12
Current version
steady releases since launch
Mudo launched in October 2025 and reached v2.12 within its first year - subscriptions, widgets, and on-device AI shipping steadily through App Review, every release with prepared store copy and no team behind it. The numbers above aren't growth metrics; they're architectural guarantees. For a product whose users log their mental health, "one network call" is the feature.
// why this matters to you
Mudo is 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.