Inspiration

Misinformation spreads 6x faster than factual content on social media. Every day, millions of people engage with tweets they assume are true retweeting, quoting, and building opinions on claims that were never verified. We asked ourselves: what if you could see a credibility score before you hit retweet?

TrustBlade was born from the idea that trust should be measurable, transparent, and accessible — right where you consume content.

What it does

TrustBlade is a browser extension + web platform that fact-checks tweets in real-time using AI and assigns trust scores to public figures based on their track record of accuracy.

  • A Chrome extension overlays trust score rings around profile pictures and grade badges (A+ through F) directly on your Twitter/X timeline
  • One-click fact-checking on any tweet — powered by Google Gemini AI — with verdict labels: TRUE, FALSE, MISLEADING, or UNVERIFIABLE
  • A web dashboard with a feed of recent fact-checks, a leaderboard ranking public figures by credibility, and detailed profile pages with score history

Each user's trust score is computed as a weighted composite of their accuracy ratio, consistency factor, recency-weighted score, and historical trend — all normalized to a 0-100 scale and mapped to letter grades from F to A+.

How we built it

Frontend: Next.js 14 (App Router) with React 18, TypeScript, and Tailwind CSS. The web app serves the feed, leaderboard, and profile pages with a clean light theme and responsive design.

Backend: Supabase for authentication (Google OAuth), database (PostgreSQL), and real-time subscriptions. API routes in Next.js handle all data operations.

AI Pipeline: Google Gemini extracts verifiable claims from tweet text, cross-references them, and returns structured verdicts with explanations and source citations.

Browser Extension: Vanilla JavaScript content script injected on x.com. Uses MutationObserver to detect new tweets as you scroll, queries our API for known profiles, and renders SVG trust rings and grade badges directly into the DOM.

Challenges we ran into

Twitter's DOM is a moving target. There's no stable API for injecting UI into tweets — we rely on data-testid attributes that Twitter can change at any time. Positioning the fact-check button required careful absolute positioning to avoid overlapping Twitter's own icons (like Grok).

Trust score calibration. Defining "trustworthiness" mathematically is inherently subjective. We iterated on the weighting formula to ensure that a single false claim doesn't destroy a score, but a pattern of misinformation is reflected accurately. Recent claims carry more weight through exponential decay, so old claims gradually lose influence over time.

AI hallucinations in fact-checking. Gemini occasionally generates confident but incorrect verdicts. We mitigate this by requiring source citations for every claim and surfacing the AI's reasoning so users can evaluate it themselves; TrustBlade augments judgment, it doesn't replace it.

What we learned

  • Building browser extensions that modify third-party sites is fragile defensive coding and graceful degradation are essential
  • AI fact-checking works best as a triage tool, not an oracle; presenting evidence matters more than presenting verdicts
  • Supabase + Next.js is a remarkably productive stack for shipping fast
  • The hardest part of a trust system isn't the math; it's earning trust in the system itself

What's next for TrustBlade

  • Community voting on verdicts to complement AI judgments
  • Support for more platforms (Bluesky, Threads, Mastodon)
  • A public API for researchers studying misinformation

Built With

  • nextjs
  • supabase
Share this project:

Updates