2026 Backend Developer

Mementic

PythonFastAPIWhisperPostgreSQL

An indexer and phrase search engine for YouTube videos. Ingests playlists or keywords, transcribes with Whisper when subtitles are missing, and returns the exact clip (start/end) that contains the searched phrase with fuzzy trigram search.

The Challenge

Remembering exactly which video and which minute a phrase was said in is nearly impossible. YouTube search is by title and description, not by spoken content, and memes/quotes get lost across thousands of hours of footage.

Results

  • FastAPI + SQLAlchemy + PostgreSQL pipeline with idempotent ingestion
  • Whisper STT fallback when YouTube subtitles are missing
  • Exact + fuzzy (trigram) search with per-segment timestamps
  • Clip download by time range through a REST endpoint

The Solution

I built a FastAPI service that ingests YouTube playlists or keywords, downloads subtitles when they exist and, when they don't, generates them with Whisper. Every segment is indexed in PostgreSQL with timestamps. A combined exact + fuzzy (trigram) search returns the video, the clip and the exact seconds where someone said it.

Motivation

I got tired of hunting for specific memes and quotes on YouTube without knowing where they were. If Shazam can identify a song from 5 seconds, the same should be possible for spoken quotes.

Challenges

Idempotent ingestion was the main challenge: a playlist may contain deleted videos, subtitles that change, or no subtitles at all, and you have to decide when to invoke Whisper (expensive) or trust the scraper's data. Fuzzy search required aggressive text normalization and a Postgres trigram index.

Learnings

I learned to design ingestion pipelines that can run a thousand times without duplicating anything, and to use PostgreSQL beyond basic CRUD (extensions like pg_trgm completely change what's possible).

Context

Functional MVP with a YouTube-embed frontend and a clip download endpoint. Pending: LAN access, ingestion of the first real playlist, and a duplicates dashboard.