Inspiration
Every day we make financial, personal, and even health decisions based on content: videos, voice messages, "advice" from someone who often wants to sell us something. We realized there are two questions we almost never stop to ask: Is it actually true? And how is it being sold to us? — the false urgency, the emotional pressure, the manipulation techniques most of us never learned to recognize.
Fact-checking exists, but it's slow, manual, and reserved for headline news — not for the everyday content that actually shapes people's decisions. We wanted anyone to be able to check what a video claims before acting on it. So we built Contrast AI.
What it does
Paste a YouTube link — or record a voice note in the browser. Contrast AI transcribes the content, extracts the verifiable claims, gathers public evidence with OpenAI's Web Search, and cross-checks every important claim against multiple independent sources.
Within minutes you get a complete, traceable evidence report:
- An alert score (0–100) with an explicit uncertainty range and evidence coverage.
- A claim breakdown: supported, contradicted, missing context, and unverified.
- Persuasion analysis: the engine detects 13 manipulation techniques — false scarcity, identity pressure, testimonials disguised as evidence — each flagged with the exact quote and timestamp.
- Side-by-side contrasts: what the content says vs. what the evidence shows, with clickable timestamps and links to every source.
Two principles govern every result: we evaluate the content, never the person; and when the evidence isn't sufficient, the verdict is honestly "inconclusive" — never an invented judgment. The full experience is bilingual (English/Spanish).
How we built it
Contrast AI runs a multi-agent pipeline powered by GPT-5.6 (OpenAI Agents SDK): an orchestrator identifies verifiable claims, a discourse analyst maps persuasion tactics, research agents gather supporting, opposing, and primary-source evidence in parallel, and GPT-5.6 Sol adjudicates each claim based strictly on the evidence retrieved — it cannot search on its own. Voice notes are chunked with ffmpeg and transcribed with OpenAI's audio API before entering the same pipeline.
The web app (Next.js + Mantine) never runs AI inside a request: it validates input, stores audio in private storage, and enqueues the job. A Supabase-backed worker processes the queue with atomic leases, heartbeats, retries with backoff, and health checks, deployed as two Railway services. Shared Zod contracts are the executable source of truth between web, worker, and engine. The alert score is computed by deterministic TypeScript — the LLM cannot invent percentages or URLs.
We built the entire system in collaboration with Codex: the multi-agent architecture, the shared contracts, the SQL migrations and atomic queue functions, the bilingual UI, and the test suite. Codex accelerated the mechanical work; we kept the key product decisions — what the score means, what the system refuses to conclude, and how uncertainty is communicated — deliberately human.
Challenges we ran into
- Keeping the LLM honest. Our answer: evidence is earned, not counted. A source only counts if a research agent actually retrieved and analyzed it, and ten sites republishing the same story count as one source — not ten. Scores and links are built in code, so hallucinated citations are structurally impossible.
- The messy reality of transcripts. Unofficial YouTube caption data arrives with inconsistent units (ms vs. seconds), HTML entities, and duplicated lines. And very long videos broke the flow entirely — we ended up truncating at segment boundaries and reporting the analyzed fraction as explicit coverage instead of rejecting the analysis.
- Paying for AI only once. Retries are inevitable in a queue — so the worker persists the transcript before running the engine, and a retried job never re-consumes the transcription API.
- Attribution risk. If the creator's identity is ambiguous, we deliberately discard public context rather than risk attributing claims to the wrong person.
Accomplishments that we're proud of
- A complete evidence pipeline — two input modalities, research, adjudication, scoring, and a public report — working end to end within Build Week.
- Zero hallucinated citations by design, not by prompt engineering.
- A scoring system honest enough to say "we couldn't verify this" instead of manufacturing certainty.
- Privacy by default: voice recordings live in a private bucket and are deleted right after transcription.
- A fully bilingual product, from the UI to the generated diagnosis.
What we learned
- LLMs do their best work inside guardrails: strict contracts on every boundary and deterministic code for everything that must be reproducible.
- Honesty is a feature. An "inconclusive" verdict with visible sources earns more trust than a confident answer that can't be traced.
- Collaborating with Codex changes what a three-person team can ship in a week — but the product's judgment (what it refuses to say, how it treats people) still has to come from humans.
What's next for Contrast AI
- Text and articles as input — the contracts already support them; the engine works on transcripts no matter where they come from.
- Podcasts, interviews, and longer formats on the same architecture.
- A public gallery of example analyses and shareable reports.
- Deeper creator-context analysis across multiple videos to detect patterns over time.
- More output languages beyond Spanish and English.
Built With
- next.js
- supabase
- typescript


Log in or sign up for Devpost to join the conversation.