AdMention AI
Find every advertiser mention in a YouTube video — with the timestamp.
A full-stack platform that takes a YouTube video and an advertiser name and returns timestamped mentions, transcript context and a link that opens at that exact moment.
Problem
Long-form YouTube — especially live sports and talk shows — buries sponsor reads in hours of audio. Finding every mention by hand means scrubbing the timeline or reading a raw transcript with no jump-to-time.
Context
An MVP built around one video and one advertiser, with a schema that can later support multiple shows, advertisers, channel ingestion, reporting and clipping. The React dashboard talks to a FastAPI backend; production runs the API on Render and the UI at adverify.codewithbharat.dev.
Architecture
A YouTube URL is analyzed for metadata, a timestamped transcript is built through a fallback chain, then advertiser aliases are matched and each hit is returned with context and a deep link.
- YouTube
- Video URL
- oEmbed metadata
- Optional Data API
- Transcript
- YouTube captions
- yt-dlp timed text
- Optional Whisper
Fallback chain
- Advertiser
- Name
- Aliases
- Search
- Alias matching
- Contextual analysis
- Results
- Timestamp
- Context
- Type + confidence
- Watch at t=
Engineering decisions
- oEmbed first, YouTube Data API optional
- Title, channel and thumbnail work without a key. published_at and duration stay empty until a server-side YouTube Data API key is set — the dashboard states that instead of inventing those fields.
- Caption-first transcript chain
- Try timestamped YouTube captions, then yt-dlp timed text, then a local fixture. Whisper is an optional fallback when captions do not exist — not the default path.
- Keep the YouTube API key on the backend
- A Data API key belongs in server environment variables. It is not shipped in the React app or committed to git.
- One video, one advertiser for the MVP
- The first useful loop is analyze → search → jump to the mention. Multi-show ingestion and clipping wait until that loop is solid.
What the dashboard does
Paste a YouTube URL, analyze it, then search for an advertiser or phrase. Each row is a mention: timestamp, the matched text, surrounding context, type, confidence and a Watch on YouTube link.
- Live: https://adverify.codewithbharat.dev/
- Health check: GET /api/health
- Published date and duration require a YouTube Data API key
Product frames
02 images · open slider
Lessons
- Use the captions YouTube already has before paying for speech-to-text.
- If a field needs an API key, leave it empty and say so — do not invent a publish date.