Check-IA is a fact-checking platform designed for the cultural and linguistic realities of French-speaking Africa. It uses multiple AI models to verify text claims and images, providing sourced explanations accessible to the general public.
- Text Verification — Submit a claim and get a sourced verdict (True / False / Undetermined) with a detailed explanation
- Image Content Verification — Upload an image with a claim and verify whether the image supports it
- AI Image Detection — Detect whether an image is AI-generated or authentic
- User Dashboard — Track your verification history with an authenticated account
| Layer | Technology |
|---|---|
| Frontend | React 18, Material-UI 6 |
| Backend | Django 5.1, Django REST Framework |
| Auth & Database | Supabase (PostgreSQL, JWT Auth, Storage) |
| Task Queue | Celery + Redis |
| AI Models | RoBERTa, GPT-4o-mini (OpenRouter), Gemini 2.0 Flash, Perplexity Sonar Pro |
| Deployment | Railway |
User Input → RoBERTa Classification → Source Search (Perplexity)
→ LLM Analysis (GPT-4o-mini) → Structured Verdict + Explanation
For image verification, Gemini 2.0 Flash performs visual analysis directly.
- Python 3.12+
- Node.js 18+
- Redis
- A Supabase project
Copy .env.example to .env in the project root and fill in your secrets:
cp .env.example .envBackend variables:
# Django
DJANGO_SECRET_KEY=
DEBUG=False
ALLOWED_HOSTS=localhost,127.0.0.1
# Database (Supabase PostgreSQL)
DB_HOST=
DB_PORT=6543
DB_NAME=postgres
DB_USER=
DB_PASSWORD=
# Supabase
SUPABASE_URL=
SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=
# AI Services
OPENROUTER_API_KEY=
PERPLEXITY_API_KEY=
# Celery
REDIS_URL=redis://localhost:6379/0
CORS_ALLOWED_ORIGINS=http://localhost:3000Copy client/.env.example to client/.env:
cp client/.env.example client/.envFrontend variables:
REACT_APP_SUPABASE_URL=
REACT_APP_SUPABASE_ANON_KEY=
REACT_APP_API_URL=http://localhost:8000# Install dependencies
pip install -r requirements.txt
# Run migrations
python manage.py migrate
# Start the development server
python manage.py runservercd client
npm install
npm run devProduction:
npm startserves the existing production build. Usenpm run buildfirst, thennpm start.
# Start Redis (separate terminal)
redis-server
# Start Celery worker (separate terminal)
celery -A config worker --loglevel=info| Method | Endpoint | Description |
|---|---|---|
POST |
/api/submit-fact/ |
Submit text for fact-checking |
GET |
/api/user-submissions/ |
Get user's submission history |
POST |
/api/verify-image-content/ |
Verify a claim about an image |
POST |
/api/detect-ai-image/ |
Detect AI-generated images |
GET |
/api/image-verifications/ |
Get image verification history |
GET |
/api/facts/ |
List verified facts |
GET |
/api/keywords/ |
List available keywords |
All endpoints except /api/facts/ and /api/keywords/ require a valid Supabase JWT in the Authorization: Bearer <token> header.
check_ia/
├── config/ # Django project config
│ ├── settings.py
│ ├── settings_test.py # Test settings (SQLite, eager Celery)
│ ├── celery.py
│ └── urls.py
├── core/ # Main Django app
│ ├── models.py # Submission, ImageVerification, Fact
│ ├── views.py # API views
│ ├── authentication.py # Supabase JWT auth backend
│ ├── tests/ # Test suite
│ └── services/
│ ├── ai_analysis.py # Orchestrates the analysis pipeline
│ ├── llm.py # OpenRouter (GPT-4o-mini) integration
│ ├── perplexity_search.py # Source discovery
│ ├── image_verification.py # Gemini vision analysis
│ └── supabase_storage.py # File upload/signed URLs
├── client/ # React app
│ ├── src/components/ # UI components
│ ├── src/utils/ # Auth context, routing
│ └── src/lib/ # Supabase client
├── docs/ # MkDocs documentation source
├── .github/ # CI/CD workflows, PR/issue templates
├── LICENSE # Apache License 2.0
├── CODE_OF_CONDUCT.md # Contributor Covenant
├── CONTRIBUTING.md # Contribution guidelines
├── PROJECT_CHARTER.md # Project vision, mission, values
├── TEST_PLAN.md # QA process: strategy, test cases, data structures, PR workflow
├── mkdocs.yml # Documentation site config
├── railway.toml # Railway backend config
├── railway-celery.toml # Railway celery worker config
└── requirements.txt
The app is deployed on Railway with three services:
- backend — Django + Gunicorn
- celery-worker — Celery with Redis broker
- frontend — React (static build served by Caddy)
Deployments are triggered via GitHub Actions on push to main.
Full documentation is available at https://agentsia223.github.io/check_ia/.
We welcome contributions! Please read our Contributing Guide for details on the development process, branching strategy, and how to submit pull requests.
This project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
See our Project Charter for the project's vision, mission, and community values.
Distributed under the Apache License 2.0. See LICENSE for details.
Check-IA — Combating misinformation with contextual intelligence.

