DocuMind AI
Built because finding one paragraph in a fifty-page report is a bad way to spend an afternoon, and because a citation is the difference between an answer and a guess.
Why
The problem
Found first-hand while doing research: pulling reliable, source-grounded information out of long reports and documents is slow and inefficient. You either skim and risk missing the answer, or read everything and lose the day.
What
What I built
A retrieval-augmented document platform: upload PDFs, DOCX or text files, search them semantically, and get streamed answers with a citation back to the exact source passage and page. Built to solve a clear user workflow problem.
Treat retrieval as the product, not the model. Parse the document properly, chunk it so meaning survives, embed it, and make every generated sentence traceable back to the passage and page it came from.
How it works
My part
Designed and built it alone
- Identified the problem during research and recognised it as a practical, recurring gap.
- Designed the full product workflow — document ingestion, semantic search, grounded question answering.
- Built both sides alone: the Python retrieval and generation backend, and the TypeScript interface in front of it.
- Containerised the whole stack with Docker Compose so it runs as a real deployment rather than a notebook demo.
Architecture
What is actually running
- Document parsing pipeline handles PDF, DOCX, and text uploads, preserving page-level structure.
- Semantic chunking ensures long documents are broken down while maintaining contextual meaning.
- Vector embeddings and similarity search (ChromaDB) return the most relevant passages for any query.
- Streamed LLM generation (Gemini) provides real-time answers, strictly grounded in the retrieved context.
Built with
Result
Where it got to
A working, Dockerised Next.js and FastAPI application that answers questions over uploaded documents with streamed, source-cited responses — problem identification through to a shipped tool.
Honestly
The three questions that matter
See it