Every streak I have ever had, I have eventually broken. And every time I broke one, I did not train harder the next day to make up for it. I stopped opening the app.
That is not a character flaw, it is what streaks are for. A daily counter is a device for making you feel the loss of something, and it works - right up until the day it fires, at which point the thing you have lost is the reason you were opening the app at all. Two hundred and sixty days of evidence that you are consistent, deleted by one Tuesday when your train was cancelled.
The version I did not want to build
The default is easy and I understand why everybody ships it. Count consecutive days. Show a flame. Send a notification at 8pm when the day is nearly gone. It measurably increases engagement, and the people it works on it works on very well.
It also punishes exactly the weeks that most need not to be punished. A bad week is usually a bad week for a reason - work, illness, a small child, a long journey - and the reason is rarely that you stopped caring. Adding a small daily failure to a week that is already going badly is not motivation. It is just an extra thing going wrong.
What Evercoach counts instead
The streak counts qualifying weeks, and a week qualifies when you hit the commitment you set for yourself. Three sessions if you said three. Not a number the app picked.
- The week in progress can only help you. It can extend a streak. It cannot break one. On Wednesday there is no such thing as being behind, because the week has not finished happening yet.
- Grace is earned back. A missed week is forgiven against the four weeks around it, so one bad fortnight in a good quarter does not read as a collapse. It reads as a bad fortnight, which is what it was.
- Rest days count. They are part of the plan rather than a gap in it, and a week with two of them in it is not a worse week. That is the whole point of programming rest at all.
- Skipping the check-in is a normal thing to do. It has its own path through the app and its own quiet response. There is no version of this where a skipped Sunday costs you anything.
There is no copy anywhere in the product that says you broke anything, fell off anything, or need to get back on anything. That is not a tone preference we try to remember - there is no code that produces those states, so there is nothing to remember.
The honest trade
A weekly streak is a weaker hook than a daily one. It fires less often, the number goes up more slowly, and it will produce fewer 8pm sessions from people who would rather have been in bed. If the goal were time-in-app, this would be the wrong decision and I would know it.
But the thing I actually want is for somebody to still be training in two years, and the failure mode I am designing against is not laziness. It is the quiet exit after a bad week - the one where you do not decide to stop, you just do not open it again. A streak that cannot break is a streak you have no reason to run away from.
Your life is not the excuse. It is the input. A streak that punishes you for having one was never going to fit that.