UNREST
Checking status

Connect a Solana wallet

No Solana wallet detected in this browser. Install Phantom or Solflare, then reload.

Connecting only reads your public address. UNREST never requests transfers or asks for a recovery phrase.

Methodology

Everything on the map is a report, not a verdict.

UNREST aggregates machine-coded news reports into events, attaches every source, and labels how well each event is supported. This page documents exactly how.

Data sources

The primary source is the GDELT Project 2.0 event stream, which publishes machine-coded events from worldwide online news every 15 minutes. We keep only records with CAMEO root code 14 (“Protest”). Each record carries a source article URL, an action location, and the number of articles and sources that mentioned it.

We never display data that did not come from a source. If ingestion stops, the site shows when data was last updated rather than filling gaps.

Pipeline

  1. Fetch — a scheduled job downloads each new GDELT export file once; processed files are recorded so nothing is ingested twice.
  2. Normalize — rows are parsed, protest codes mapped to categories, and locations resolved to country, region, and city.
  3. Deduplicate — reports are clustered by place (rounded coordinates), category, and date. The same article URL is never attached to an event twice.
  4. Enrich — we fetch each source page's public title and description. Failed fetches are recorded, not guessed.
  5. Analyze — an AI model reads only the retrieved source text and returns a structured assessment.
  6. Label — a verification status is assigned from source counts and the AI assessment.

Verification labels

Corroborated
Described by two or more independent outlets with consistent details.
Reported
Described by a single outlet. Not independently confirmed.
Conflicting reports
Sources disagree on key details such as timing, scale, or whether it took place.
Unverified
Source text could not be retrieved or analyzed. Shown from structured event data only.

“Corroborated” means independent outlets reported it. It does not mean UNREST has confirmed the facts on the ground.

Categories

  • Protest
  • Demonstration
  • Strike
  • Civil unrest
  • Political rally
  • Public movement

Categories start from GDELT's CAMEO code and may be refined by AI analysis when the source text clearly supports a different type.

Location precision

GDELT resolves locations to a city, a state or province, or only a country. Events without a city-level location are drawn with a dashed uncertainty ring and labelled “region-level” or “country-level”. We never move a marker to look more precise than the source allows.

AI analysis

The model is instructed to use only the retrieved source text, to separate reported facts from interpretation, and to answer “unknown” rather than infer. It returns whether the text describes an actual protest, the event type, whether it occurred or was only planned, a neutral summary, and any contradictions between sources.

AI output is always labelled as such and shown alongside the original sources. It can be wrong; the sources are the record.

Limitations

  • Coverage follows the media GDELT monitors. Countries with less online or English-language reporting are under-represented.
  • Machine coding produces false positives — for example, a historical anniversary article coded as a new protest.
  • Event counts measure reports, not crowd size or severity.
  • Some publishers block automated retrieval, leaving events without a readable headline.

See how this feeds the Global Activity Index.