Inspiration
According to a December 2024 Pew Research Poll, 77% of Americans see bias in the news. Furthermore, according to another Pew Research survey from 4 months ago, Americans show sharp divides in what news sources they use and trust, depending on political affiliation.
A large portion of Americans believe media bias is real, and there is distrust toward many sources among both parties. This shows a need: people want tools to see bias, to compare trustworthiness across sources.
What it does
Our Chrome extension (Angle) makes bias visible by analyzing sentiment (positive/neutral /negative) and political lean (left /center/ right) of a news article or video.
It provides immediate feedback to the user: you can see where a piece might lean, how strong that lean is, and how positive/negative the language is.
Additionally, our extension looks through the media bias scores and returns the reliability of the website if it has been graded by Ad Fontes Media Bias.
How we built it
We built a backend that can take a URL or text and run it through a political bias classifier and a sentiment analyzer.
The extension’s frontend (Chrome/React) sends the content, receives the results, and shows them neatly so users can see bias and sentiment instantly.
We used pretrained models from HuggingFace. The heavy analysis runs in Python (PyTorch + Hugging Face Transformers and supporting NLP libraries).
The extension UI is built with React + TypeScript and styled using Tailwind CSS. Content extraction uses Mozilla Readability and DOMPurify in a content script. The analysis is exposed via a local HTTP API (uvicorn/ Starlette), and media handling uses yt-dlp and ffmpeg when processing YouTube videos.
Challenges we ran into
Extracting readable text reliably across sites: pages have varying structures, paywalls, and dynamic content.
Making the machine-learning analysis fast enough to feel snappy from an extension popup without sending data to remote servers.
Sanitizing and rendering extracted HTML safely inside an iframe to preserve text layout while avoiding XSS.
Accomplishments that we're proud of
- Integrated a compact, polished extension UI with a local ML API. Supported both article extraction and YouTube transcript analysis. Implemented a clear visual language (bias range + sentiment gauge) to communicate results quickly.
What we learned
- Building Angle reinforced how messy web content can be and why robust text extraction + sanitization is critical. We also learned practical trade-offs between model size, latency, and accuracy when running NLP models locally.
What's next for Angle
- Future work will implement having a log of articles that can be easily accessed. We will also include more data about the file such as the summary (maybe we can find better, more robust models).
Built With
- css
- html
- ml
- natural-language-processing
- python
- react
- tailwind
- transformers
- typescript
Log in or sign up for Devpost to join the conversation.