Exact calculation
| Input | Effect | Limit or condition |
|---|---|---|
| Starting value | 50 points | Every calculation |
| Current streak | +0.8 per day | Maximum 30 days (+24) |
| Today's check-in | +8 | Once per day |
| Journal entry | +4 | When today's check-in includes journal notes |
| Resisted urge | +3 each | Maximum three (+9) |
| Recovery tasks | Up to +10 | Scaled by the share completed |
| Win verdict | +6 | When today's check-in is a win |
| Recent consistency | Up to +10 | Share of non-slip entries in the latest seven |
| Slip today | −15 | When today's entry is a slip |
| Missed check-in | −10 | After an established pattern when yesterday is missing |
| Recently broken streak | −8 | When the streak is zero after a recent slip |
The total is rounded and clamped between 0 and 100. Identical stored inputs produce the same numerical result.
What data it reads
The calculation reads the current streak, check-in history, urge log, and selected recovery tasks from local product state. Today's score can be mirrored to the signed-in user's Firestore records. The numerical calculation itself does not send the data to an AI model.
What AI does—and does not do
AI does not choose the number. After the number is calculated, Synapse can generate a short two-sentence insight using the recovery level, direction of change, and streak. If that request fails, the product uses a deterministic fallback message.
How to interpret it
Use Recovery Score as a compact view of recorded product activity, not as a judgment of a person or a measure of clinical severity. Learn how it integrates with Smart Streak Recovery and explore general mechanics on How It Works or read our FAQ.