Inspiration

I’ve had this idea for a long time, but never sat down to build it. Whenever I read the news, I could feel the bias immediately, yet there wasn’t an easy way to compare different outlets side-by-side. I wanted something that would give people a complete, well-rounded picture instead of whatever angle one source decides to push. A hackathon felt like the perfect high-pressure moment to finally force myself to build it—no distractions, no procrastination, just execution.

What it does

Skeptique is a news-bias checker that helps people take back their autonomy when consuming information. After a user chooses a topic, it pulls the most relevant articles from multiple outlets and presents them together so the differences in tone and framing become obvious. The app uses AI to label the bias of each article, highlight what each outlet leaves out, generate a clean and neutral combined summary, and even answer questions using only the sources it provides. The goal is to let people make informed judgments instead of relying on a single narrative.

How we built it

I created a full-stack application using React and Vite on the frontend and Node.js with Express on the backend. The backend integrates NewsAPI to collect articles related to a chosen topic, and I used OpenRouter’s Gemini model to perform all the AI tasks such as tone analysis, blind-spot detection, summary generation, and question answering. I built an in-memory caching system to temporarily store results so the app doesn’t repeatedly hit the APIs or waste tokens. On the frontend, I designed two fully animated modes—light and dark—each with its own personality, and used Framer Motion to bring the interface to life.

Challenges we ran into

One of the biggest challenges was getting the light and dark mode themes to behave consistently, because every small styling change would break the visual flow or mess up transitions. Another challenge was the slowdown caused by making fresh API calls every time the user requested something. On top of that, I had to fine-tune the prompts carefully because AI models love returning extra text, explanations, or malformed JSON, which broke the parser and caused even more issues.

Accomplishments that we're proud of

I’m proud of implementing caching in a way that truly sped up the app and saved unnecessary API calls and tokens. I’m also proud of making both modes visually cohesive and animated, especially under hackathon time pressure. Getting consistent and structured JSON from the AI—without it hallucinating random stuff—felt like an achievement on its own. And honestly, just building the entire system end-to-end during the hackathon is something I’m really proud of.

What we learned

I learned that caching, when used properly, can transform the performance of an application far more than expected. I also learned how picky AI models are when it comes to returning clean JSON, and how important it is to be extremely explicit in the prompts. Working on this project also reminded me how much time UI polish takes compared to backend logic, and how well I perform when I’m under pressure and fully focused.

What's next for Skeptique

The next step is expanding Skeptique beyond news and into research. A lot of researchers and peer reviewers have to work through academic papers, check for bias, and distinguish between interpretation and fact. Skeptique could evolve into a research mode that compares scientific papers, highlights methodological bias, summarizes findings, and helps reviewers quickly understand the strengths and weaknesses of each study.

Built With

Share this project:

Updates