11---
2- title : Fact Dynamics
3- description : A Flutter app for real-time fact-checking of debate, speech and images uses Perplexity's Sonar API.
2+ title : Fact Dynamics | Real-time Fact-Checking Flutter App
3+ description : Cross-platform app for real-time fact-checking of debates, speeches, and images using Perplexity's Sonar API
44sidebar_position : 2
5- keywords : [Sonar API, Flutter, Dart, fact‑ checking, hackathon, real-time, speech-to-text, image- verification]
5+ keywords : [Fact Dynamics, fact- checking, Flutter, Dart, real-time, speech-to-text, debate, image verification]
66---
77
8- # Fact Dynamics
9-
8+ # Fact Dynamics | Real-time Fact-Checking Flutter App
109<p align = " center" >
1110 <img
1211 src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/icon/icon.png"
@@ -17,163 +16,90 @@ keywords: [Sonar API, Flutter, Dart, fact‑checking, hackathon, real-time, spee
1716 />
1817</p >
1918
20- Fact Dynamics is a cross‑platform Flutter application that leverages Perplexity's Sonar API to provide real‑time fact‑checking for spoken and visual content—perfect for debates, presentations, or on‑the‑fly image verification. Built as a Perplexity Hackathon submission in the Information Tools & Deep Research & Education categories.
19+ ** Hackathon Submission** - Built for Perplexity Hackathon in Information Tools & Deep Research categories.
20+
21+ Fact Dynamics is a cross-platform Flutter app that provides real-time fact-checking for spoken content and images. Perfect for live debates, presentations, and on-the-fly information verification.
22+
2123
2224## Features
2325
24- - ** Real‑time Speech Analysis** - Transcribes live audio (via ` speech_to_text ` ) and fact‑checks each snippet instantly
25- - ** Image Fact Verification** - Extracts text from images and verifies claims on‑device
26- - ** Claim Rating System** - Classifies claims as ** TRUE** , ** FALSE** , ** MISLEADING** , or ** UNVERIFIABLE**
27- - ** Source Citations** - Surfaces authoritative URLs backing each verdict
28- - ** User Authentication** - Firebase Auth (Google & Email) with secure Firestore persistence
29- - ** Debate Mode** - Continuous speech recognition with streaming feedback
30- - ** Cross‑platform** - iOS, Android, Web (macOS testing; Windows coming soon)
26+ * Real-time speech transcription and fact-checking during live conversations
27+ * Image text extraction and claim verification with source citations
28+ * Claim rating system (TRUE, FALSE, MISLEADING, UNVERIFIABLE) with explanations
29+ * Source Citations** - Provides authoritative URLs backing each verdict
30+
31+ * Debate mode with continuous speech recognition and streaming feedback
32+ * User authentication via Firebase (Google, Email) with persistent chat history
33+ * Cross-platform support for iOS, Android, and Web
3134
3235## Prerequisites
3336
34- - Flutter SDK installed on your development machine
35- - Firebase account for authentication and data persistence
36- - Perplexity Sonar API key
37- - Device with microphone access for speech recognition
38- - Camera access for image capture (optional)
39-
40- ## Installation
41-
42- 1 . ** Clone the repository**
43- ``` bash
44- git clone https://github.com/vishnu32510/fact_pulse.git
45- cd fact_pulse
46- ```
47-
48- 2 . ** Install Flutter dependencies**
49- ``` bash
50- flutter pub get
51- ```
52-
53- 3 . ** Configure Firebase for your platform**
54- - Create a Firebase project at [ Firebase Console] ( https://console.firebase.google.com/ )
55- - Enable Authentication (Google, Email) and Firestore Database
56- - Install and configure FlutterFire CLI:
57- ``` bash
58- dart pub global activate flutterfire_cli
59- flutterfire configure
60- ```
61- - Follow the prompts to select your Firebase project and platforms (iOS/Android/Web)
62-
63- 4 . ** Set up API key**
64- - Create a ` .env ` file in the project root (use ` .env.template ` as reference)
65- - Add your Perplexity Sonar API key:
66- ```
67- PERPLEXITY_API_KEY=your_api_key_here
68- ```
69-
70- 5 . ** Configure platform permissions**
71- - For Android: Microphone and camera permissions are configured in ` android/app/src/main/AndroidManifest.xml `
72- - For iOS: Permissions are configured in ` ios/Runner/Info.plist `
73-
74- 6 . ** Run the application**
75- ``` bash
76- flutter run
77- ```
37+ * Flutter SDK 3.0.0 or newer
38+ * Dart SDK 2.17.0 or newer
39+ * Firebase CLI for authentication and database setup
40+ * Perplexity API key for Sonar integration
41+ * Device with microphone access for speech recognition
42+
43+ ## Installation (Follow Detailed guideline on the Repository)
44+
45+ ``` bash
46+ git clone https://github.com/vishnu32510/fact_pulse.git
47+ cd fact_pulse
48+ flutter pub get
49+ ```
7850
7951## Usage
8052
81- ### Demo & Screenshots
53+ ** Real-time Speech Fact-Checking:**
54+ - Streams 5-second audio chunks through Flutter's ` speech_to_text `
55+ - Sends transcribed snippets to Sonar API with structured prompts
56+ - Returns JSON with claims, ratings (TRUE/FALSE/MISLEADING/UNVERIFIABLE), explanations, and sources
8257
83- - [ Watch the demo video] ( https://youtu.be/92IoX19Djtc )
84- - [ Web Demo] ( https://fact-pulse.web.app/ )
58+ ** Image Analysis:**
59+ - Uploads images/URLs to Sonar API for text extraction
60+ - Verifies extracted claims against authoritative sources
61+ - Provides comprehensive analysis with source attribution
62+
63+ ## Screenshots
8564
8665<table >
8766 <tr >
88- <td >
89- <img
90- src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/screenshots/1.%20Login.png"
91- alt = " Login screen"
92- width = " 200"
93- />
94- </td >
9567 <td >
9668 <img
9769 src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/screenshots/2.%20Dashboard.png"
9870 alt = " Dashboard"
9971 width = " 200"
10072 />
10173 </td >
102- <td >
103- <img
104- src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/screenshots/5.%20Profile.png"
105- alt = " Profile screen"
106- width = " 200"
107- />
108- </td >
109- </tr >
110- </table >
111-
112- <table >
113- <tr >
114- <td >
115- <img
116- src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/screenshots/3.%20Facts%20Checked%20List(Speech,%20Debate,%20Image).png"
117- alt = " Facts checked list"
118- width = " 300"
119- />
120- </td >
12174 <td >
12275 <img
12376 src = " https://raw.githubusercontent.com/vishnu32510/fact_pulse/main/assets/screenshots/4.%20Fact%20Checks(Speech,%20Debate,%20Image).png"
124- alt = " Fact checks screen "
125- width = " 300 "
77+ alt = " Fact checking interface "
78+ width = " 200 "
12679 />
12780 </td >
12881 </tr >
12982</table >
13083
131- 1 . ** Authentication** : Sign in with Google or email through Firebase Auth
132- 2 . ** Speech Mode** : Tap the microphone to start real-time speech transcription and fact-checking
133- 3 . ** Image Mode** : Upload an image or provide a URL to extract and verify text claims
134- 4 . ** Debate Mode** : Enable continuous speech recognition for live debate fact-checking
135- 5 . ** View Results** : Check claim ratings, explanations, and source citations
136-
13784## Code Explanation
13885
139- ### Perplexity Sonar API Integration
140-
141- The app integrates with Perplexity's Sonar API in two main ways:
86+ * Frontend: Flutter with BLoC pattern for state management targeting iOS, Android, and Web
87+ * Backend: Firebase (Firestore, Authentication) for user data and chat history persistence
88+ * Speech Processing: speech_to_text package for real-time audio transcription
89+ * API Integration: Custom Dart client calling Perplexity Sonar API with structured prompts
90+ * Image Processing: Built-in image picker with base64 encoding for multimodal analysis
91+ * Data Architecture: Firestore collections per user with subcollections for debates, speeches, and images
14292
143- 1 . ** Debate Fact‑Checking**
144- - Stream 5‑second audio chunks → transcribe → send ` textSnippet ` to Sonar
145- - Parse JSON response for ` { claim, rating, explanation, sources } `
93+ ## Open Source SDKs
14694
147- 2 . ** Image Analysis**
148- - Upload or URL‑point to image → Sonar extracts on‑image text → verify each claim
149-
150- ``` dart
151- final client = PerplexityClient(apiKey: env.SONAR_API_KEY);
152- final response = await client.analyzeClaim(textSnippet);
153- print('Rating: ${response.rating}, Confidence: ${response.confidence}');
154- ```
95+ Built two reusable packages for the Flutter community:
96+ - ** [ perplexity_dart] ( https://pub.dev/packages/perplexity_dart ) ** - Core Dart SDK for Perplexity API
97+ - ** [ perplexity_flutter] ( https://pub.dev/packages/perplexity_flutter ) ** - Flutter widgets and BLoC integration
15598
156- The app processes audio in real-time, transcribes it using Flutter's speech-to-text package, and sends each snippet to the Sonar API for immediate fact verification with source citations.
157-
158- ### Custom SDKs Used
159-
160- This project uses custom-built Perplexity API SDKs developed specifically for this hackathon:
161- - ** perplexity_dart** - Core Dart SDK ([ pub.dev] ( https://pub.dev/packages/perplexity_dart ) , [ docs] ( perplexity-flutter ) )
162- - ** perplexity_flutter** - Flutter widgets and utilities ([ pub.dev] ( https://pub.dev/packages/perplexity_flutter ) , [ docs] ( perplexity-flutter ) )
16399
164100## Links
165101
166- - [ GitHub Repository] ( https://github.com/vishnu32510/fact_pulse )
167- - [ Live Demo] ( https://fact-pulse.web.app/ )
168- - [ Devpost Submission] ( https://devpost.com/software/fact-dynamics )
169- - [ Demo Video] ( https://youtu.be/92IoX19Djtc )
170-
171- ## Limitations
172-
173- - Speech recognition accuracy depends on audio quality and background noise
174- - Fact-checking is limited to claims that can be verified through available online sources
175- - Image text extraction quality varies based on image resolution and text clarity
176- - Real-time processing may experience latency depending on network connectivity
177- - Cross-platform compatibility is still being tested for macOS and Windows
178- - API rate limits may affect continuous usage in high-volume scenarios
179- - Android microphone access permissions need to be added for long duration listening
102+ - ** [ GitHub Repository] ( https://github.com/vishnu32510/fact_pulse ) ** - Full source code
103+ - ** [ Live Demo] ( https://fact-pulse.web.app/ ) ** - Try the web version
104+ - ** [ Demo Video] ( https://youtu.be/92IoX19Djtc ) ** - Watch it in action
105+ - ** [ Devpost Submission] ( https://devpost.com/software/fact-dynamics ) ** - Hackathon entry
0 commit comments