// 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.