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

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
- STEP 1
Collect
Every hour, a bot reads public RSS feeds from about 40 outlets and keeps headlines that look like protest coverage.
- STEP 2
Classify
An AI model decides which headlines are real protests and extracts city, country and topic. It works from headlines only.
- 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.
- 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)