BACK TO ALL ARTICLES
BEHIND THE MACHINE

The Design Decisions I Can't Justify With Data

Building for people in emotional pain means making choices that metrics will never validate.

5 MIN READ

Most product decisions have a feedback loop. You ship something, you watch the numbers, you decide if it worked. That loop functions well when what you're optimizing for and what's actually good for your users are the same thing. Building Unheavy broke that assumption in ways I didn't fully anticipate.

There are design decisions in Unheavy I made deliberately, knowing they'd hurt my metrics, and that I can't validate with any data I have access to. I made them anyway — not from instinct alone, but from a specific belief about what it means to build for people when they're struggling.

No Push Notifications

The standard playbook for any wellness app includes push notifications. "Time to check in." "You haven't used the app today." "Your streak is about to break." These work. They drive opens. They increase DAU. The data on this is consistent across categories.

Unheavy doesn't send any. Not a single notification.

My reasoning: if someone is having a bad day — specifically the kind of bad day Unheavy is designed for — the last thing they need is their phone adding another demand. The app should be a choice, not an obligation. Something you come to when you need it, not something that interrupts you when you don't.

I can't prove this is right. There's plausibly a version of Unheavy where a thoughtfully-timed nudge helps people reach for it during exactly the moments they need it most. I don't have the data to resolve that. I made a judgment call about what I'd want if I were the person in pain.

No Streak Mechanic

Streaks are the most reliable engagement driver in consumer wellness apps. Duolingo built an empire on streak anxiety. Every major habit app uses some version of it. The mechanism is well-understood: loss aversion makes breaking a streak feel psychologically costly, which drives users to open the app even on days they otherwise wouldn't.

Unheavy has no streak. Nothing to maintain. You use it when you need it, and there's no record of when that was.

The problem with streak mechanics in an emotional release context is that they invert the relationship between the product and the user. Emotional release shouldn't be a daily obligation with pressure attached. It's for acute moments — when you're carrying something specific and need to put it down. Turning that into a streak creates exactly the kind of low-level obligation-anxiety the app is supposed to help relieve.

Researchers studying mental health technology have written about this tension — between engagement optimization and user wellbeing. It hasn't stopped most apps from using streaks anyway. The numbers are too good to ignore.

No Data Storage

The content that passes through Unheavy would be valuable. People write some of their most unfiltered, emotionally raw material into it — fears they can't voice to anyone, regrets they haven't processed, the things that surface at 2am. From a research standpoint, a product improvement standpoint, an AI training standpoint, that data has real worth.

I don't store any of it. When the destruction animation ends, the text is gone. Not archived, not anonymized, not compressed somewhere. Actually gone. I built the architecture around not having it.

The reasoning is simple but carries genuine product cost: if I stored the data, I'd need to secure it. If I secured it, I'd need to be confident the security was adequate. If it ever wasn't — an app where people write their worst fears and most private regrets — the harm would be severe and personal. The only reliable way to protect data this sensitive is to not have it in the first place.

The cost is real. I can't do content-based personalization. I can't surface patterns in what users write about. I can't use any of it to improve the product. These are genuine limitations I imposed on myself by choosing a different value.

The One-Time Purchase

Subscription models work. They produce more predictable revenue, higher LTV, and they're what the market expects. In a different category, I'd probably use one.

Unheavy is a one-time purchase. No monthly commitment, no billing relationship.

Part of the reasoning is the conflict of interest built into subscription mental wellness products — when your revenue depends on users continuing to need you, there's subtle pressure to avoid actually solving anything. But there's a second reason I think about more quietly: charging someone monthly to access a tool for their emotional pain introduces a low-level financial obligation into the exact thing that's supposed to provide relief. That feels like the wrong trade.

I don't have data on this either. It's a belief about how financial anxiety compounds emotional anxiety. I can reason about it but I can't measure it.

When the Feedback Loop Breaks

The standard product development approach assumes you can measure whether you got something right. A/B test it. Watch retention. Check activation rates. In most categories, this is exactly the right tool.

When you're building for people in emotional pain, some decisions aren't empirical. They're ethical. You're making a judgment about what it means to respect someone's vulnerability, and there's no dashboard for that.

I'm not confident all my calls are right. Some of them might be wrong in ways I'll never find out — users who needed a nudge and never got one, people who would have benefited from personalization I chose not to build. Those are real costs.

I'd rather make deliberate choices I can reason about than optimize my way into a product that performs well on metrics while not giving a damn about the people using it.

That's the constraint I've accepted building in this category. Some design decisions are questions of what kind of builder you want to be — not what the data recommends. No A/B test is going to answer that one for you.