Document QA Bot interface showing a PDF upload screen and a chat conversation with cited source pages

Document QA Bot

Python FastAPI ChromaDB Angular TypeScript

A full-stack RAG (Retrieval-Augmented Generation) application that lets users upload PDF documents and interact with them conversationally. The backend extracts and chunks document text while preserving page numbers, generates embeddings locally using sentence-transformers, and stores them in a ChromaDB vector database for fast semantic search. When a user asks a question, the most relevant chunks are retrieved and passed to an LLM (routed through OpenRouter), which generates a grounded answer citing the exact source page — eliminating hallucination and building user trust. The Angular frontend supports multiple persistent conversations, each tied to its own uploaded document, with a clean, minimal chat interface inspired by Claude's web design. Built to demonstrate a pattern used across real-world enterprise AI tools: contract review, internal knowledge bases, compliance document search, and customer support systems.