A full-stack Next.js app that turns YouTube lecture playlists into evidence-backed exam prep: blueprint, notes with timestamps, question bank, mock exam, mastery tracking, exports (PDF/HTML/CSV/TSV), and a live coach.
npm install
npm run devOpen http://localhost:3000 and paste a playlist or a list of video URLs. Provide your YouTube + Gemini API keys in the UI.
If you want Turbopack instead of webpack for local dev, run:
npm run dev:turbo- Playlist ingestion via YouTube Data API
- Transcript grounding from YouTube timed text + storyboard keyframes (optional frame capture)
- Optional Gemini video understanding fallback when transcripts are missing
- Gemini Pro for notes + questions
- Gemini Flash for verification gates
- Mock exam with grading + remediation links
- Remediation plans grouped by weak topics
- Mastery tracking with spaced repetition cadence + adaptive practice sets
- Exports: PDF + HTML + Anki CSV/TSV
- Shareable pack pages (
/pack/:packId) and export buttons in the pack viewer - Saved pack list + delete
- Coach / Viva / Assist chat mode (streamed + optional Live API)
- Live API with ephemeral tokens (
POST /api/live-token) for client-to-Gemini sessions - Optional TTS endpoint (
POST /api/tts) for Gemini 2.5 TTS models - Browser Use Cloud assist tasks (prefix messages with
browser:) - Deep research via Gemini agent (optional) or Serper search (optional API key)
- Resume generation via job id
- File Search store grounding (vault upload)
- Interactions API toggle for structured outputs (optional)
- Study schedule generated from exam date
- Deploy the repo to Vercel.
- Add Vercel KV if you want persistence across serverless invocations.
- The UI collects API keys from the user, so no secrets are required at build time.
If KV is not configured, the app falls back to a local JSON file store in data/ (dev only).
The coach can connect directly to Gemini Live API using ephemeral tokens generated by
POST /api/live-token. This avoids running a WebSocket proxy in the app while keeping
keys off the client. Live API models are separate from the default Gemini 3 models.
docs/ARCHITECTURE.mddocs/DEMO_SCRIPT.mddocs/TESTING.md
- Transcripts are fetched from YouTube timed text endpoints; some videos may not expose captions.
- For best results, keep playlists under 20-30 lectures per run to avoid long generation times.
- Models are configurable in the UI (defaults:
gemini-3-pro-preview,gemini-3-flash-preview). - For Deep Research search, supply a Serper API key in the UI (optional).
- Deep Research agent mode does not require external search keys.
- File Search uses the Google Gen AI SDK and requires vault docs (optional).
- Frame capture requires
ffmpegon PATH andENABLE_FRAME_CAPTURE=1. - File Search and Interactions API support require Node.js 20+.
- Upload PDFs/TXT in the Vault section to ground generation against syllabus or slides.