Case study

TruthLens

An AI fact-checking platform that researches a claim on the web and gives a verdict backed by sources.

Solo project: design, backend, frontend and deployment2026
TruthLens screenshot

The problem

Checking a viral claim means reading many sources and separating the parts that are true from the parts that are not. Chatbots answer confidently but cannot show their evidence.

How it works

From input to result

1

Decompose

The claim is split into smaller sub-claims that can each be checked on their own.

2

Research

Web search through Serper, Brave or DuckDuckGo, with Wikipedia as a fallback. Pages are extracted with Playwright and Trafilatura.

3

Retrieve

Evidence is embedded into a local vector store, and the most relevant passages are found by semantic search.

4

Judge

An LLM (Groq, OpenAI, Anthropic or a local model) weighs each sub-claim against its evidence.

5

Report

A verdict with the sources behind it, stored in PostgreSQL with the claim history.

Key decisions

Why it is built this way

Three services, each in the right language

A React frontend, a Node.js and Express gateway for routing, history and rate limiting, and a Python FastAPI service for AI orchestration, scraping and embeddings.

A fallback for every outside dependency

Several search providers with Wikipedia as the last resort when DuckDuckGo rate-limits, and several LLM providers, so one outage does not stop a check.

Research depth the user controls

Quick (3 searches, 5 pages), Standard (5, 10) and Deep (8, 18). Deep is tuned to finish in under two minutes to save API credits.

A vector store with no native build step

An in-memory store or Chroma, so the project installs anywhere without C++ build tools.

From a raw server address to a stable domain

It first ran on AWS EC2, but a bare IP address is not something to share. I moved the frontend to Vercel for a stable, shareable domain.

Results

  • Public and open: anyone can check a claim without signing up.
  • Live demo online and open source under the MIT licence.

Built with

React (Vite)Tailwind CSSNode.jsExpressPythonFastAPIPlaywrightChromaPostgreSQL