Askable

Inspiration

You can Control-F a document. You can't Control-F a video. When the answer you need is buried in a two-hour recording, you drag the scrubber and hope. Then you quote from memory.

Askable turns long videos into searchable, verifiable sources. Ask in plain language, get an answer, and jump to the moments that support it.

What it does

Paste a YouTube URL or upload a video file, then ask questions in plain language. Every answer includes timestamped source links that jump to the relevant moments in the video.

Askable is not just "chat with a video". Most video chat tools return a plausible answer from a few retrieved chunks. Askable is built for answers that need to be checked. It combines semantic retrieval with deterministic full-transcript search and links the supporting transcript evidence back to the original video.

Example

Question: "How many times does the speaker say 'government'?"

Result:The word or phrase "government" is mentioned 7 across the transcript...

  • Exact mention counting: For literal questions such as "How many times do they say government?", Askable scans the complete stored transcript. The scan is case-insensitive and matches whole words, so "Government" counts but "governments" does not. If the literal scan finds no exact match, it falls back to semantic retrieval to check for related context.
  • Two ingestion paths: YouTube captions are retrieved through Bright Data. Uploaded files are transcribed from audio by Speechmatics with word-level timings, so they do not require captions.
  • Non-blocking ingestion: Users can transcribe one video while chatting with another. Conversations survive navigation.

Askable is for anyone who has to quote a video correctly: journalists, researchers, analysts, students, and support teams.

How we built it

  • Frontend: React, TypeScript, Vite, and Tailwind CSS
  • Backend: Supabase Edge Functions with Deno for ingestion, retrieval, counting, and answer generation
  • Transcripts: Bright Data for YouTube videos and Speechmatics for uploaded files
  • Embeddings and answers: AI/ML API using text-embedding-3-small and gpt-4o-mini
  • Storage: Supabase Postgres with pgvector, holding timestamped transcript chunks
  • Security: No third-party API keys are exposed in the browser. They remain in Edge Function environment variables, while the browser only holds the Supabase public client key.

Challenges we ran into

  • Counting with ordinary RAG: Standard top-k RAG failed on global questions such as counting because the model only sees a small number of retrieved chunks. We solved this with deterministic full-transcript scanning.
  • YouTube access from server infrastructure: YouTube blocked direct audio retrieval from our server environment, so we used Bright Data's caption retrieval workflow instead.

Current limits

  • Counting matches exact spoken words, not synonyms, and depends on transcription quality.
  • Uploads are currently capped at 20 MB, and the longest video we tested was 52 minutes.
  • Each question is answered independently, without multi-turn conversation context.
  • Login friction is removed for judging. A production deployment would add authentication and rate limiting.

Accomplishments we're proud of

  • A working product for asking questions about videos with timestamped evidence.
  • Deterministic full-transcript counting instead of relying only on retrieved chunks.
  • Resumable, non-blocking ingestion.

What we learned

  • Global questions need full-transcript processing, not only top-k retrieval.
  • Long-running ingestion jobs must be resumable because they can outlive a single request.

What's next for Askable

  • Speaker-aware citations showing who said what and when
  • Multi-turn conversation context
  • Uploads beyond 20 MB through Supabase Storage
Share this project:

Updates

Submission history