The daily check-in is Unfair's fixed once-per-day prompt that captures four to six subjective proxies — energy, focus, mood, sleep feel, and optional tags — on the same scale, at the same time, every day. It is the primary source of outcome data for any stack whose goal is not already measured by a wearable or a lab draw. Completion cadence is not a vanity metric; a check-in filled four days a week produces trend data that is roughly four times noisier than one filled six days a week, which is the difference between a legible review cycle and a coin flip.
Why it matters
A log reconstructed from memory is mostly confabulation. Reviews that depend on "how did last week feel" are exactly where recall bias does the most damage — bad days get smoothed, good days get anchored to the most recent positive event, and every supplement ends up feeling mildly successful. A check-in captured within the same day, on a fixed scale, turns felt experience into something a moving average window can actually operate on.
What a good check-in asks
Unfair ships a default prompt set tuned so the whole check-in takes 30–45 seconds. Anything longer erodes completion rate, and completion rate is what determines whether the data is usable at the end of a cycle.
| Prompt | Scale | Time of day | Purpose |
|---|---|---|---|
| Energy on waking | 1–10 Likert | Within 15 min of wake | Sleep carryover, morning stack effect |
| Focus during first deep-work block | 1–10 | End of block (late morning) | Nootropic and caffeine signal |
| Mood | 1–10 | Same time daily (pre-dinner default) | Adaptogen, SSRI-adjacent, light-exposure signal |
| Sleep feel | 1–5 | On wake | Subjective restfulness independent of device |
| Anxiety or calm | 1–10 | Pre-bed | Ashwagandha, magnesium, theanine signal |
| Side-effect tags | Tag set | Any time | Flags for tag-based logging |
| Context tag | Single tag | Once | Travel / illness / heavy training / poor sleep night |
The set is deliberately short. Three well-defined prompts logged daily beat eight prompts logged three days a week. Every added prompt pays for itself only if the user will actually answer it.
Timing and cadence rules
Consistency beats cleverness. Two windows produce the cleanest data:
- Morning check-in captures sleep feel, overnight recovery, and the waking baseline before coffee, food, or a difficult calendar reshape the reading. It is the default.
- End-of-day check-in captures the day as a whole and is closer in time to late-day dose effects. Pick it when most of the stack lands in the afternoon or evening.
Mixing windows dilutes comparisons. A morning energy score on Monday and an end-of-day energy score on Tuesday are not the same measurement and should not share a trend line. Unfair locks the window once the user picks it and offers a separate "late" slot for shift-worker schedules.
Cadence and signal quality
Signal quality is roughly linear in completion rate until rates fall below about 60%, where the trend curve becomes unreliable regardless of sample size. A user logging 6 of 7 days for eight weeks has 48 observations against a 14-day baseline — plenty of power for a medium effect. A user logging 3 of 7 days for the same window has 24 observations unevenly distributed across days of the week, which quietly biases any weekend-sensitive outcome. The feedback loop inside Unfair lowers confidence weights when cadence drops below that threshold rather than pretending the gap is not there.
Streaks and honest gaps
Unfair shows a streak because streaks lift adherence for most users. The trade-off is rushed entries near the end of a streak, which are worse data than honest misses. An entry that took three seconds to stab at the middle of every scale is noise that looks like signal. The app allows a "missed honestly" mark that preserves the streak once per week, which keeps the incentive without corrupting the log — handling for the rest is in data gap handling.
A numeric example
A user runs a rhodiola trial for six weeks with morning energy as the primary proxy. Baseline (14 days, 13 entries) mean is 6.1/10, SD 1.0. Intervention weeks 3–6 (26 entries out of 28) mean is 6.9/10, SD 0.9. The 0.8-point lift is roughly a 0.8 SD shift — small but defensible because cadence stayed above 90% and the baseline was stable. The same lift computed from 14 intervention entries out of 28 would sit inside noise and not clear the ranking threshold.
Common failure modes
A check-in can be filled every day and still produce unreliable data. The patterns to watch for:
- Scale drift. A 7/10 in week 1 and a 7/10 in week 6 are the same number with different meanings if the anchor shifted. Unfair re-shows the written anchor during onboarding and after any 14-day pause.
- Tag absence. A check-in without a context or side-effect tag on a clearly unusual day reads as a normal day to the model. Prompting for a tag on extreme scores catches this.
- Window slippage. A morning check-in filled at 2 p.m. is no longer a morning reading. Unfair marks late entries with a time delta rather than silently storing them as on-time.
- Motivated rating. A user who expects a new compound to work rates higher in week 1 than the actual state warrants. This is why the first week is weighted lower in the ranking.
How this appears in Unfair
The check-in is delivered as a system notification at the user's chosen window and deep-links into a full-screen prompt that adapts to the active goals. Answers flow into subjective proxy charts, into tag clusters, and into the ranked output that recomputes recommendations after every cycle. Dose entries land through one-tap dose logging rather than the check-in, so the prompt stays fast. Missing entries are shown as gaps, never interpolated.
Clinical safety note
The check-in surfaces low-mood, severe-symptom, and crisis flags. When any of these fire, optimization nudges pause and crisis resources appear above the normal review. The check-in is a logging tool, not a diagnostic one; any persistent worsening — mood, sleep, anxiety, physical symptoms — should route to a clinician rather than into another cycle review.