CleanBreak — No-contact recovery.
Local-first iOS app that gamifies no-contact after a breakup — a Skia-drawn streak counter, a one-tap PANIC line to an AI friend that stays free forever, and a message decoder. No accounts, no ex's name ever asked, crisis rails never paywalled.
A hero streak for not texting your ex, and a PANIC line that never dead-ends
Breakup apps either moralize ("just delete their number") or gamify recovery so aggressively it feels hollow the one night it actually matters. Nobody had built the thing you reach for at 3am when your thumb is hovering over their name — something that catches you in that exact second, not a wellness checklist for the next morning.
A no-contact streak drawn live with Skia — tick dial, gradient numeral, glow — paired with a PANIC line that is architecturally incapable of being paywalled: crisis rails and the AI-friend chat are wired the same way regardless of entitlement tier, and a local grounding flow covers the case where the network is down. The product rule is explicit in the domain layer: texting, calling, or meeting up resets the streak; checking their social media is logged, never punished.
- MobileExpo SDK 57 + React Native 0.86 with the New Architecture enabled — TypeScript, ES modules only.
- StateA single persisted Zustand store (AsyncStorage); the streak is derived, never stored — recomputed from `noContactStart` + slip events on every read.
- RenderingReact Native Skia draws the hero counter and backdrop bloom/vignette; Reanimated drives the motion layer.
- ServerA small Fastify proxy holds the OpenAI key and streams Coach/Panic replies over SSE; ships a mock mode with no key so the whole app is testable offline. Model is tiered by entitlement — gpt-4o-mini free, gpt-4o Pro.
- Always freeThe PANIC line and crisis rails (988, National DV Hotline) are wired identically across every entitlement tier — not a feature flag that could regress.
- Local-firstStreak, journal, check-ins, and "Text the Void" drafts never leave the device; the Void itself persists nothing by design.
- Offline-safePANIC falls back to a local grounding exercise and wave timer when the network is down, so the one feature that has to work, works.
- Ship the Live Activity urge-timer to the lock screen so the streak stays glanceable without opening the app.
- Wire the milestone reel GIF export to a shareable MP4 for TikTok/IG, since GIFs don't autoplay as video there.
- Bring the Android build to parity once the iOS App Store listing is live.
More from the catalog.
Adaptive pace coaching with a real changelog
- Maple-glazed duck$32.00
- Roasted carrots$14.00
- Bread + butter$8.00
- Wine pairing × 4$76.00
Split a tab, share a link, settle without IOUs
Want one of these for your team?
Two engagements open for Q3 2026. Discovery starts at $24K.