field note · method
why some friction should age out, and some never should.
readout · one corpus, two decay rates
Scrape a population's complaints and you are holding a stack of timestamps you are about to ignore. The default move is to treat every line as a live data point, one complaint one vote, and let volume decide. That is the central error of complaint-scraping, and it is an error about time. Some of what a population said years ago is exactly as true today as the day it was written. Some of it expired within months and is now actively misleading. A method that cannot tell the two apart is not measuring the population. It is measuring its own archive.
two kinds of friction, two clocks
Friction comes in two forms that age at completely different rates. The first is structural: a property of the product or the relationship itself. You cannot choose your own variety. Shipping is five dollars on every order. Cancellation routes through four screens. The claim rests on a study that was never run on human skin. None of these depend on the year. A structural complaint from 2019 is worth as much as one from last week, because the thing it names has not changed. The second is price-and-value sentiment: whether the thing is worth it. That judgment is never absolute. It is made against a reference, what competitors charge, what inputs cost, what the category asked last season, what the customer paid last time, and the reference keeps moving. "Too expensive" written into one regime tells you almost nothing about the next.
averaging across regimes is a bug, not a smoothing
Pool both kinds with no decay and you commit a quiet arithmetic crime: you average a value judgment across worlds that were never in the same world. "Not worth it" from a cheap-input year and "not worth it" from a record-price year describe different equations, and their mean describes neither. The fragility number that falls out is not current and not historical. It is a blend of incommensurable regimes wearing the costume of a single measurement. The population never held that opinion. The decay model invented it.
A complaint is not a fact about a brand. It is a fact about a brand at a moment, and only some of those moments are still running.
the fix is a per-signal half-life
The correction is not a global recency window. A hard cutoff, only the last twelve months, throws the structural signal out with the stale sentiment and leaves the corpus too sparse to cluster. Rather than a flat time-series averaging, we apply a per-signal convolution kernel where different semantic dimensions have independent decay constants ($\lambda$). Structural friction gets a half-life close to infinite: pull the full history, weight old and new almost equally, because density is the goal and the physical constraint does not age. Price-and-value sentiment gets a rapid exponential half-life, short enough to track macro shifts, scaling tightly with the volatility of the surrounding market regime. The faster the regime turns, the shorter the half-life. Two clocks, one corpus: a structural map built from everything, a fragility number built from now.
what you keep by keeping the timestamps
The reward for modeling decay instead of truncating is that you keep the trajectory. Timestamped and stratified by regime, the price cluster stops being a static score and becomes a record of when a population started re-deciding, the slope of re-evaluation as the regime turned against it. A snapshot cannot make that argument. A corpus that respects the half-life can point at the month the value equation broke. That is the difference between knowing a population is unhappy and knowing when it began to leave.
Volume is the easy measurement and the wrong one. The signal is not how many complaints you found. It is which of them are still true. Decay the perishable, keep the permanent, and report the difference.