|
|
||
|---|---|---|
| .claude | ||
| backend | ||
| frontend | ||
| .gitignore | ||
| README.md | ||
README.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
AI Fact Checker - a full-stack web application that verifies claims using Natural Language Inference (NLI) models. The system searches the web via SerpAPI, analyzes snippets against claims, and returns verdicts (True/False/Ambiguous) with evidence.
Tech Stack
Backend (Python/Flask):
- Flask REST API with CORS
- ML: HuggingFace Transformers (RoBERTa, mDeBERTa-v3)
- Translation: deep_translator (Google Translate)
- Database: SQLite with caching layer
- Search: SerpAPI for Google search results
Frontend (React/Vite):
- React 19 with Vite 7
- React Router for navigation
- Axios for HTTP requests
- CSS custom properties for theming
Architecture
factchecker/
├── backend/
│ ├── app.py # Flask API, NLI logic, model switching
│ ├── database.py # SQLite cache, verified facts, stats
│ ├── .env # SERPAPI_API_KEY (required)
│ └── venv/ # Python virtual environment
├── frontend/
│ ├── src/
│ │ ├── App.jsx # Router setup
│ │ ├── main.jsx # React entry point
│ │ ├── components/
│ │ │ └── Layout.jsx
│ │ └── pages/
│ │ ├── Home.jsx # Main fact-check UI
│ │ └── About.jsx
│ └── package.json
└── factchecker.db # SQLite database (auto-created)
Key Commands
Backend
cd backend
source venv/bin/activate # or: venv\Scripts\activate on Windows
python app.py # Start Flask on port 5000
python clear_cache.py # Clear cache
python view_db.py # View database contents
Frontend
cd frontend
npm install
npm run dev # Vite dev server
npm run build # Production build
npm run lint # ESLint
API Endpoints
POST /api/check- Verify a claim (body: claim, language, dateFrom, dateTo, selectedSource, model)GET /api/history- Get check history (query: limit)GET /api/stats- Get database statisticsPOST /api/admin/add-fact- Add manually verified fact (admin)
Models
Dva NLI modely dostupné s rôznymi компромismi:
- RoBERTa (
ynie/roberta-large-snli_mnli_fever_anli_R1_R2_R3-nli) - Rýchly, vyžaduje preklad do angličtiny - mDeBERTa (
MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7) - Najlepší pre slovenčinu, multilingválny
Database Schema
fact_checks- Cached results with claim hash, verdict, NLI votes, evidence, sourcesverified_facts- Manually verified facts (admin-added)
Important Notes
- The
.envfile contains the SerpAPI key - do not commit - Models are loaded on-demand; switching triggers reload with cache clearing
- Slovak claims are auto-translated for RoBERTa; mDeBERTa handles Slovak natively
- Domain whitelist/blacklist filters search results for quality
- Results are cached by claim hash to avoid redundant API calls