BJJ Tube

building

Local-first RAG engine for BJJ instructional videos — ask questions, get timestamped answers from your own library

Stack
BunHonoReactSQLiteClaudeQwen3Gemma

BJJ instructional libraries are massive. Hundreds of hours of video across dozens of instructors. Finding the right technique at the right moment means scrubbing through footage or remembering which instructor covered what. I built BJJ Tube to fix that.

What It Does

Ask a natural language question (“How do I escape mount?” or “What does Danaher teach about closed guard?”) and get a synthesized answer grounded entirely in your local video library. Every answer includes clickable timestamps that jump to the exact moment in the source video.

3,424 indexed video transcripts across 166 products, 937 volumes, and 10,126 chapters. All search happens locally. Only the Claude API call for answer synthesis leaves localhost.

How It Works

The search engine runs a three-stage hybrid pipeline:

  1. FTS5 keyword matching for exact terminology (half guard, kimura grip, underhook)
  2. Vector semantic search using local Gemma 300M embeddings for conceptual queries
  3. Qwen3 0.6B reranking to sort results by relevance before synthesis

Search is 100% local. No API calls. Claude Sonnet handles the final answer synthesis with streaming Server-Sent Events so you see results build in real time.

The full library (276GB of MP4 files) streams via HTTP Range requests with seek support. No downloads, no transcoding.

Why It Matters

AI compresses study time. It does not compress mat time. But the study between sessions is where game plans form, where you notice patterns across instructors, where you find the detail that makes a technique click.

BJJ Tube makes that study dramatically faster. Minutes instead of hours. And because it’s grounded in your own library, the answers are specific to the instructionals you actually own.