Shipping less than I designed
The original core feature was behavioural state detection: distinguishing someone overwhelmed from someone restlessly scrolling from someone in deep focus. I built the detection logic around app-switch frequency, session fragmentation, and focus continuity.
Then I hit the platform. iOS doesn’t expose those signals to a background extension. All I had was cumulative screen time.
I could have shipped it anyway — picked a state, shown a confident label, made the demo look finished. Instead I asked what I could honestly claim from the signal I actually had. The answer was: almost nothing.
So detection moved to where the data exists. The background extension sends a neutral cue with no state claim — it never claims which specific app caused the drift. When the user taps in, the app foregrounds and runs the full engine against real data. Less impressive in a screenshot. Honest in use.









