UNFAIR
Download
Glossary · Dosing and Logging

Consistency Score

Last updatedApr 21, 2026

Consistency score is Unfair's single number for how reliable the timing of a stack has been over a rolling 14-day window, expressed on a 0.00–1.00 scale. It is strictly about when doses land, not whether they land at all — two stacks can show 100% adherence with very different consistency scores if one is always on time and the other drifts through a four-hour spread. The score matters because the analysis engine uses it to decide how much signal to credit to any given correlation or trend, and because tightening timing is usually the fastest path to a cleaner signal without changing any compound.

Consistency versus adherence

Users frequently conflate the two. They answer different questions.

MetricWhat it answersA dose taken 3 hours late
AdherenceDid the planned dose happen at all within the allowed window?Usually counts, if still inside the dose window
ConsistencyDid the dose land close to the same target time each day?Partially counts; the timing drift lowers the score

A stack with 100% adherence and a 0.62 consistency score means every dose was taken but the time-of-day moved around. A stack with 0.95 consistency and 70% adherence means the user took fewer doses than planned but nailed the time every time they did. Both patterns tell the engine something different, which is why Unfair reports them separately.

The formula

The consistency score is a weighted combination of two components over the last 14 days:

consistency = 0.6 × on_time_rate + 0.4 × timing_precision

Where:

  • on_time_rate = (doses within ±30 minutes of target) / (scheduled doses).
  • timing_precision = 1 − (standard deviation of dose-time deviation, in hours) / 2, clipped to the range [0, 1]. A SD of 0 returns 1.0; a SD of 2 hours or more returns 0.

The 30-minute window is the default for most compounds; supplements with strict dose windows (morning stimulants, pre-bed sleep stacks) use a ±15-minute window and the same formula.

A numeric worked example

A user is on a twice-daily magnesium protocol with 08:00 and 22:00 targets. Over the last 7 days they took all 14 scheduled doses. Of those:

  • 12 of 14 landed within ±30 minutes of target → ontimerate = 12/14 = 0.857.
  • Dose-time deviations (hours, signed): +0.1, −0.3, +0.4, +0.8, −0.2, +0.1, +0.2, +1.1, −0.4, +0.3, +0.2, +0.5, −0.1, +0.4. SD ≈ 0.43 hours.
  • timing_precision = 1 − (0.43 / 2) = 0.785.

Plugged into the formula:

consistency = 0.6 × 0.857 + 0.4 × 0.785 = 0.514 + 0.314 = 0.83

A second user takes the same 12 on-time doses but is a tighter logger with an SD of 0.15 hours. That user's timing_precision is 1 − 0.075 = 0.925, and their score is 0.6 × 0.857 + 0.4 × 0.925 = 0.88. Same adherence, same on-time count, higher confidence in the trend. A "clean log" target of 6 of 7 morning doses within ±30 minutes with tight precision lands the score near 0.86, which is the band where most users find their correlation confidence stabilizes.

Bands and what they mean

ScoreLabelHow the engine reads it
0.00–0.49UnstableTrend analysis is held back; most correlations are flagged as noisy
0.50–0.74UsableTrends are read with wider confidence bands; slow-acting compounds still usable
0.75–0.89StrongFull weight on correlations; most dose-outcome pairs are evaluated normally
0.90–1.00Very strongTight bands; small shifts become visible faster

A short dip after travel or illness usually returns to band within 3–5 days of re-aligned dosing and is expected. Chronic scores below 0.50 are a signal to simplify the schedule, not to push harder on rank decisions.

How consistency feeds the loop

The feedback loop does not re-weight an ingredient above noise when the consistency score for the associated stack is below 0.50 — the engine treats the data as too noisy to move rank in either direction. Above 0.75, confidence bands tighten and smaller effects become detectable. Below 0.50, the review screen suggests tightening the schedule before changing the stack, because a timing fix is usually the faster path to better signal than adding or removing compounds.

How this appears in Unfair

Consistency score is reported on the review screen next to adherence, labeled with its band, and broken out into its on-time and precision components so users can see which one is dragging the number. Fast entry paths in Unfair are built with consistency in mind — a two-tap log at the actual dose time is the main driver of a high score, because any tracking flow that requires retroactive entries will drift and drag the score down.

Clinical safety note

A low consistency score is a dosing-reliability signal, not a clinical one. For compounds with a narrow therapeutic window or interaction risk (stimulants, thyroid support, blood-pressure-adjacent ingredients), sustained low consistency should prompt a clinician conversation before further stack adjustments — the right fix is usually a schedule change, sometimes a compound change, and only rarely an escalation.