An interactive platform that fights misinformation through AI-led virtual trials, teaching users critical thinking and helping them spot red flags to identify fake or misleading posts in real time.
AI-Powered Courtroom for Misinformation Detection
Submit suspicious content and watch AI agents battle it out in a dramatic trial
Demo β’ Features β’ Quick Start β’ Documentation
We're living in an era where:
- Deepfakes are indistinguishable from reality - AI-generated videos, images, and audio can fool even experts
- Viral misinformation spreads 6x faster than truth on social media
- 73% of Americans have encountered fake news that seemed completely real
- Generative AI makes creating convincing fake content easier than ever
The problem isn't just detecting liesβit's teaching people to think critically when persuasive fake content is designed to manipulate emotions.
The Unreliable Narrator transforms fact-checking into an engaging courtroom drama where AI agents debate the credibility of suspicious content. Built for HackNC State 2026, this project:
β
Analyzes multimodal content - Text, URLs, images, and videos
β
Educates through engagement - Learn manipulation tactics while watching the trial
β
Builds critical thinking - Understand why content is fake, not just that it's fake
β
Scales with AI - Instant analysis powered by multiple AI models
β
Transparent reasoning - See the evidence and arguments, not just a verdict
Traditional fact-checkers are boring. We make it entertaining and educational:
- π Engaging: Watch AI agents battle in real-time
- π§ Educational: Learn red flags and manipulation tactics
- π Transparent: See all evidence and reasoning
- β‘ Fast: Get verdicts in seconds with fast-track mode
flowchart TD
User[User / Browser]
User -->|Submits Content| Frontend[React Frontend]
Frontend -->|POST /api/trial/start| API[FastAPI Backend]
Frontend <-->|SSE Stream| API
API -->|Orchestrates| LangGraph[LangGraph Workflow]
LangGraph -->|Extract Claims| Gemini[Google Gemini API]
LangGraph -->|Web Search| Internet((Internet))
LangGraph -->|Generate Arguments| Groq[Groq API - Llama]
LangGraph -->|Text-to-Speech| ElevenLabs[ElevenLabs API]
Internet -->|Store Evidence| VectorDB[(Vector Storage)]
LangGraph -->|Route Mode| Router{Mode?}
Router -->|Courtroom| Trial[Trial Simulation]
Router -->|Fast-Track| FastTrack[Quick Analysis]
Trial -->|5 Rounds| Debate[Prosecutor β Defender]
Debate -->|Strategic Evidence| VectorDB
Trial --> Jury[Multi-Model Jury]
FastTrack --> Jury
Jury -->|Deliberate| Models[Gemini + Groq + Llama]
Models -->|Vote| Verdict[Verdict Aggregator]
Verdict -->|Generate Insights| Education[Education Panel]
Education -->|Display Results| Frontend
Verdict -->|Show Verdict| Frontend
VectorDB -.->|Auto-Delete| Cleanup[Ephemeral Cleanup]
Key Flow:
- π₯ Input β User submits content via React frontend
- π§ Processing β LangGraph orchestrates AI agents (Gemini, Groq)
- πΎ Storage β Vector database stores evidence temporarily
- ποΈ Voice β ElevenLabs generates speech for courtroom arguments
- βοΈ Analysis β Courtroom trial OR fast-track verdict
- π¨ Output β Real-time streaming UI with educational insights
| βοΈ Courtroom Simulation | β‘ Fast-Track Verdict |
|---|---|
| Full dramatic trial with prosecutor & defender | Instant AI analysis for quick checks |
| 5 rounds of strategic argumentation | Single-pass verdict generation |
| Multi-model jury deliberation | Streamlined evidence evaluation |
| Educational breakdown of tactics | Key findings summary |
- Investigator: Gathers neutral evidence from web sources
- Prosecutor: Argues content is misinformation
- Defender: Steel-mans the content's legitimacy
- Jury Panel: 3-5 AI models deliberate independently (Gemini, Groq, Llama)
- Real-time streaming courtroom interface
- Courtroom-themed UI with parchment aesthetics
- Animated arguments and evidence reveals
- Educational "red flags" breakdown
- Python 3.9+
- Node.js 16+
- API Keys: Google Gemini (required), ElevenLabs (provided by MLH)
# Clone the repository
git clone https://github.com/pranshavpatel/hackncstate_unstable_diffusers.git
cd hackncstate_unstable_diffusers
# Backend setup
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
# Add your API keys to .env
python main.py
# Frontend setup (new terminal)
cd frontend
npm install
npm startVisit http://localhost:3000 and start your first trial!
The Unreliable Narrator analyzes all types of content to combat modern misinformation:
| Input Type | Processing Pipeline | Example Use Case |
|---|---|---|
| π Text | Direct claim extraction | Social media posts, news articles |
| π URL | Web scraping β text extraction | Suspicious websites, blog posts |
| πΌοΈ Image | OCR + visual analysis | Memes, fake screenshots, manipulated photos |
| π₯ Video | Transcription + frame analysis | Deepfakes, misleading clips, viral videos |
Why multimodal matters: Modern misinformation often combines text, images, and video to maximize emotional impact and credibility.
| Service | Required | Purpose | Get Key |
|---|---|---|---|
| Google Gemini | β Yes | Primary LLM for all agents | Get Key |
| ElevenLabs | βͺ Optional | Text-to-speech for courtroom | Get Key - Provided by MLH |
| Technology | Purpose | Key Features |
|---|---|---|
| LangGraph | Multi-agent orchestration | State machine workflow, conditional routing |
| FastAPI | REST API + SSE streaming | Async endpoints, CORS support, real-time events |
| Google Gemini 2.5 | Primary LLM | Flash for speed, Pro for reasoning |
| Groq | Fast inference | Llama 3 models for jury diversity |
| ElevenLabs | Text-to-speech | Voice synthesis for courtroom arguments |
| Python 3.9+ | Runtime | Async/await, type hints, Pydantic models |
| Technology | Purpose | Key Features |
|---|---|---|
| React 18 | UI framework | Hooks, functional components, state management |
| Framer Motion | Animations | Page transitions, argument reveals, smooth UX |
| Server-Sent Events | Real-time streaming | One-way server push, auto-reconnect |
| Axios | HTTP client | API calls, file uploads, error handling |
Why LangGraph?
- β Built-in state management for multi-agent workflows
- β Conditional routing (courtroom vs fast-track)
- β Easy debugging and visualization
- β Async-first design
Why Server-Sent Events over WebSockets?
- β Simpler implementation (one-way communication)
- β Auto-reconnect built-in
- β Works with standard HTTP/HTTPS
- β Better for streaming updates from server
Why Ephemeral Storage?
- β Privacy-first: no data retention
- β Prevents cross-contamination between trials
- β Reduces storage costs
- β Forces fresh analysis each time
The Unreliable Narrator doesn't just tell you if content is fakeβit teaches you WHY and HOW to spot it yourself.
After each trial, users receive an Education Panel that reveals:
| Red Flag Category | What You Learn | Example |
|---|---|---|
| π― Emotional Manipulation | How content exploits fear, anger, or outrage | "SHOCKING: They don't want you to know..." |
| π Statistical Deception | Misleading graphs, cherry-picked data | "95% of doctors agree" (sample size: 20) |
| π Source Quality | Evaluating credibility of sources | Anonymous blog vs peer-reviewed journal |
| πΌοΈ Visual Manipulation | Spotting edited images, deepfakes | Mismatched lighting, unnatural movements |
| β° Temporal Context | Old content presented as recent | 2015 photo claimed to be from yesterday |
Traditional fact-checkers: "This is false."
The Unreliable Narrator: "This is false BECAUSE it uses emotional manipulation, cherry-picked data, and anonymous sources. Here's how to spot these tactics next time."
By watching AI agents debate and reveal evidence, users develop:
- π§ Critical thinking skills - Question before sharing
- π Source evaluation - Check credibility automatically
- π Manipulation awareness - Recognize emotional triggers
- π Media literacy - Understand how misinformation spreads
The goal: Make users harder to fool, even when we're not there.
- Pranshav Patel
- Janam Patel
- Namit Patel
- Vivek Vanera
HackNC State 2026 Participants
This project is licensed under the MIT License
We welcome contributions! This project aims to combat misinformation through:
- Education: Teaching media literacy through engagement
- Transparency: Open-source AI fact-checking
- Accessibility: Free tools for everyone
To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Google Gemini for powerful LLM capabilities
- ElevenLabs for text-to-speech API (provided by MLH)
- Major League Hacking (MLH) for ElevenLabs API credits
- LangGraph for multi-agent orchestration framework
- HackNC State 2026 for the opportunity to build this project
- The open-source community for amazing tools and libraries
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Made with βοΈ for a more informed world
Combating misinformation, one trial at a time