AI-Powered Financial Content Verification for Social Media
FinVerifyAI is a real-time trust layer that verifies financial advice on social media, helping users identify misleading claims before making costly decisions. Using transparent AI reasoning and authoritative source verification, we show users exactly how conclusions are reached—not just the verdict.
Social media has become the primary source of financial advice for millions:
- $3.8 billion lost to social media scams in 2025 (FTC)
- 67% of Gen Z gets financial advice from social media
- 1 in 4 viral financial posts contain misleading claims
Common misleading patterns include:
- "Guaranteed 10x returns with zero risk"
- "I made $50K in one week—you can too"
- "The IRS doesn't want you to know this hack"
Users have no way to verify these claims before acting on them.
FinVerifyAI provides:
| Feature | Description |
|---|---|
| One-Click Verification | Analyze any financial content while browsing |
| Transparent AI Reasoning | See exactly how conclusions are reached |
| Authoritative Sources | Verification against SEC, FINRA, IRS, FTC |
| Creator Tracking | Monitor credibility scores over time |
| Pattern Detection | Identify coordinated misinformation |
| Live Monitoring | Real-time analysis of live streams |
┌─────────────────────────────────────────────────────────────────────────┐
│ FINVERIFYAI ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ CLIENTS │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ Chrome Extension │ │ Web Dashboard │ │
│ │ (Plasmo) │ │ (Next.js) │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ └───────────┬────────────┘ │
│ │ │
│ API GATEWAY ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ tRPC API │ │
│ │ Type-Safe • Validated • Authenticated │ │
│ └─────────────────────────────┬───────────────────────────┘ │
│ │ │
│ SERVICES ▼ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Analysis │ │ Marathon │ │ Cache │ │ Content │ │
│ │ Pipeline │ │ Agent │ │ Service │ │ Fetcher │ │
│ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ DATA LAYER │ │
│ │ PostgreSQL (Prisma) • Redis (Cache) • Gemini API │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
| Layer | Technology | Purpose |
|---|---|---|
| Extension | Plasmo, React, TypeScript | Browser integration |
| Web App | Next.js 15, React 19, Tailwind | Dashboard & landing |
| API | Node.js, tRPC, Zod | Type-safe endpoints |
| Database | PostgreSQL, Prisma ORM | Persistent storage |
| Cache | Redis (Upstash) | Performance optimization |
| AI | Gemini 3 Flash | Analysis engine |
Unlike one-shot AI queries, FinVerifyAI uses a Marathon Agent architecture designed for continuous, long-running analysis with memory and pattern recognition.
┌─────────────────────────────────────────────────────────────────────────┐
│ MARATHON AGENT ARCHITECTURE │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ USER INPUT │ │
│ │ URL / Content │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ ANALYSIS PIPELINE │ │
│ │ │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │ Stage 1 │──▶│ Stage 2 │──▶│ Stage 3 │──▶│ Stage 4 │ │ │
│ │ │Perception│ │Extraction│ │Reasoning│ │Grounding│ │ │
│ │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │ │
│ │ │ │ │
│ │ ┌─────────┐ ┌─────────┐◀──────────────────────┘ │ │
│ │ │ Stage 6 │◀──│ Stage 5 │ │ │
│ │ │ Verify │ │Synthesis│ │ │
│ │ └────┬────┘ └─────────┘ │ │
│ │ │ │ │
│ │ │ ┌──────────────────────────────────┐ │ │
│ │ └─▶│ RE-ANALYSIS LOOP (if needed) │──────────────┘ │
│ │ └──────────────────────────────────┘ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ MARATHON SERVICES │ │
│ │ │ │
│ │ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐ │ │
│ │ │ Creator │ │ Pattern │ │ Live │ │ │
│ │ │ Tracking │ │ Detection │ │ Monitoring │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ • Credibility │ │ • Cross-user │ │ • Real-time │ │ │
│ │ │ • History │ │ • Trends │ │ • Alerts │ │ │
│ │ │ • Watchlist │ │ • Clusters │ │ • Streaming │ │ │
│ │ └───────────────┘ └───────────────┘ └───────────────┘ │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
Each piece of content flows through six specialized stages:
┌─────────────────────────────────────────────────────┐
│ PERCEPTION │
├─────────────────────────────────────────────────────┤
│ Input: URL, Video, Audio, Image, Text │
│ Output: Unified Content Representation │
│ │
│ Features: │
│ • Multimodal content processing │
│ • Platform-specific extraction │
│ • Metadata collection │
│ │
│ Gemini Config: │
│ └─▶ Multimodal input processing │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ EXTRACTION │
├─────────────────────────────────────────────────────┤
│ Input: Structured content from Stage 1 │
│ Output: List of financial claims with types │
│ │
│ Claim Types: │
│ ┌─────────────────────┬───────────────────────┐ │
│ │ INCOME_GUARANTEE │ "Make $10K/month" │ │
│ │ RISK_CLAIM │ "Completely risk-free"│ │
│ │ PERFORMANCE_CLAIM │ "500% returns" │ │
│ │ TAX_CLAIM │ "Legal tax loophole" │ │
│ │ INVESTMENT_ADVICE │ "Buy this stock now" │ │
│ │ URGENCY_CLAIM │ "Limited time only" │ │
│ └─────────────────────┴───────────────────────┘ │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ REASONING │
├─────────────────────────────────────────────────────┤
│ Input: Extracted claims │
│ Output: Analysis with visible reasoning traces │
│ │
│ Process: │
│ ┌────────────────────────────────────────────┐ │
│ │ "Guaranteed 10x returns" │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ THINKING TRACE: │ │ │
│ │ │ • No investment can guarantee │ │ │
│ │ │ returns - this violates SEC rules │ │ │
│ │ │ • "10x" is unrealistic timeframe │ │ │
│ │ │ • Missing risk disclosure │ │ │
│ │ │ • Pattern matches pump-and-dump │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ Risk Level: CRITICAL │ │
│ └────────────────────────────────────────────┘ │
│ │
│ Gemini Config: │
│ └─▶ thinkingConfig: { includeThoughts: true, │
│ thinkingBudget: 8192 } │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ GROUNDING │
├─────────────────────────────────────────────────────┤
│ Input: Claims + Reasoning analysis │
│ Output: Verification status with sources │
│ │
│ Authoritative Sources: │
│ ┌─────────────────────────────────────────────┐ │
│ │ SEC.gov Securities regulations │ │
│ │ FINRA.org Broker/advisor rules │ │
│ │ IRS.gov Tax claim verification │ │
│ │ FTC.gov Consumer protection │ │
│ │ CFPB.gov Financial product rules │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Output Example: │
│ ┌─────────────────────────────────────────────┐ │
│ │ Claim: "Guaranteed returns" │ │
│ │ Status: VIOLATES SEC RULE 156 │ │
│ │ Source: sec.gov/rules/final/33-8294.htm │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Gemini Config: │
│ └─▶ tools: [{ googleSearch: {} }] │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ SYNTHESIS │
├─────────────────────────────────────────────────────┤
│ Input: All previous stage outputs │
│ Output: Final risk score, verdict, summary │
│ │
│ Scoring Algorithm: │
│ ┌─────────────────────────────────────────────┐ │
│ │ Base Score: 50 │ │
│ │ │ │
│ │ Penalties: │ │
│ │ • FALSE claim: -15 to -25 │ │
│ │ • MISLEADING claim: -10 to -15 │ │
│ │ • UNVERIFIABLE: -5 to -10 │ │
│ │ • Urgency tactics: -5 │ │
│ │ │ │
│ │ Bonuses: │ │
│ │ • Proper disclosures: +10 │ │
│ │ • Qualified language: +5 │ │
│ │ • TRUE claims: +2 to +5 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Verdict Mapping: │
│ ┌────────┬─────────────────────┬──────────┐ │
│ │ 80-100 │ COMPLIANT │ Green │ │
│ │ 60-79 │ MOSTLY_COMPLIANT │ Lt Green │ │
│ │ 40-59 │ PARTIALLY_MISLEADING│ Yellow │ │
│ │ 20-39 │ MISLEADING │ Orange │ │
│ │ 0-19 │ FALSE │ Red │ │
│ └────────┴─────────────────────┴──────────┘ │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ VERIFICATION │
├─────────────────────────────────────────────────────┤
│ Input: Complete analysis from all stages │
│ Output: Quality score, potential re-analysis │
│ │
│ Quality Checks: │
│ ┌─────────────────────────────────────────────┐ │
│ │ ✓ Consistency - Conclusions match evidence │ │
│ │ ✓ Completeness - All claims analyzed │ │
│ │ ✓ Accuracy - Sources properly cited │ │
│ │ ✓ Blind Spots - Identify potential gaps │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Re-Analysis Loop: │
│ ┌─────────────────────────────────────────────┐ │
│ │ if (qualityScore < threshold) { │ │
│ │ rerun(failedStages); │ │
│ │ iterationCount++; │ │
│ │ } │ │
│ │ // Max 3 iterations │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ CREATOR TRACKING │
├─────────────────────────────────────────────────────┤
│ │
│ @cryptoguru123 │
│ ════════════════════════════════════════════════ │
│ │
│ Credibility Score: 34/100 │
│ ████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ LOW │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Total Analyses: 47 │ │
│ │ Flagged Claims: 23 (49%) │ │
│ │ False Claims: 12 (26%) │ │
│ │ Trend: ↓ Declining │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Top Violation Types: │
│ • Income Guarantees ████████ 8 │
│ • Risk Minimization ██████ 6 │
│ • Unverified Claims █████ 5 │
│ │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ PATTERN DETECTION │
├─────────────────────────────────────────────────────┤
│ │
│ COORDINATED PATTERN DETECTED │
│ ════════════════════════════════════════════════ │
│ │
│ Claim: "XYZ Coin will 100x by March" │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Occurrences: 12 │ │
│ │ Unique Creators: 8 │ │
│ │ First Seen: Feb 1, 2026 │ │
│ │ Platforms: TikTok (7), YouTube (5) │ │
│ │ Status: REFUTED │ │
│ │ Confidence: HIGH │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Similar Patterns: │
│ • "ABC Token guaranteed gains" (9 creators) │
│ • "New crypto 50x opportunity" (6 creators) │
│ │
└─────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────┐
│ LIVE STREAM MONITORING │
├─────────────────────────────────────────────────────┤
│ │
│ LIVE: @tradingmentor on YouTube │
│ Duration: 00:34:21 │
│ ════════════════════════════════════════════════ │
│ │
│ Claims Detected: 7 │
│ ┌─────────────────────────────────────────────┐ │
│ │ MEDIUM RISK: 4 │ │
│ │ HIGH RISK: 2 │ │
│ │ CRITICAL: 1 │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ Latest Alert (00:32:15): │
│ ┌─────────────────────────────────────────────┐ │
│ │ "Everyone watching should buy NOW - │ │
│ │ this stock will triple by Friday" │ │
│ │ │ │
│ │ Risk: CRITICAL │ │
│ │ Type: URGENCY + PERFORMANCE_CLAIM │ │
│ └─────────────────────────────────────────────┘ │
│ │
│ [Stop Monitoring] [View All Claims] │
│ │
└─────────────────────────────────────────────────────┘
| Platform | Content Types | Status |
|---|---|---|
| YouTube | Videos, Shorts, Live Streams | ✅ Supported |
| TikTok | Videos, Live | ✅ Supported |
| Reels, Posts | ✅ Supported | |
| Twitter/X | Posts, Videos | ✅ Supported |
| Posts, Videos | 🔜 Planned | |
| Posts | 🔜 Planned |
- Node.js 20+
- pnpm 8+
- PostgreSQL (or Neon account)
- Redis (or Upstash account)
- Gemini API key
# Clone the repository
git clone https://github.com/MarouaBoud/finverify.git
cd finverify
# Install dependencies
pnpm install
# Set up environment variables
cp .env.example .env
# Edit .env with your credentials
# Run database migrations
pnpm prisma migrate dev
# Start development servers
pnpm dev# Database
DATABASE_URL="postgresql://..."
# Redis Cache
REDIS_URL="redis://..."
# Gemini API
GEMINI_API_KEY="AIza..."
# Authentication
JWT_SECRET="your-secret-key"
# Application
CORS_ORIGIN="http://localhost:3000"cd apps/extension
pnpm build
# Load in Chrome:
# 1. Open chrome://extensions
# 2. Enable Developer Mode
# 3. Load unpacked → select build/chrome-mv3-devfinverify/
├── apps/
│ ├── api/ # Backend API server
│ │ ├── src/
│ │ │ ├── config/ # Environment & Redis config
│ │ │ ├── middleware/ # Auth, rate limiting
│ │ │ ├── services/
│ │ │ │ ├── gemini/ # AI pipeline stages
│ │ │ │ ├── marathon/ # Creator tracking
│ │ │ │ └── cache.ts # Caching layer
│ │ │ └── trpc/ # API routers
│ │ └── prisma/ # Database schema
│ │
│ ├── web/ # Next.js dashboard
│ │ ├── src/
│ │ │ ├── app/ # Pages & routes
│ │ │ ├── components/ # UI components
│ │ │ └── lib/ # Utilities
│ │ └── public/ # Static assets
│ │
│ └── extension/ # Chrome extension
│ ├── components/ # React components
│ ├── lib/ # API client, storage
│ └── popup.tsx # Main popup UI
│
└── packages/
├── database/ # Prisma client
├── schemas/ # Shared Zod schemas
└── utils/ # Shared utilities
| Endpoint | Method | Description |
|---|---|---|
analysis.create |
POST | Start new content analysis |
analysis.getStatus |
GET | Check analysis progress |
analysis.getReport |
GET | Get full report with claims |
analysis.list |
GET | List user's analyses |
analysis.cancel |
POST | Cancel pending analysis |
analysis.retry |
POST | Retry failed analysis |
| Endpoint | Method | Description |
|---|---|---|
marathon.getCreator |
GET | Get creator profile |
marathon.addToWatchlist |
POST | Watch a creator |
marathon.getAlerts |
GET | Get user alerts |
marathon.getTrendingPatterns |
GET | Get claim patterns |
| Endpoint | Method | Description |
|---|---|---|
live.startSession |
POST | Start monitoring stream |
live.stopSession |
POST | Stop monitoring |
live.getSessionSummary |
GET | Get session statistics |
FinVerifyAI implements several cost and performance optimizations:
| Optimization | Impact | Implementation |
|---|---|---|
| URL-based caching | 60-70% API cost reduction | Global 24h cache for analyzed URLs |
| Request deduplication | Prevents duplicate API calls | Pending request tracking |
| Smart model selection | 30-50% cost reduction | Complexity-based thinking budget |
| Tiered usage limits | Predictable costs | Free (5/day) vs Pro (100/day) |
This project is licensed under the MIT License - see the LICENSE file for details.
FinVerifyAI
Because everyone deserves to see the AI's homework, not just its grade.