Back to All Projects
Civic Tech Idea2026

Outcry: A live protest desk that shows how the media frames each movement

Track movements worldwide, compare Left / Center / Right coverage, and weigh in with quadratic voting

My Role

Concept, design & development

Status

Live prototype with a free-tier backend

Tools & Tech

React 19ViteTailwindHonoCloudflare Workers + D1Workers AIQuadratic voting
Outcry: A live protest desk that shows how the media frames each movement

The Problem

News about protests arrives filtered. Which movements you hear about, and how they are framed, depends on which outlets you read. Readers rarely see what the other side of the spectrum is saying, or which stories one side ignores. Simple like/upvote tools make it worse: the loudest or most numerous group wins.

The Idea

Outcry puts movements on a world map and a feed, and for each one shows how Left, Center and Right outlets cover it, with blindspots flagged where one side is missing. Instead of likes, people get a daily budget of Voice and spend it with quadratic voting, so expressing a strong view costs progressively more.

The key mechanic ties reading to influence: reading all three perspectives on a movement unlocks stronger votes and earns XP. The interface rewards informed opinions over reflexive ones.

How It Works

  1. STEP 1

    Collect

    Every hour, a bot reads public RSS feeds from about 40 outlets and keeps headlines that look like protest coverage.

  2. STEP 2

    Classify

    An AI model decides which headlines are real protests and extracts city, country and topic. It works from headlines only.

  3. STEP 3

    Build movements

    Places are geocoded and clustered. Stories reported by two or more outlets become movements, with a coverage split and a neutral summary.

  4. STEP 4

    Read, then vote

    People read the perspectives, then spend Voice. The server enforces the budget and the read-to-unlock rule.

Design Decisions

Headlines and links only

Nothing is scraped from article pages. Every movement links back to its sources because AI summaries can be wrong.

Honest uncertainty

Left/Center/Right labels are approximate and editable. Crowd sizes only appear when a headline states an explicit number.

Quadratic voting for a daily Voice budget

The cost of each extra vote rises, which limits one-issue flooding and makes tradeoffs visible.

Accessible and bilingual

English and German, light and dark, responsive to 320 px, with an accessibility statement and a built-in SUS test kit for usability studies.

Works offline

Without an API, the site runs on sample data with the same rules and keeps progress in the browser. Identity is anonymous and per device.

Where It Stands

  • A working end-to-end pipeline from news feeds to a map, running on a free serverless plan
  • Privacy-friendly: anonymous device identity, plus options to delete data
  • A ready usability-test kit (task script, German and English SUS questionnaire, scoring guide)