How rigen-manandhar/truthlens-fake-news-detection works
Purpose and Clients
TruthLens is a misinformation-risk assessment system, not a truth-verification engine. It combines language-model signals, source context, article extraction, claim hints, optional news coverage, and uncertainty handling. Primary clients are a Next.js web application and Chrome extension; both reach the same prediction boundary. Key entry points: Frontend/app/page.tsx, Frontend/app/fake-detection/page.tsx, extension/popup-main.js, Backend/app/main.py.
Web Application and API Boundary
The Next.js App Router application provides detection, deepfake detection, news, account, settings, and admin experiences. Browser-facing API routes act as a server-side boundary: prediction routes proxy/request backend analysis, while identity and product data remain handled in Next.js. Core paths: Frontend/app/api/predict/route.ts, Frontend/app/api/deepfake/predict/route.ts, Frontend/app/components/fakeDetection/useFakeDetectionController.ts.
Prediction Orchestration
FastAPI’s /predict flow is centralized in the prediction service. It accepts submitted text and/or URL, coordinates eligibility, extraction, source/evidence/model stages, and constructs a compatible structured response. This is the principal control-flow boundary between HTTP input and risk evaluation: Backend/app/main.py, Backend/app/services/predict_service.py, Backend/app/services/predict_response_builders.py.
Content Acquisition and Source Context
URLs are first screened for eligibility, then article text is safely extracted where possible; users may instead provide manual text. Source credibility is derived from a transparent local seed database rather than a live authority. Extraction provenance and source quality are inputs to final risk interpretation. Paths: Backend/app/url_eligibility.py, Backend/app/article_extractor.py, Backend/app/data/source_credibility.json.
Hybrid Language and Evidence Signals
Two local RoBERTa+LoRA artifacts contribute separate headline/claim and article-language signals. The hybrid layer runs and normalizes model outputs. Independently, the evidence layer identifies check-worthy claim hints and can query trusted-source coverage when NEWS_API_KEY is configured; missing API credentials explicitly leave coverage unchecked. Paths: Backend/app/hybrid_model.py, Backend/app/hybrid/model_runner.py, Backend/app/evidence.py; model assets: Backend/model/model_a/adapter_model.safetensors, Backend/model/model_b/adapter_model.safetensors.
Scoring, Explanation, and Uncertainty
Scoring fuses imperfect signals into LIKELY REAL, SUSPICIOUS, or UNCERTAIN, preserving the distinction between observed risk and factual truth. Confidence, model disagreement, conflicting evidence, extraction quality, limitations, and explanations are first-class response metadata rather than hidden implementation detail. Paths: Backend/app/scoring.py, Backend/app/explanations.py, Backend/app/schemas.py.
Deepfake Analysis
A distinct media-analysis pipeline is exposed separately from textual misinformation assessment. It handles media input, face detection, model loading/inference, and response schemas; the underlying Xception classifier code and training configuration are retained under the deepfake package. Paths: Backend/app/deepfake_detection/service.py, Backend/app/deepfake_detection/inference.py, Backend/deepfake/src/models/xception_classifier.py.
Identity, Persistence, and Operations
Next.js owns authentication, user/account lifecycle, privacy exports/deletions, sessions, feedback, and administration. It uses NextAuth-style auth components and a MongoDB client/server data layer, with email, audit, rate-limiting, and privacy services at the server boundary. Paths: Frontend/lib/auth.ts, Frontend/lib/mongodb-client.ts, Frontend/lib/server/privacy.ts, Frontend/app/api/auth/[...nextauth]/route.ts.
Main entry points: predict_service.py Prediction service · main.py FastAPI API · page.tsx Next.js experiences · useFakeDetectionController.ts Detection controller
Components 21
Web & Extension
Client experiences and Next.js server boundary.
- Next.js experiences · Detection, news, account, settings, and admin UI.
Frontend/app/page.tsx - Detection controller
Frontend/app/components/fakeDetection/useFakeDetectionController.ts - Chrome extension
extension/popup-main.js - Prediction API route · Server-side proxy boundary for text risk analysis.
Frontend/app/api/predict/route.ts - Deepfake API route
Frontend/app/api/deepfake/predict/route.ts
Text Risk Analysis
FastAPI orchestration and misinformation-risk signals.
- FastAPI API
Backend/app/main.py - Prediction service · Coordinates acquisition, signals, scoring, and response construction.
Backend/app/services/predict_service.py - URL eligibility & extraction · Screens URLs and safely extracts article text.
Backend/app/url_eligibility.py - Source credibility seed · Transparent local source-quality database.
Backend/app/data/source_credibility.json - Hybrid language signals · Runs separate headline/claim and article-language signals.
Backend/app/hybrid_model.py - RoBERTa + LoRA models · Two local adapters provide independent language signals.
Backend/model/model_a/adapter_model.safetensors - Evidence & coverage · Finds claim hints and optionally checks trusted-source coverage.
Backend/app/evidence.py - Risk scoring · Produces likely real, suspicious, or uncertain risk assessments.
Backend/app/scoring.py - Response metadata · Preserves confidence, uncertainty, limitations, and explanations.
Backend/app/services/predict_response_builders.py
Deepfake Analysis
Separate media-analysis pipeline.
- Deepfake service
Backend/app/deepfake_detection/service.py - Media inference
Backend/app/deepfake_detection/inference.py - Xception classifier
Backend/deepfake/src/models/xception_classifier.py
Identity & Data
Next.js-owned account and product services.
- Auth & sessions
Frontend/lib/auth.ts - Auth API route
Frontend/app/api/auth/[...nextauth]/route.ts - Privacy lifecycle · Handles user privacy exports and deletions.
Frontend/lib/server/privacy.ts - MongoDB data layer · Stores product and account data.
Frontend/lib/mongodb-client.ts
Connections 20
- Next.js experiences → Detection controller: uses
- Detection controller → Prediction API route: submits text or URL
- Chrome extension → FastAPI API: requests prediction
- Prediction API route → FastAPI API: proxies analysis
- Deepfake API route → Deepfake service: submits media
- FastAPI API → Prediction service: /predict
- Prediction service → URL eligibility & extraction: acquires URL content
- Prediction service → Source credibility seed: reads source context
- Prediction service → Hybrid language signals: evaluates language
- Hybrid language signals → RoBERTa + LoRA models: runs adapters
- Prediction service → Evidence & coverage: collects claim hints
- Prediction service → Risk scoring: fuses signals
- Risk scoring → Response metadata: risk and uncertainty
- Response metadata → FastAPI API: structured response
- Deepfake service → Media inference: runs analysis
- Media inference → Xception classifier: classifies media
- Next.js experiences → Auth API route: auth requests
- Auth API route → Auth & sessions: handles identity
- Auth & sessions → MongoDB data layer: persists accounts
- Privacy lifecycle → MongoDB data layer: exports or deletes data