Blog / News Perspective
April 12, 2026 · 5 min mins read
Lately I've been reading a lot of news and noticed that articles covering the same story often felt completely different depending on the source. The language was charged, the framing selective, but subtle enough that I'd have to read carefully to catch it. As a solution to this I decided to build News Perspective, a tool that could surface that automatically.
The idea
The extension highlights language in news articles that indicates bias/extreme wording, generalizations, opinion statements presented as fact. It also scores the overall sentiment and political leaning of the piece, and surfaces related articles for comparison.
The goal was to make bias visible without telling the reader what to think. The extension shows you where the signals are. What you do with that is up to you.

How it works
There are two parts: a browser extension (TypeScript) and a Python API.
The extension runs in the browser, extracts the article text, and sends it to the API. The API does the heavy analysis and returns structured results. The extension then annotates the page with highlights and renders a sidebar with the breakdown.
The API accepts a POST request with the article text and returns:
- Bias indicators: specific phrases flagged as potentially biased language
- Emotional language: words and phrases with strong emotional charge
- Sentiment scores: positive, negative, neutral breakdown
- Political leaning: left/right/center estimate with supporting evidence
- Related articles: other coverage of the same story for comparison
Under the hood the analysis uses NLP to interpret the text, which handles the nuance that pure keyword matching can't. "Illegals flood the border" and "undocumented immigrants cross the border" describe the same event with very different framing catching that distinction requires understanding context.
What I learned
The hardest part wasn't the NLP it was deciding what to show. An overall bias score felt reductive. A wall of flagged phrases felt overwhelming. The final UI tries to show just enough: a summary score, a handful of highlighted phrases in context, and the political leaning breakdown.
I also ran into the fundamental problem of defining bias. Any classifier reflects the assumptions of whoever built it. I tried to make the extension transparent about this, it shows its evidence rather than just a verdict.