FalsifyNot is a multimodal fact-checking system that takes text, images, web links, or YouTube videos, extracts check-worthy claims, retrieves evidence from a Wikipedia-scale knowledge base, verifies them using NLI (Natural Language Inference), and presents a rich, explainable verdict β complete with multimodal impact analysis and clickable external evidence links.
Text/Image/URL/Video Input
β
ββββΊ OCR / Web Scraping / Transcript Extraction
β
ββββΊ Claim Extraction
ββββΊ Evidence Retrieval βββΊ NLI Verification βββΊ Verdict
β
ββββΊ Wikipedia Links + YouTube Links
ββββΊ Visual Context + Multimodal Impact Analysis
| Feature | Description |
|---|---|
| Multi-Source Input | Verifies direct text, images (OCR via EasyOCR), web articles (newspaper3k), and video (youtube-transcript-api) |
| Claim Extraction | Fine-tuned BERT model identifies check-worthy sentences |
| Semantic Retrieval | FAISS + BGE embeddings search a Wikipedia-scale corpus |
| NLI Verification | DeBERTa v3 classifies each claim-evidence pair as SUPPORTS / REFUTES / NEUTRAL |
| External Evidence | Auto-generates Wikipedia links and YouTube search links for every claim |
| Multimodal Impact Analysis | Compares text-only verdicts vs. image-augmented results to show visual influence |
| Explainability | Highlights key terms, confidence breakdown, and model reasoning |
- Node.js β₯ 18
- Python 3.11
- A Python virtual environment already created in
backend/venv
To create the venv (first time only):
cd backend py -3.11 -m venv venv
npm run setupThis single command will:
- Install all Node.js packages (
npm install) - Activate the backend Python venv
- Install all Python dependencies (
pip install -r requirements.txt)
npm run devThis starts both servers concurrently:
- Frontend β http://localhost:3000
- Backend API β http://localhost:8000 | Swagger Docs
falsifynot/
βββ app/ # Next.js pages (upload, dashboard, docsβ¦)
βββ components/ # UI components (analysis-panel, upload-panelβ¦)
βββ lib/
β βββ api.ts # Typed API client (text + multimodal)
βββ backend/
β βββ app/
β β βββ api/routes/ # FastAPI endpoints (/analyze, /health)
β β βββ ml/ # ML modules
β β β βββ claim_inference.py
β β β βββ retriever.py
β β β βββ verifier.py
β β β βββ ocr_service.py # EasyOCR
β β β βββ clip_service.py # CLIP similarity
β β β βββ link_service.py # Wikipedia + YouTube links
β β βββ models/ # Pydantic schemas + responses
β β βββ services/ # Claim, retrieval, verification services
β βββ data/
β βββ wiki_faiss.index
β βββ wiki_corpus_metadata.csv
βββ package.json
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/v1/analyze |
Analyze text + optional image (multipart/form-data) |
GET |
/api/v1/health |
API health check |
GET |
/docs |
Interactive Swagger UI |
Example request with image:
curl -X POST http://localhost:8000/api/v1/analyze \
-F "text=Earth's average temperature has risen by 1.1Β°C since 1880." \
-F "image=@/path/to/screenshot.png"Copyright Β© 2025 FalsifyNot. All Rights Reserved.
This code is for viewing purposes only. No part of this repository may be reproduced, distributed, or modified without prior written permission.