Streaks, Nudges, and the Behavioral Science of Showing Up
A founder's public story of building ExecReps.ai
The Slack message that started a three-week internal debate was six words long.
“Should we add streaks?” Our designer sent it.
I typed “yes” immediately.
Then I deleted it.
Then I typed a longer answer. Deleted that too.
I stared at the cursor for a solid minute. Behind those six words was one of the most consequential product decisions we’d make. Not technically. Streaks are trivial to build. Philosophically, though, it was huge. Because the answer would define whether ExecReps helps people build a practice, or just guilt-trips them into opening an app.
Very different things, those two.
The Duolingo Problem
Let me back up a little. We’d just shipped v2.5, our personalized experience release. We had role-based navigation. Smart empty states. Progressive disclosure that showed people only what they needed. Don Norman would call that reducing the “Gulf of Execution,” narrowing the gap between intent and interface.
But we had a retention problem. People who practiced three times stuck around. The challenge was getting people to practice three times in the first place. Our activation curve looked like a cliff with a plateau. You either fell off in the first week or stayed for months.
When we ran our engagement features through Nir Eyal’s Hook Model, we scored about 4 out of 10. We had a decent trigger (email invite) and a reasonable action (do a workout). Our Variable Reward was flat, though, and our Investment phase was nonexistent. Users completed a workout and… nothing loaded the next trigger. No real reason to come back tomorrow. Any product team using the Hook Model would recognize that open-ended loop as the problem.
So, the conversation turned to engagement mechanics. And someone said “streaks.”
If you’ve ever uninstalled Duolingo, you know why that word made me pause. Duolingo’s streak system is a masterclass in behavioral design. And, I think, an object lesson in crossing the line from helpful to hostile. The sad owl. The passive-aggressive notifications. The sheer guilt of it all. That thing where you feel worse about breaking a streak than you ever felt good about maintaining one.
I’ve talked to people who kept their Duolingo streak alive for 300 days without learning a single new word. The metric had completely decoupled from the outcome. In Kano Model terms, what should be a ‘delighter’ – a sense of momentum – had degraded into a ‘must-be’ obligation that only generated dissatisfaction when broken.
That isn’t retention. That’s a hostage situation. A podcast guest told me something similar about fitness apps a few months back. The moment the streak becomes the point, you’ve lost the plot on what the product was supposed to do.
BJ Fogg Changed My Mind
I almost killed the streaks idea entirely. Then I re-read BJ Fogg’s Tiny Habits, and his B=MAP model reframed everything.
Fogg’s framework is pretty standard product science now. Behavior = Motivation × Ability × Prompt, all converging at the same moment. Miss any one, nothing happens. The mistake most products make is trying to increase motivation. More notifications, more badges, more guilt. Fogg argues you should instead decrease the effort required. Make the behavior so easy that even low motivation is enough.
That distinction changed everything. The question wasn’t “how do we motivate people to practice?” It was “how do we make practicing the path of least resistance?”
We spent two weeks mapping the behavioral science before writing a single line of code.
BJ Fogg’s B=MAP. Design for the low-motivation moment. Not eager Monday morning, but exhausted Thursday afternoon. If the streak system only works when people are fired up, it’s not a system. It’s a fair-weather friend.
Kahneman & Tversky’s Prospect Theory. People feel losses roughly twice as intensely as equivalent gains. The engine behind every streak system ever built. We’d use loss aversion, but carefully, with an escape valve.
Nir Eyal’s Hook Model. Trigger → Action → Variable Reward → Investment. Our 4/10 audit exposed the missing Investment phase. Our morning nudge system needed to close that loop.
Deci & Ryan’s Self-Determination Theory. Intrinsic motivation requires autonomy, competence, and relatedness. Daniel Pink popularized this as Drive’s AMP framework: Autonomy, Mastery, Purpose. This became our ethical guardrail. Any engagement system that undermines autonomy will eventually backfire.
What We Built (And What We Didn’t)
Streaks, But With an Exit Ramp
Yes, we built streaks. But with one critical difference. We designed the break as carefully as the streak itself.
When you practice, your streak increments. You see a small visual celebration. Dan Saffer calls this a ‘signature moment’ in his microinteractions framework. Not confetti cannons, just enough feedback to trigger Fogg’s “celebration” mechanism. The key is immediacy. Celebration fires within 200ms of completion. Delayed celebration doesn’t wire the habit. Hit milestones (7 days, 30 days, 100 days) and the feedback gets richer. It’s a progressive loop where the microinteraction evolves as your behavior matures.
The part I’m quite proud of? Streak freezes. Miss a day, spend a ‘freeze credit’ to keep your streak alive. You earn these by practicing consistently. It’s Kahneman’s loss aversion working for you instead of against you. You’re spending a resource you banked through good behavior. Cialdini’s Commitment & Consistency principle is baked in. The freeze credits are earned through past commitment, making the current streak feel like something you’ve invested in, not something imposed on you.
If your streak does break? We don’t show a sad owl. We show your best streak as a personal record. “Your best: 23 days. Let’s start a new one.” The streak dies quietly. No funeral. No guilt. Just a clean slate.
Someone on the team argued a broken streak should feel like something. They thought mild pain of loss is what makes streaks work. They weren’t wrong about the psychology. But they were wrong about the ethics. Our users are professionals trying to get better at communication. If they miss a day because their kid got sick, the last thing they need is an app eroding their confidence. That’s a direct violation of SDT’s autonomy principle. Once autonomy is undermined, Deci & Ryan’s research shows intrinsic motivation doesn’t just dip. It collapses.
Morning Nudges, Timed to the B=MAP Window
Our nudge system sends a morning email, not a push notification. That’s deliberate. It’s timed based on engagement patterns. Content varies. It could be a prompt related to something you’re working on, a micro-insight from your last session, or simply “Your 3-minute warm-up is ready.”
The timing isn’t random. We anchored nudges to what Fogg calls ‘anchor moments’. That’s the Tiny Habits recipe: “After I [existing behavior], I will [new behavior].” Most professionals have a cortisol spike in their first waking hour. Alert, but not yet consumed by chaos. That’s when B=MAP converges. Motivation is fresh, ability is high, and the email is the prompt.
The variable reward, straight from Eyal’s Hook Model, comes from the content. You don’t know what the nudge will contain. It might surface a skill gap you hadn’t considered, or a scenario relevant to a meeting that afternoon. Variable rewards of the “hunt” type create curiosity. Curiosity beats obligation every time.
Every nudge has a one-click opt-out. Not buried in settings. Right there in the email. Nielsen’s Heuristic #3, “User control and freedom,” in practice. The moment a nudge feels like spam, trust is gone permanently.
Re-engagement, An Invitation Not an Intervention
For users who go quiet: one email after two weeks. “Here’s something new since you’ve been away. No pressure.” One email. Not a drip campaign. If they don’t come back, we leave them alone. That’s Pink’s Autonomy principle in action. And it matters more than juicing a metric.
The “What We Don’t Build” List
Every product team has a roadmap. Very few have a formal anti-roadmap. We started one during v2.6 planning, and it’s become one of our most valuable documents.
No leaderboards. Communication skills aren’t a competition. Ranking people against each other undermines what Deci & Ryan call ‘relatedness’. That’s the sense you’re part of a supportive group, not fighting for position.
No public scores. Your EPS, streak, practice frequency. All private by default. Nielsen’s Heuristic #7: flexibility and efficiency of use means users control their own data.
No shaming mechanics. No “you’re falling behind” messaging. We learned from our social proof analysis that showing “3 of 15 members practiced today” is negative social proof. Cialdini warns that framing the minority as the example normalizes inaction. We use absolute counts instead. “3 team members practiced today.” No denominator, no implied judgment.
No engagement theater. No features that increase time-in-app without increasing value-to-user. Norman calls this a conceptual model violation. When the product’s goals diverge from the user’s, the relationship erodes.
The Product Lesson: Easiest Beats Loudest
This is an insight I keep coming back to. It applies to virtually every product with a retention challenge.
The best retention features don’t motivate people to do hard things. They make the right thing the easy thing.
The B=MAP alternative to amplifying motivation: make the behavior so frictionless that even a bad day’s motivation is sufficient.
Shorter sessions, not longer ones. A three-minute warm-up is better than a thirty-minute workout you skip. That’s Fogg’s “Starter Step.” An entry point so small it feels absurd to say no.
Fewer choices, not more. Progressive disclosure means one clear next step, not twenty options. Norman calls this ‘constraints’. Limiting action possibilities to guide behavior without instructions.
Gentler nudges, not louder ones. A calm morning email beats five push notifications. Saffer’s microinteraction principle: triggers should match the emotional context, not overwhelm it.
Graceful failure, not punishment. A quiet streak reset beats a guilt-trip notification.
Our early v2.6 data is encouraging. Streak cohort users practice about 40% more frequently. More importantly, session quality metrics haven’t dropped. People aren’t checking a box to keep a number alive. They’re doing the work. Not sure yet whether that holds over six months, but it’s the right signal.
That’s the difference between a habit and an obligation.
The Uncomfortable Truth About Behavioral Design
Building this system forced me to confront something uncomfortable. Every behavioral design technique is morally neutral. Kahneman & Tversky’s loss aversion can build a healthy practice or trap someone in a toxic loop. Eyal’s variable rewards can spark curiosity or create compulsive checking. Cialdini’s social proof can inspire action or manufacture peer pressure. The framework doesn’t care about your intentions.
I wonder if that’s the biggest design challenge we face today. Not building the features, but building the ethics around them.
We optimized for practice quality, not app opens. For skill growth, not session count. We built explicit escape valves, too. Freeze credits, quiet resets, one-click opt-outs. Because these tools were powerful enough to do real harm if deployed carelessly. I’m not sure we got every detail right, but the intent was right.
That three-week internal argument about streaks – the one that started with six words in Slack – was the most valuable product discussion we’ve had. The most important product decisions aren’t about what you build. They’re about why you build it. And what happens when it works exactly as designed.
If you’re building engagement systems, write your own “what we don’t build” list before you write a single user story. You might be surprised how much clarity it provides. It sure did for us, and it’s why we built ExecReps the way we did.
And if you ever find yourself designing a sad owl, stop. Close your laptop. Go for a walk. You’ve lost the plot.







