Project Info
Inspiration
We’ve all been there: halfway through a compelling video about health, finance, or global politics, wondering, "Is this actually true?" YouTube is the world's second-largest search engine, yet it remains a frontier for unchecked misinformation. Unlike platforms with Community Notes or news articles that can be easily cross-referenced, video content is often "locked." Manually pausing a video to search for a creator's claim is tedious and breaks the viewing experience. We built Voice of Reason to bridge that gap, providing a real-time "truth layer" over the videos we consume daily.
What it does
Voice of Reason is a Chrome extension that acts as an AI-powered moderator for your YouTube experience. Check This Moment: With a single click (or ⌘⇧V / Ctrl+Shift+V), the AI analyzes the last 60 seconds of the video to verify the specific claim you just heard. Check This Moment: With a single click (or ⌘⇧V / Ctrl+Shift+V), the AI analyzes the last 60 seconds of the video to verify the specific claim you just heard. Full Video Analysis: Scans the entire transcript to generate a comprehensive report of all major claims. Full Video Analysis: Scans the entire transcript to generate a comprehensive report of all major claims. Visual Verdicts: Claims are tagged as TRUE, FALSE, or MISLEADING with concise reasoning and citations. Visual Verdicts: Claims are tagged as TRUE, FALSE, or MISLEADING with concise reasoning and citations. Interactive Timestamps: Click any claim in the report to jump directly to that moment in the video. Interactive Timestamps: Click any claim in the report to jump directly to that moment in the video. Authenticity Score: Provides an overall "Trust Rating" for the video based on the ratio of verified vs. debunked claims. Authenticity Score: Provides an overall "Trust Rating" for the video based on the ratio of verified vs. debunked claims. Deep Dive Chat: Not satisfied? Use the built-in chat to ask follow-up questions about the sources or context directly within the extension. Deep Dive Chat: Not satisfied? Use the built-in chat to ask follow-up questions about the sources or context directly within the extension.
How we built it
We combined a high-performance Python backend with a reactive Chrome frontend: The Brain: We leveraged the Perplexity API to perform live web searches. Its ability to cite real-time sources makes it the gold standard for fact-checking. The Brain: We leveraged the Perplexity API to perform live web searches. Its ability to cite real-time sources makes it the gold standard for fact-checking. The Bridge: A Flask (Python) backend handles the heavy lifting, using the YouTube Transcript API to fetch and parse dialogue data based on timestamps. The Bridge: A Flask (Python) backend handles the heavy lifting, using the YouTube Transcript API to fetch and parse dialogue data based on timestamps. The Interface: A JavaScript/HTML/CSS extension UI that injects seamlessly into the YouTube player, ensuring the data is right where your eyes are. The Interface: A JavaScript/HTML/CSS extension UI that injects seamlessly into the YouTube player, ensuring the data is right where your eyes are. Structured Parsing: We designed custom prompts to force the LLM to return structured JSON data, ensuring our UI could accurately map verdicts to the video timeline. Structured Parsing: We designed custom prompts to force the LLM to return structured JSON data, ensuring our UI could accurately map verdicts to the video timeline.
Challenges we ran into
The "No Caption" Conundrum: Not all videos have manual or auto-generated captions. We built robust error handling and fallback states for when data is unavailable. The "No Caption" Conundrum: Not all videos have manual or auto-generated captions. We built robust error handling and fallback states for when data is unavailable. The Latency Race: Fact-checking requires a live web search, which can be slow. We optimized our processing by "chunking" transcripts so Perplexity could begin analyzing relevant sections without waiting for the whole video to load. The Latency Race: Fact-checking requires a live web search, which can be slow. We optimized our processing by "chunking" transcripts so Perplexity could begin analyzing relevant sections without waiting for the whole video to load. Cross-Context Messaging: Coordinating data between the background script (handling the API), the content script (talking to the YT player), and the popup (the UI) was a complex exercise in asynchronous logic. Cross-Context Messaging: Coordinating data between the background script (handling the API), the content script (talking to the YT player), and the popup (the UI) was a complex exercise in asynchronous logic.
Accomplishments we're proud of
We successfully built a tool that doesn't just "summarize"—it investigates. Seeing the extension successfully debunk a common health myth in real-time and provide a link to a peer-reviewed study felt like a "eureka" moment for the future of media literacy. It was also fulfilling to see our project com to life as first-time hackers.
What we learned
We learned that "truth" is often nuanced. We spent significant time refining our prompts to ensure the AI doesn't just label everything "False," but instead recognizes misleading contexts or partially true statements, providing a balanced perspective rather than a binary one.
What's next
Platform Expansion: Bringing the "Voice of Reason" to TikTok, Instagram Reels, and podcasts. Platform Expansion: Bringing the "Voice of Reason" to TikTok, Instagram Reels, and podcasts. Community Integration: Allowing users to "Upvote" or "Downvote" fact-checks to create a decentralized layer of trust. Community Integration: Allowing users to "Upvote" or "Downvote" fact-checks to create a decentralized layer of trust. Mobile Support: Developing a mobile browser version or a dedicated "Share to Fact-Check" app. Mobile Support: Developing a mobile browser version or a dedicated "Share to Fact-Check" app. Multi-language Support: Breaking the language barrier to fact-check non-English content in real-time. Multi-language Support: Breaking the language barrier to fact-check non-English content in real-time.
Analysis
View
Metric
- 21
- 3
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FlaskIn code
- HTMLIn code
- JavaScriptIn code
- PythonIn code
- TypeScriptIn code
6 of 6 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
80 KB
Source files
16
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
lc0001coll/ytFactChecker_TH2026
34 files · 460 KB · @ 1cae937
Structure
Interface
3 files · 9%Screens, components and styles rendered to the user.
Application logic
12 files · 35%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript58%
- Python26%
- CSS11%
- HTML2%
- Markdown2%
- TypeScript0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 5- flask
- flask-cors
- python-dotenv
- requests
- youtube-transcript-api
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.