PrefEngine
PrefEngine answers

Zero-party data decay: when your quiz answers go stale

Quiz answers have a shelf life. The style preferences a shopper declared last spring, the skin concerns from two years ago, the budget from before the promotion: all of it decays, and recommendations built on stale answers quietly get worse. Zero-party data decay means treating quiz responses as perishable: timestamping answers, watching for drift signals, and re-asking at the right moments instead of trusting a two-year-old profile forever.

The short answer

Timestamp every quiz answer at capture and assign each attribute a decay rate: slow for stable traits, fast for preferences that shift with seasons, trends, and life changes. Monitor behavior for drift, such as purchases that contradict the stored profile, and trigger lightweight re-asks when drift passes a threshold.

The goal is a profile that stays roughly right without nagging. Most attributes need a refresh once or twice a year; the system should ask only when it has evidence the answer changed.

What decays and how fast

Not all answers age equally. Physical attributes like measurements and skin tone are stable for years. Style preferences shift with seasons and trends, often within months. Budget and price sensitivity move with life events: a new job, a move, a baby. Goals shift fastest of all: the shopper buying for a wedding in March has different intent by June.

Map your quiz questions to decay curves. Stable answers can be trusted for 18 to 24 months; preference answers deserve a refresh every 6 to 12; intent answers should be treated as session-level unless reconfirmed. This mapping is the core of the system; everything else is plumbing.

Detecting drift from behavior

You do not need to ask to know an answer is stale; behavior tells you. A shopper whose profile says minimalist but who keeps buying bold prints is drifting. A budget-tier answer contradicted by three full-price purchases is dead. Build drift detection as simple rules first: count the contradictions per attribute over a rolling window, and flag the attribute when contradictions outnumber confirmations.

The threshold matters. One contradictory purchase is noise; five is a new preference. Set the flag at the point where acting on the new signal beats trusting the old answer, and log every flag so you can tune. Drift detection that cries wolf trains the team to ignore it.

Re-asking without annoying

The re-ask should feel like attentiveness, not interrogation. Ask in context, at the moment the drift matters: when the shopper opens the quiz-linked category, when they start a new session after a long gap, or when a recommendation based on the old answer gets ignored twice. One question, inline, dismissible, pre-filled with the current answer.

Frame it as an update, not a correction: your style picks have been trending bolder lately, want to update your profile? Shoppers answer questions that acknowledge what they actually do. They ignore questions that feel like the store forgot them.

The compounding value of fresh data

Fresh zero-party data compounds. Recommendations built on current preferences convert better, which generates more behavior, which sharpens drift detection, which keeps the data fresh. Stale data compounds in the other direction: wrong recommendations get ignored, ignored recommendations starve the model, and the profile fossilizes.

Audit profile freshness quarterly: what share of active shoppers have preference answers older than a year, and how does their conversion compare to the freshly-profiled cohort. The gap is the revenue cost of decay, and it is usually large enough to justify the re-ask system several times over. Data you collected is an asset; data you maintain is a moat.