The scoring system
What every number, label, and badge on a pain card actually means — and how the aggregator decides which complaints make it into the index.
Looking for the product flow instead? See how Generate idea, Validate idea and Research work on the How it works page →
Pain score
A single number in [0.00 — 1.00] answering one question: does this pain deserve attention from someone looking for a problem worth solving? It's the default sort key — not a verdict.
The score is a weighted product of four components, not a sum: reach counts triple, willingness to pay double, recency and engagement once each. A weak component drags the whole number down, and that's deliberate — a pain nobody else voiced is one person's bad day, and a pain last mentioned three years ago is probably shipped by now.
No single component can zero a card, though. The two that used to — no money language in the quotes, no reaction from the community — bottom out at a floor instead. A missing signal in our corpus isn't proof the signal doesn't exist, and cards were getting buried for our blind spots rather than for their own weakness.
In catalog tables this same number appears under the label Demand.
Demand
The number you see in every catalog table (shown as .87). Identical to the Pain score: a 0–1 weighted product of reach, recency, engagement and willingness to pay. We say "demand" in tables because that is the question it answers: how much want is behind this pain.
Momentum (7d)
How much a pain's demand score moved over the last 7 days, in percent. Positive momentum means the complaint stream is accelerating right now — fresh posts, new upvotes. Sorting by "Trending ▲" ranks by momentum.
Reach
How many distinct people voiced this pain across all evidence. The single strongest validity signal: the same complaint from 30 different authors is a market; from one person, a bad day. We count unique authors across the cluster and normalize on a log scale — 100 vs 1000 authors are both "mass-scale," just on a plateau.
Recency
How fresh the evidence is. A pain last mentioned 4 years ago is probably solved by now — by a feature ship or a third-party app. A pain still bubbling up this week is alive. Computed as exponential decay from the latest evidence in the cluster, with a half-life on the order of months.
Engagement
How much the source community reacted — upvotes plus comment counts across all evidence, normalized by the median of that subreddit or forum (so 50 upvotes in a small community and 50 in a huge one don't count the same). This measures attention from others, not the author.
Monetization signal
The most valuable component for someone hunting opportunities. The aggregator scans evidence for willingness-to-pay cues and labels each card:
Severity
The LLM's read on how badly the pain affects users: low (annoyance, nice-to-have), medium (blocks workflows but workarounds exist), high (loses money, time, or customers; no acceptable workaround). Severity is an aggregator hint, not a component of the score.
Status: draft vs published
draft the card is freshly aggregated, may still gain evidence as more data is ingested. Visible on the dashboard. published the card has been editorially reviewed and considered stable. Most cards live in draft; that's normal, not a bug.
Competitors: open vs contested
Whether a direct competitor already ships a fix for this pain. Catalog tables show one of three badges:
Paid demand
The one signal here where money already changed hands. Everything else on a card is people talking; this is people buying. We take what the pain is about, look for a matching cluster of freelance services on Fiverr, and report what buyers there have already paid for.
Read it for exactly what it proves: someone pays to get this job done. It does not prove the same people would buy a product instead — a merchant who hires a freelancer every month may still never install an app.
Three things to keep in mind about the numbers. Order counts are a floor, not a total: we can only count orders that left a review, so the real figure is higher. Prices are US dollars and show up only where we could convert them — a cluster without a price isn't free work, it's work we can't price yet. And the match is semantic, so read the cluster name before you trust it: it should describe the same job the pain describes.
Evidence
The actual public quotes the card is built from — each one a real user's words from a Reddit thread or a marketplace forum (Discourse, Khoros). Each evidence row links back to the source. The card is only as strong as its evidence: glance at a few quotes before taking the score at face value.
Cluster
Number of raw signals merged into a single card. The aggregator embeds every public complaint and groups semantically-similar ones — so "App keeps logging me out" and "Forced to re-auth every hour" collapse into one card with a cluster count of 2. Bigger clusters = stronger signal.
The Chrome witness stand
The Chrome opportunities section scores product opportunities extracted from Chrome extension reviews — it uses its own vocabulary, explained here.
Opportunity score
A single number that answers "how strong is the case for building this?" — how much pain exists for a function, combined with how badly it's covered by extensions today. The card list shows display_score, a 0–100 rescale of the raw opportunity_score so cards can be compared at a glance; the raw value is what actually drives sorting. See the formula below.
Pain density
How intensely users complain about this specific function inside the cluster of extensions that share it. A high-density function is one reviewers keep bringing up, unprompted, across many 1★ reviews — not a one-off gripe buried in an otherwise happy review.
Best coverage
The largest share of this pain that any single extension in the cluster already solves. 100% means at least one extension in the group handles this function well enough that users stopped complaining about it there. Low coverage means nobody in the cluster has cracked it yet — that's the opening.
Opportunity mode
Three shapes the opportunity can take, based on how the pain shows up across the cluster:
The pain shows up across many extensions in a niche, and none of them solve it. Example: a dozen PDF-editing extensions all get complaints about losing form data on export, and not one of them fixes it — that's wide-open room for a new entrant.
Existing extensions try to solve this function, but do it poorly — the complaints keep coming anyway. Example: several ad blockers ship a "whitelist site" feature, but users keep complaining it resets after every update — the function exists, it's just built badly.
A narrower, more specific pain with no serious attempt to solve it anywhere in the cluster. Example: users of a note-taking extension keep asking for offline sync, and no competitor in that niche offers it at all.
Risk score
An external signal (0–1, higher = more risk signals) reported by chrome-stats.com for each extension — a combination of how invasive its requested permissions are and reputational signals about the publisher (account age, store standing). It's a proxy for "worth a closer look before treating this extension as a serious competitor," not a verdict that an extension is malicious.
The formula
opportunity = pain_density × (1 − best_coverage)
Intense, unaddressed pain scores highest: complaints have to be both loud (high density) and unresolved by any competitor (low coverage). If either side is missing — nobody's complaining, or someone already nailed it — the score collapses toward zero.