# Web framework fastapi==0.115.4 uvicorn[standard]==0.32.0 python-multipart==0.0.20 # Settings + types python-dotenv==1.0.1 pydantic==2.9.2 # HTTP clients httpx==0.27.2 requests==2.34.0 # PDF / document parsing pdfplumber==0.11.4 # RAG: vector store + structured store # 2026-05-14: pinned to 1.5.9 to match the local .venv version that builds # rag/vectors. Schema drift between chroma versions caused KeyError('_type') # in earlier deploys, wiping the index and forcing a 45-min re-ingest. # Bump both local AND this pin together if upgrading. chromadb==1.5.9 duckdb==1.1.3 # Local embeddings (BGE small) — replaces Voyage in v1 to bypass free-tier rate limits sentence-transformers==5.1.2 torch==2.11.0 # CPU-only fine for our usage # Audio transcoding — browser MediaRecorder emits webm/opus by default; # Sarvam STT accepts WAV/MP3/FLAC/OGG/M4A but NOT webm. pydub (ffmpeg-backed) # converts in-process. The Dockerfile installs the ffmpeg apt package. pydub==0.25.1 # Utility numpy==1.26.4 tqdm==4.66.6 tenacity==9.0.0