UNFAIR
Download
Glossary · Tracking & Analysis

Tag-Based Logging

Last updatedApr 21, 2026

Tag-based logging is Unfair's structured way of capturing the qualitative context around a dose or a check-in — symptoms, meal state, travel, training load, sleep disruption, mood events — using a small fixed vocabulary of two-tap labels rather than free-form prose. Two tags per day, captured in under five seconds, produce a log that is actually searchable and that the ranking model can group. A weekly paragraph in a notes field produces a log that reads well once and is unusable at cycle review.

Why free text is the wrong tool

Free-form journals fail in two ways that compound. They are inconsistent — "headache," "head hurt," "dull pain behind eyes," and "pressure" all end up describing the same thing across four weeks, and none of them cluster. And they are slow — a paragraph takes 90 seconds of attention that most users will not give, so entries drop out the moment life gets busy. A tag library fixes both failures: the vocabulary is fixed, so day 4's "headache" and day 40's "headache" are the same atom, and the entry is a tap, so the user actually makes it. Free text still belongs inside Unfair for exceptional events, but it is a supplement to tags, not a substitute.

The default tag taxonomy

Unfair ships a 24-tag default library organized into four categories. Each tag serves a different role in the model and a different question at cycle review.

CategoryRole in reviewExample tagsWhat it answers
Mood and affectAnnotates subjective proxy scores with same-day affect contextflow, flat, irritable, anxious, low, elevatedIs this focus score reflecting the stack or the day?
Context and confoundersFlags days where something outside the stack dominated the outcomepoor sleep, travel, illness, deadline, social event, late caffeineDoes this dip belong to the compound or to the confounder?
Side effectsClusters adverse-effect signals so the ranking model can down-weight the sourceheadache, GI upset, jitteriness, insomnia, flush, rash, brain fog, palpitationsIs this a recurring side-effect pattern worth flagging?
Meal and training contextExplains timing-sensitive swings in focus, energy, or recoveryfasted, high fat, high carb, late meal, rest day, zone 2, heavy lift, first session backIs this a dose-effect or a meal-and-training-effect?

Users can add custom tags, but the library has a soft cap. A vocabulary of 60 becomes unscannable and fragments the categorical signal; 20–30 well-chosen tags is the right range. Unfair warns at 40 and prompts a cleanup at 60.

Rules for tags versus free text

Tags and free text answer different questions and should not be used interchangeably.

  • Use a tag when the concept is likely to repeat (any mood, any side effect, any meal or training state). Repetition is what makes the tag valuable.
  • Use free text for one-time context that will not repeat (a specific travel week, an unusual medication change, a particular product lot concern). These are notes, not data.
  • Promote recurring free text to a tag after the same concept has been written three times. Unfair suggests the promotion automatically once a free-text phrase clusters.
  • Never log a severity score inside a tag. The Likert rating captures how much; the tag captures about what. Mixing the two breaks both.

How tags improve signal

Tags let the feedback loop separate compound effects from confounders. A drop in energy on a "poor sleep" or "illness" day is context and does not penalize the stack. Two weeks of "jitteriness" tags clustered inside the dose window of a new pre-workout is a side-effect pattern worth isolating, and the ranking model responds by down-weighting that compound's confidence until the cluster resolves or the dose is changed. Context tags also protect adherence signal — a "travel" day with a missed dose is coded differently from a routine miss, which keeps the correlation metadata honest and feeds cleaner inputs to the recommendation ranking.

Tag hygiene over time

A tag library that started tidy at onboarding will drift after two months of real use. Unfair runs a lightweight cleanup prompt every 60 days that does four things — merges near-duplicate tags ("headache" and "head pain"), archives tags with zero uses in the last 45 days, flags tags with more than 150 uses for subcategory review, and asks the user to retire custom tags they have added but stopped using. The goal is a library that stays readable, not a library that grows forever.

A numeric example

A user on a pre-workout trial rates focus 4/10 on three days in week 2. Without tags, those three scores drag the trend toward "ineffective." With tags, the picture is different — day 9 is tagged "poor sleep, deadline," day 11 is tagged "new pre-workout, jittery, GI upset," and day 13 is tagged "fasted, heavy lift." The model treats day 9 as confounded, day 11 as a side-effect cluster against the new compound, and day 13 as a meal-state artefact. The single rating becomes three different pieces of information. In practice, that is the difference between abandoning a compound and identifying a dose-timing fix.

Rules for when a tag triggers a ranking change

Not every tag moves the model. A single "headache" tag on a busy day does nothing; a repeated pattern is what the feedback loop treats as signal. The thresholds are intentionally conservative to avoid penalizing a compound for one bad day:

  • Three or more occurrences of the same side-effect tag inside a 14-day window, with at least two of them inside the active dose window of a specific compound, down-weights that compound's ranking confidence.
  • Two or more severe-symptom tags (regardless of window) suspend the compound from the ranked feed and surface a clinician resource.
  • Context tags never penalize a compound — they only prevent the day's outcome scores from being counted against it.

How this appears in Unfair

Tags are available inside the daily check-in, attached to any dose event from one-tap dose logging via the long-press action, and available as standalone ad-hoc entries from the Today tab. The review screen filters and groups by tag so patterns across a stack cycle are legible at a glance, and clustered side-effect tags feed directly into the compound-level confidence scoring that shapes the recommendation ranking.

Clinical safety note

A small set of severe-symptom tags (chest pain, syncope, rash spreading, severe abdominal pain, suicidal ideation) is not routine data. When any of these tags fire, Unfair pauses optimization nudges and surfaces clinician and crisis resources immediately. These are flags for human care, not inputs to a ranking cycle.