Transcription, search, and Q&A over the Epstein-Ehud recording. Uses Deepgram for transcription with speaker diarization and entity detection, a Next.js frontend for exploration, and Modal for deployment.
Live demo: https://nazihkalo--epstein-transcript-explorer-serve.modal.run/
epstein_dmeo.mov
uv synccp .env.example .env
# Edit .env with your DEEPGRAM_API_KEY and OPENAI_API_KEYuv run python main.pyThis reads the MP4, sends it to Deepgram, and writes:
data/transcription.json— raw Deepgram responsedata/transcript_structured.json— cleaned structured data
Run the backend and frontend in two terminals:
# Terminal 1: FastAPI backend on :8000
uv run uvicorn server:app --reload --port 8000
# Terminal 2: Next.js dev server on :3000
cd frontend
npm install
npm run devOpen http://localhost:3000 — API calls are proxied to the backend automatically.
cd frontend
npm run build
cd ..modal secret create openai-secret OPENAI_API_KEY=your_key_here# Development (hot reload)
modal serve modal_app.py
# Production
modal deploy modal_app.pymain.py— Deepgram transcription pipeline (run once)server.py— Local FastAPI dev server (same endpoints as Modal)modal_app.py— FastAPI backend + static file serving on Modalfrontend/— Next.js app (static export)data/— Source MP4 + generated transcript JSON
GET /api/transcript— Full structured transcriptGET /api/search?q=...&speaker=...— Search with optional speaker filterPOST /api/ask— Q&A with RAG over transcript (requires OpenAI key)