
SpinFilter
Scores articles, audio, and video for bias on a 1–100 Drama Index.
20263rd at CalgaryHacks
What it is
Paste a news URL, upload audio, or drop in a YouTube link. SpinFilter flags biased and inflammatory language, scores the piece on a 1–100 Drama Index, and suggests neutral rewrites.
Built in 24 hours with a team at CalgaryHacks 2026.
A real run on a CNN article: bias 65, Drama Index 70, mostly anger.
How it works
- Articles are scraped with Newspaper4k. YouTube audio is downloaded with yt-dlp and transcribed in ~50-second chunks to stay under API limits.
- Gemini detects biased language and writes neutral alternatives, shown as an inline diff.
- A RoBERTa emotion model, plus counts of power words and absolutist language, produces the Drama Index with an emotion breakdown.
- It also looks up the outlet's known bias and finds related coverage through News API. A Flask backend streams results to a React frontend.
Stack
- Flask
- Gemini
- RoBERTa
- Hugging Face
- yt-dlp
- React
Results
- 3rd place, CalgaryHacks 2026 Tier 2, out of 500+ participants.

