Methodology
Last updated 2026-05-15
This page documents what resolvd* does, what it logs, and how it decides when to show a panel. If anything here is wrong, vague, or misleading, please tell us. The goal is for this page to be accurate enough that journalists and editors can cite it back to us.
What we detect
resolvd* looks for two kinds of citations in an article:
-
Direct links. Any anchor whose href matches
polymarket.com/event/<slug>. These resolve to a specific market with no ambiguity. - Named text references. A sentence that names Polymarket (or a generic phrase like “prediction market” or “betting market”) within roughly 80 characters of a percentage figure, in the same sentence.
Three rules keep this conservative:
-
The venue keyword and the percentage must appear in the same sentence.
We treat
.,!, and?as sentence boundaries (a period followed by a digit, like “78.5”, doesn’t count). - Percentages outside 1–99 are ignored.
- Platform-metric phrasing (“volume fell 9% to US$10.3 billion”) is filtered out — that is the article describing Polymarket itself, not citing one of its markets.
How we resolve inferred citations
A direct link names the market. For text citations we have to guess. We pull content words out of the ~500 characters around the citation, drop stopwords and trigger words, and send the remaining terms (plus any four-digit year in the sentence) to Polymarket’s public search. We re-rank by keyword overlap with the article context.
Confidence
A match is only returned if it clears two bars:
- The top result must share at least two meaningful keywords with the article context. One overlap is too easy to satisfy by chance.
- The top result must either share at least three keywords, beat the second-best on overlap, or be the only result at all.
If both conditions hold, we label the match high
confidence and show a normal pill. If only the first holds,
the match is low confidence: the pill renders pale
with a ? indicator. If neither holds, no pill is shown.
Showing nothing is always preferable to showing a wrong match.
What we log
Each detection inserts one row into a Postgres table. The fields are:
market_slug— the resolved market slug, or null if unresolved.article_url— the full URL of the page.article_domain— derived from the URL server-side.cited_prob— the percentage in the article (0–1), if any.cited_phrase— the matched sentence, if a text citation.detected_at— timestamp.
What we don’t log
- No user identifiers. The extension never assigns or persists a user ID.
- No article body. Only the matched sentence (≤500 chars), never the full text.
- No reading behavior. No scroll, time-on-page, or panel-open events.
- No third-party analytics. The API is the only network destination.
How to opt out
Click the resolvd* toolbar icon and toggle the switch off, or add specific domains to the blocked-domains list in the popup. Removing the extension stops all detection and logging immediately.
The accountability page
Once the citations table accumulates enough data, v0.2 will publish a public page showing, per outlet:
- How often each outlet cites a prediction market.
- Where the cited probability sat in the market’s history at the time of citation (near a 30-day high, low, or middle).
- For resolved markets the outlet previously cited, the eventual outcome and the price trajectory.
The page will not:
- Grade journalists on whether a market resolved “in their favor.” A 70% market resolving NO isn’t evidence the citation was wrong.
- Score individual articles or authors.
- Compare across venues in v0.2 — that is a much harder problem.