Skip to content
SpinFilter analysing a CNN article: bias score 65 and a Drama Index of 70 with an emotion breakdown

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.
SpinFilter home page with URL, audio, and video inputs
Paste a link, upload audio, or drop in a video.
SpinFilter audio upload tab
Audio is transcribed in ~50-second chunks before analysis.