UNFAIR
Download
Glossary · Tracking & Analysis

Mood Annotation

Last updatedApr 21, 2026

Mood annotation is a lightweight free-text or tag-based note attached to a mood score (or any subjective proxy entry) that captures why the score is what it is. Where the score answers "how much," the annotation answers "about what," which is the difference between a chart a user can interpret three weeks later and one they cannot.

Why it matters

Numeric mood scores without context are half-useful. A 4/10 on Tuesday could be a pharmacological effect from a new stack, a bad argument at work, four hours of sleep, or a grief anniversary. Without an annotation, the chart shows a dip and the user will, weeks later, attribute it to whichever compound they happened to start that week. This is the textbook recall bias pattern, and it destroys the readability of long-running self-experiments.

A practical tag taxonomy

Freeform text is fine, but taggable categories produce data that can actually be queried later. Unfair's default categories, with example tags:

CategoryTypical tagsWhat a later reviewer looks for
Sleepshort-sleep, late-bedtime, fragmented-sleep, jet-lagConfounder — score drops likely unrelated to the stack
Stresswork-deadline, family-conflict, money-stress, griefConfounder; weight the day less
Traininghard-session, rest-day, two-a-day, injury-flareCheck against readiness score
Substance1-drink, 2+drinks, skipped-caffeine, late-caffeine, rec-useExpected score effect; tag for interaction review
Life eventtravel-day, sick, first-day-back, vacationBaseline reset candidate
Stack reactionmild-headache, gi-upset, jittery, warm-flush, vivid-dreamsRoutes to a side-effect note
Positive signalunusually-clear, smooth-AM, calm-under-pressureCandidate real lift; confirm on following days

Short beats long. A single sentence plus two tags covers the majority of cases and is the default pattern returning users settle into after two weeks.

A worked example

Day 9 on a new magnesium glycinate + ashwagandha stack:

  • Mood score: 4/10 (baseline 6.2/10).
  • Annotation: "stayed up for a 2am product launch, 3 hours sleep, one coffee at 11am to survive."
  • Tags: `short-sleep`, `late-caffeine`, `work-deadline`.

Without the annotation, the chart reads as a stack failure on day 9. With it, the ranked output discounts the day automatically and the 14-day rolling average is not pulled down by a confounded score. On the review screen this renders as a hollow marker with a note, not a solid one that moves rank.

Where annotation pays off most

  • Real effect hidden by bad context. A compound that is actually helping gets scored low for two weeks because of an unrelated stressful life period. Annotations make this visible and let the review cycle discount those weeks rather than concluding the compound failed.
  • Placebo lift attributed to compound. A compound that did nothing coincides with a genuinely good week (vacation, new relationship, completed project). Annotations expose the confounder, and the lift is not credited to the compound.
  • Side-effect attribution. A GI symptom that appears only on days with fasted dosing points straight at the dosing pattern rather than at the compound itself.

The feedback loop can only distinguish a stack failure from a context failure when the context is written down — otherwise it is guessing.

How this appears in Unfair

Annotation lives inline in the daily check-in. After a rating is selected, a short note field and a tag row appear; common tags are pinned based on the user's history, so three taps is often the full log. Annotations render as small markers on every trend chart, hover or tap revealing the context. This is one of Unfair's fast entry paths — the design target is that an annotation cost under 10 seconds, because anything longer does not survive a busy week.

Clinical safety note

Annotations that record severe mood states, suicidal ideation, self-harm urges, or rapidly worsening symptoms trigger Unfair's clinical safety flow. The app surfaces crisis resources, pauses stack optimization nudges, and routes the user to human support. Clinical escalation never flows through the recommendation engine, and a safety-flagged annotation is never used to tune stack rank.