Screen Time

A screen-time app that doesn’t block. It catches you mid-drift, asks one question, and keeps everything on your phone.

Role

Product StrategyProduct DesignUX ResearchSwiftUI

The problem

Screen-time tools sit at two poles. Blockers add friction when you open an app. Dashboards report totals at the end of the day. Both work for some people, and both have a documented failure mode: dashboards become wallpaper, and blockers get disabled mid-craving by the very people who installed them.

Intent picks a third moment: mid-session, after drift has started. In-feed nudges get swiped away with the same muscle memory as the feed itself. Intent arrives as a notification or a system shield, a different gesture entirely, and asks one question: still here on purpose?

It's for people who know they drift and have lost the fight with blockers. The win is the user catching themselves, so the drift shrinks because they noticed. Out of scope: hard blocking by default, streaks, accounts, servers, analytics.

What the evidence supports, and what it doesn't

Before the spec was final, I ran its claims through an independent research review and rewrote it around what survived. The PRD now names three tiers. Supported: approach-framed goals beat avoidance-framed ones, and naming a feeling is what actually mediates behavior change. Adjacent: friction-at-launch has peer-reviewed results; dashboards decay. Ours to prove: that mid-session beats at-launch at all.

The review changed the product. The claim that blockers don't work got deleted. Pause mode, the shield, was demoted from strongest to highest-risk, because restriction can backfire into more use even when it's self-chosen. And one commitment is written into the PRD permanently: never claim research-backed effectiveness until we've measured it ourselves.

One question, two buttons

iOS gives a third-party app exactly one surface over another app: a system shield with a title and two buttons. That constraint shaped the whole interaction. The shield carries the binary choice, “I'm here on purpose” or “Check in”, and the fuller reflection lives one tap away in the app. Ignoring the shield is logged too; it usually means the threshold is too generous.

The check-in's fourth option, “I'm bored / stressed / avoiding something,” is the one the evidence supports. Pick a tag, get one question, type a sentence if you want. An on-device model replies in two sentences, like a direct friend. What you typed is discarded after inference.

Shield

The question, over the app.

Check-in

Four honest answers.

AI reply

Two sentences, on-device.

A few rules keep the checkpoint honest:

Never nag. One notification per session; the shield won't re-fire for 30 minutes. Respecting the answer is the product.

No easy button. The shield's buttons get equal weight and trade places over time, so “I'm here on purpose” can't become muscle memory.

The exit always exists. You can always tap through. The moment you can't, Intent becomes the blocker it exists to replace.

Firmness is a ladder. Gentle, Standard, Firm, Pause, set per app. Gentle is the default, and the product never calls Pause “best.” It's the heaviest, which is different.

AI in exactly two places

The on-device model has two jobs. It reframes goals from avoidance to approach: “stop wasting hours on TikTok” becomes “you're working toward more time with your kids.” And it writes the two-sentence check-in reply. Both prompts are version-controlled and marked do-not-modify-without-review, because here the prompt is product behavior.

The boundaries matter as much as the features: no inference at the checkpoint, none in the memory-constrained extensions, silent fallbacks on unsupported devices.

Goal reframe

Avoidance in, approach out.

Weekly insight

One pattern, in plain English.

Nothing leaves the phone

No account. No server. No analytics. No network calls in normal use. Inference runs on the Neural Engine, and deleting the app deletes everything; onboarding says so as a selling point. Every pattern the app learns is visible in Settings and individually deletable. The cost is real: no funnels, no session replay. I gave them up to keep the promise absolute.

What I'll measure

Intent is pre-release, and the privacy stance rules out normal analytics, so success gets read from what's left: App Store cohort retention at weeks 4 and 8, review language (do people describe catching themselves?), and voluntary feedback. The metric I committed to is retention of the behavior change, not of the app; installed-but-ignored is the failure mode.