Project Info
Inspiration
Our team sees a significant issue in the increasing polarization of the United States populace and common media consumption. In hopes of tackling this problem, our team decided to explore the impacts of misinformation on these growing dynamics and find a means to mitigate any potential spread of false information. Throughout our research and personal experiences, we uncovered that misinformation is often being spread through biased/false publications and mismanaged word of mouth. From here, we determined that it would be far too difficult to ensure perfect accuracy on the publishing end so we settled for the next best thing which was a consumer centric implementation. Employing an AI-centered approach to information assurance, we were able to develop a convenient product that provides an additional layer of verification to any online readings or conversations. By creating an application that is multi-faceted and easy to apply, we’ve provided a new avenue by which individuals can access material on the internet without fear of misinformation or bias.
What it does
This innovative project uses a three part solution to combat misinformation by checking for written bias, ensuring verbal accuracy, and providing a medium for productive debates. When the application is active on any website or article, any declarative statements are cross referenced with any other similar publications and any potential biases/incorrect information are listed to provide the reader more context on any content. Another use case of our project is when the user needs to verify information of a call/meeting in which case our tool will transform any speech into text to be analyzed and cross checked by various AI agents to determine how factual any declarative statements are. Finally, the application provides a medium by which individuals can engage in an AI moderated debate which can help people communicate their ideas effectively and without misleading or confusing others through false statements. In our unique combination of various future-forward technologies, users can be more confident of any information they receive regardless of the medium.
How we built it
Our project required a diverse blend of different AI agents and tools to completely cover the complete breadth of different cases that we wanted to include. Our first task was to dissect the various technologies available and ensure that we could effectively fit together each piece of the puzzle without sacrificing efficiency or complexity of the solution. In order to organize our large tech stack, we spent a lot of time diagraming the interactions between different technologies and procuring necessary API credits or subscriptions. With the background work complete, we were able to begin leveraging Creao to put together a working back end and front end shell which were used to house all of our additional APIs and AI Agents. At this point we configured a speech to text then text to AI search agent pipeline which handled our entire fact checking work flow. At this point we spent some time maximizing efficiency with speech sensitivity and statement identification. Working with a large number of different implementation, we also had to split our program into a web app and phone application piece in order to create a fully comprehensive application from both mediums.
Challenges we ran into
Our project was initially extremely ambitious and technically challenging which meant that we were plagued with various difficulties throughout the entire process. Since our project relied on the combined implementation of various different AI agents, we had to precisely navigate many different unique API’s and documentation which took a large amount of time. We originally found many of the technologies that we intended to implement were difficult to utilize in combination with other key technologies which led to many significant changes early on. Another difficulty that we had was ensuring a positive user experience while still maintaining reasonable computational complexity and effectively building out an MVP that still stayed true to our original expectations. With so many different moving parts in this project, we were working right up to the deadline and had to strategically cut some features in order to ensure that our product was reliable and consistent which led to various technical compromises. By making these decisions to cut back on certain technical aspects, we slightly decreased our project’s initial scope in exchange for time to further polishing our current application and ensure that all key features were sound. Another key component that we found difficult was our importance on underutilized and irregular applications of the various APIs and AI Agents which added further complexity to the final product. Regardless of all these hardships, we were able to persevere and achieve a satisfactory result.
Accomplishments we're proud of
We are proud that throughout the competition we stayed well organized and maintained a solid work flow in spite of unexpected circumstances. Our team came into the competition with very ambitious expectations and we were able to adapt to new technologies while working under a severe time crunch. Throughout the entire event, our team communicated effectively and was able to make use of each member’s unique skills. At the end of the day, we stayed upbeat and effectively managed our time and energy to complete a technically complex product that upheld our original intentions.
What we learned
Thanks to the incredible variety of innovative sponsors and the prominence of various emerging AI frameworks, our team gained hands-on experience with cutting-edge technologies and AI workflows. Due to strict time constraints, we needed to organize our thinking and leverage various generative AI agents while efficiently cutting unnecessary components in order to complete a fully integrated product. Additionally, we explored the various benefits of simultaneous use of different AI products to increase redundancy and accuracy through cross-examination. In the future we intend to expand upon these newfound skills that we acquired at Cal Hacks 12.0, growing into more complete engineers.
What's next
In the future we would like to begin expanding our product to synthesize multiple different sources that the user is hoping to compare and allow for summarizing capabilities. Another feature that we believe could be practical is something along the lines of measuring confidence in a certain assurance and to potentially provide context for any situations with lower confidence. There are additionally many interesting avenues with regards to providing a backlog of alternate options of articles to expand the user’s perspective or background knowledge on a topic. In terms of technical refinements, we hope to expand to as many different platforms as possible to align with that goal of easy accessibility and to hopefully decrease the latency on some of the voice features.
No Cap! — Live Fact-Checking & Opinion Detector (SwiftUI)
A SwiftUI app that listens to live speech, segments it into statements, and classifies each as either:
Declarative (objective, verifiable) → labeled TRUE or FALSE, with an explanation if false
Opinion (subjective) → labeled OPINION
It supports single-speaker and multi-party modes, shows the live transcript, and logs results in a slick, dark UI.
Stack: SwiftUI · AVFoundation · Speech · URLSession APIs: Anthropic Claude (primary), Janitor AI (optional first-try), Vapi (optional transcription assist)
✨ Features
🎙️ Live speech capture with partial results and auto-restart on errors
🧠 Unified fact-checker: tries Janitor AI once, permanently falls back to Claude on auth/parse failures
🔁 Silence-based segmentation (configurable) for natural, sentence-like chunks
👥 Multi-party mode (Speaker 1 / Speaker 2 toggling) or single-speaker mode
📋 Live analysis log with badges: TRUE / FALSE / OPINION and inline explanations
🛡️ Resilient networking with explicit error surfacing in the UI
🖼️ Screens
Mode Selector → Single vs Multi-party
Record/Stop → Big mic or stop button
Current Speech → Live transcript
Live Analysis Log → Reverse chronological cards with badges and timestamps
Analysis
View
Metric
- 6
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
- HTMLIn code
- JavaScriptIn code
- ReactIn code
- Tailwind CSSIn code
- TypeScriptIn code
- Google GeminiClaimed
6 of 7 appear in the indexed code. 1 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
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
514 KB
Source files
111
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
aditya-nandyal1/nocaprepo
140 files · 653 KB · @ e26ddf5
Structure
Interface
68 files · 49%Screens, components and styles rendered to the user.
API & routing
3 files · 2%Request entry points: routes, handlers and controllers.
Application logic
24 files · 17%Domain rules, services and shared utilities.
Data & schema
5 files · 4%Schema definitions, migrations and data access.
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
- TypeScript85%
- Markdown6%
- Shell4%
- JavaScript4%
- CSS1%
- HTML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
WebApp/creao-build-68fde00471e295f4c885fa10/package.json
npm · 84- @fortawesome/fontawesome-svg-core
- @fortawesome/free-brands-svg-icons
- @fortawesome/react-fontawesome
- @hookform/resolvers
- @protobuf-ts/runtime
- @radix-ui/react-accordion
- @radix-ui/react-alert-dialog
- @radix-ui/react-aspect-ratio
- @radix-ui/react-avatar
- @radix-ui/react-checkbox
- @radix-ui/react-collapsible
- @radix-ui/react-context-menu
- @radix-ui/react-dialog
- @radix-ui/react-dropdown-menu
- @radix-ui/react-hover-card
- @radix-ui/react-label
- @radix-ui/react-menubar
- @radix-ui/react-navigation-menu
- +66 more
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.
Feature verification
Creao-generated web app frontend/backend shellVerified
Leveraged Creao to build a working back end and front end shell housing the APIs and AI agents
Claimed on Devposthigh confidenceWebApp/creao-build-68fde00471e295f4c885fa10/package.json— Project directory name and manifest.json branding ('Creao') plus generated ORM/schema/hooks scaffolding (config/hooks, src/components/data/orm) match a Creao-generated app shell
Declarative vs opinion classification with TRUE/FALSE/OPINION badgesVerified
Classifies each statement as Declarative (TRUE/FALSE with explanation) or Opinion, shown with badges in a live log
Claimed on readmehigh confidenceTruthCheckerApp:858— StatementCard renders statusBadge (TRUE/FALSE) or opinionBadge (OPINION) based on statement.isDeclarative/isTrue
Live speech capture with real-time transcriptionVerified
Live speech capture with partial results and auto-restart on errors, transforming speech into text
Claimed on readmehigh confidenceTruthCheckerApp:528— startSpeechRecognition uses AVAudioEngine and SFSpeechRecognizer with shouldReportPartialResults, and restartRecognition() auto-restarts on errors
Multi-party mode (Speaker 1/2 toggling)Verified
Multi-party mode (Speaker 1 / Speaker 2 toggling) or single-speaker mode
Claimed on readmehigh confidenceTruthCheckerApp:523— switchSpeaker() alternates currentSpeaker between Speaker 1/Speaker 2 in multi-party mode; ContentView has single/multi mode selector
Phone application (iOS SwiftUI app)Verified
Split the program into a web app and phone application piece
Claimed on Devposthigh confidenceTruthCheckerApp:964— TruthCheckerApp.swift @main App struct with ContentView, a full SwiftUI iOS app targeting speech capture and fact-checking
Silence-based statement segmentationVerified
Silence-based segmentation (configurable) for natural, sentence-like chunks
Claimed on readmehigh confidenceTruthCheckerApp:469— checkForSilence() compares elapsed time to silenceThreshold (1.5s) and triggers processPendingStatement()
Unified fact-checker with Janitor AI to Claude fallbackVerified
Unified fact-checker: tries Janitor AI once, permanently falls back to Claude on auth/parse failures
Claimed on readmehigh confidenceTruthCheckerApp:327— UnifiedFactChecker tries JanitorAIFactChecker once (hasTestedJanitor flag) then permanently falls back to ClaudeFactChecker
Bright Data web search verificationCode-supported
brightdata listed in Built With, used to cross-reference publications
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/verification-service.ts:406— verifyWithBrightData posts a search query and treats presence of any result as weak evidence of truth, a simplified implementation per its own comment
Chroma AI semantic analysis for statement segmentationCode-supported
Chroma used for semantic understanding and improved sentence segmentation
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/semantic-service.ts:93— analyzeWithChromaAI posts to chromaAI.baseUrl/v1/semantic-analysis, with Groq and basic-parsing fallbacks; no API key configured, so path likely falls through to fallback
Fetch.ai agent verificationCode-supported
fetch.ai listed in Built With
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/verification-service.ts:207— verifyWithFetchAI calls Agentverse endpoint; API key unset by default
Fish Audio text-to-speechCode-supported
fishaudio listed in Built With
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/voice-service.ts:749— fetch call to apiConfig.fishAudio.baseUrl/v1/tts, gated behind an unset API key
Groq-based transcription/subtitle and semantic fallbackCode-supported
Groq used in the AI agent tech stack
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/semantic-service.ts:138— analyzeWithGroq calls groq.baseUrl/chat/completions as a fallback path for semantic analysis
Lava Gateway consensus routingCode-supported
lava listed in Built With, providing consensus across agents
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/verification-service.ts:467— getLavaGatewayConsensus posts to Lava endpoint and falls back to calculateLocalConsensus (simple vote threshold) if unavailable, which is the effective path given no configured key
Multi-agent AI fact verification (Claude, Fetch.ai, Gemini, Bright Data, Llama/Lava consensus)Code-supported
Cross-referencing statements with various AI agents (Claude, Fetch.ai, Gemini, Bright Data) via Lava Gateway consensus to determine factual accuracy
Claimed on Devpostmedium confidenceWebApp/creao-build-68fde00471e295f4c885fa10/src/services/verification-service.ts:61— verifyStatement() calls Claude, Fetch.ai, Gemini, Bright Data, and Llama-via-Lava in parallel and computes consensus, but all API keys are empty env vars and there is no evidence of a wired UI trigger calling verifyStatement in this clone
Vapi optional transcription assistCode-supported
Vapi (optional transcription assist)
Claimed on readmemedium confidenceTruthCheckerApp:63— VapiService.transcribeText posts to api.vapi.ai/call, but its result is only logged and discarded (not used to modify the analyzed text), and API key is a placeholder
AI-moderated debate featureClaimed only
The application provides a medium by which individuals can engage in an AI moderated debate to communicate ideas without misleading or confusing others
Claimed on Devposthigh confidenceWritten bias detection when browsing websites/articlesClaimed only
When the application is active on any website or article, declarative statements are cross-referenced and biases/incorrect information are listed
Claimed on Devpostmedium confidenceJanitor AI text-based fact-checking (web app)Blocked
janitorai listed in Built With
Claimed on Devpostlow confidence
An AI agent derived these features from the project’s Devpost page and readme, then searched the code for each one. Verified features are backed by cited code; claimed-only features had no supporting code, which is not by itself proof a feature is missing.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.