unbias.me / A news feed scored against 48 named media biases
@bitdrift · October 2026
I created unbias.me as an experiment. Partly because I find media bias fascinating, but also because I wanted to test Jev, and news articles are a great continuous supply of raw text. Since the first Cloudflare worker started processing links two weeks ago, the site has processed over 60K articles at a rate of around 5K articles a day from about 340 news outlets.
How it works
The general architecture is pretty simple. It’s written in TypeScript, runs on Cloudflare ($5/mo tier), and uses D1 (one main table). New articles arrive via RSS and go through a pipeline that uses several models to analyze each before it’s added. These include Jev classifiers for format, impact, partisanship, and topic, plus 48 media bias types named the way Wikipedia names them. There’s an LLM call (Qwen 3.7 Plus) to write a new headline, a Jev check that the new headline is still true to the article, and an embedding model (bge-small-en-v1.5) to cluster articles about the same event. The whole pipeline comes out around 10K tokens per article. At 5K articles a day the bill is about $3 a day, most of it Jev. Since the site has no accounts or other big features, I was able to keep the web application layer very lightweight with no third-party dependencies.
It was written using a combination of Claude models in my spare time over a couple of weekends.
What I learned
- Jev was cheaper and worked better than every other decision model I explored (Clef, Decisions, Laya, and Jeff), but there were limitations. Short of creating my own human-curated eval sets for each of the media bias classifiers, I’m not sure there’s much I can do to get more out of Jev. Using Opus as a judge over about 14,000 article verdicts (roughly 290 articles per tag, sampled across Jev’s confidence bands), I iterated on the Jev instructions for each of the 48 media bias tags to get them to where they are today. On average the classifiers agree with the Opus judge on about 86% of articles, at roughly 75% precision and 50% recall. 29 of the 48 are at 70% precision or better and three are still under 50%.
- While the vast majority of news outlets allow Cloudflare workers to read and process published article text, many popular outlets, such as the New York Times, do not. As much as I would love to include these outlets, I felt it was important for the integrity of the site to only include links to articles that could be fully analyzed.
- It’s relatively inexpensive to operate a service like this at this scale. The whole thing runs for about $90 a month at 5K articles a day: around $70 of Jev, $15 of headline rewriting, and the $5 Cloudflare plan, with the database, embeddings, and page serving all inside the plan’s allowances. Most of the cost is determined by the number of outlets, articles and bias tags I choose to include. A more focused version of the service with fewer outlets or bias tags might be just as good and cost a lot less.
- Removing all cookie and local storage based features is pretty liberating. I think this is a big part of what not having to monetize the service provides for readers. I have no financial incentive to persuade anyone to come back and use the site which means it’s ok that the headlines aren’t written in such a way as to agitate (i.e. “engage”) readers. This may mean fewer people use the site but I really don’t care.
- Agent access via MCP could be a pretty interesting use case for something like this. I haven’t done much beyond setting it up and making it available yet, but I’m curious to see if it’s useful for research or for powering features in other applications. That might be a good area for future exploration.
FAQ
- Who decides what counts as bias? Rather than trying to come up with something on my own, I used several Wikipedia articles to define 48 named media bias types, and published every definition and Jev instruction on the about page. I also found I needed a few additional classifiers just for organizing, filtering and sorting content to make it easier to navigate and aggregate (format, impact, topic, etc). These are far from perfect but I think it’s pretty interesting to see how much more common the biases appear in articles classified as opinion vs report. Even analysis articles tend to have more bias tags than regular news reports.
- How is this different from Ground News or AllSides? Well it’s 100% free and it has no cookies for starters. I also think seeing all of the specific bias tags is helpful for understanding how news is written to appeal to and engage readers. It’s almost like “nutrition facts” for news articles. It also has an MCP service that could be useful for agentic research.
- By writing new headlines, didn’t you just trade the outlet’s bias for Qwen’s? Maybe. But I also think the prompt used and the motivation of the author matters. Plus every new headline gets an additional Jev call to ensure it’s not straying too far from the article’s actual claims.
- Didn’t you just tune Jev to agree with Opus? Yep. If anybody is interested in reading hundreds of articles and rating them against 48 different definitions of bias, please let me know. Not exactly a weekend project.
Moving forward
I expect I’ll keep the service running for a few months at least, but beyond that I have no plans or expectations for it. In the meantime, I hope people find it useful as a learning experiment, if not as an actual news aggregator.