AI knowledge management

Answers you can trace back to the page.

Upload your PDFs, search them, ask questions and get cited answers that open the exact page with the passage highlighted. Share collections with a team, keep every version, schedule reviews and check documents for contradictions.

Live demo: open the real app in your browser, register or log in (sample account demo@example.com / DocuMind2026) and open the dashboard. It runs entirely in your browser on six sample documents: the Assistant quotes the best-matching sentence instead of writing an AI answer, and uploads and sharing are switched off. The full application needs a MySQL database, a vector store and an AI model, so it runs on your own computer: see Run it.

The citation viewer showing a PDF page with the supporting passage highlighted

What it does

A complete workflow from a pile of PDFs to a knowledge base your team can trust.

โ

Cited AI answers

Every answer cites its document, version and page. If the documents do not support an answer, it says so instead of guessing.

โŒ•

Hybrid search

Keyword (MySQL FULLTEXT) and semantic (embeddings in Chroma) results merged with reciprocal rank fusion, with filters and highlighted snippets.

โ–ค

Collections, categories, tags

Organize documents your way and filter by any of them.

๐Ÿ‘ฅ

Team sharing

Share a collection as Viewer or Editor. Permissions are enforced on the server for every request, and revoking access is immediate.

โŽ˜

Version history

Upload new versions, compare the text, restore an old one as a new version. Search and AI only use the current version; old citations open the original file.

โœ“

Content reviews

Review dates and intervals, due and overdue status derived from the dates, and a history of who reviewed which version.

โš 

Potential conflicts

The AI compares passages across documents and shows both sources as evidence. A person decides; nothing is confirmed automatically.

โš™

Reliable processing

Background jobs in a MySQL queue with progress, automatic retries and manual retry.

See it working

Screenshots from the running application (sample engineering policies).

How it works

MySQL decides who may see what; the vector index is only a search aid.

  1. UploadThe PDF is validated and stored; a background worker extracts, chunks, embeds and indexes it.
  2. AuthorizeEach request resolves the documents the user may read from MySQL before anything is retrieved.
  3. RetrieveChroma finds similar passages; each hit is re-checked in MySQL and must belong to the current version.
  4. AnswerOnly those passages go to the LLM; citations are validated against what was sent.
  5. OpenA citation opens the exact page; the passage is highlighted only when it was located reliably.

Permissions

Enforced by the backend on every route; hiding a button is only convenience.

ActionOwnerEditorViewer
See documents, search, ask questions, open PDFs, versions, reviews, findingsYesYesYes
Add own documents, edit labels, upload or restore versions, schedule reviews, run conflict analysisYesYesNo
Edit or delete the collection, invite, change roles, revoke membersYesNoNo
Delete the uploaded fileOnly the person who uploaded it

Built and tested

Numbers from the test runs on the final code.

297backend tests passing
100frontend tests passing
8database migrations (Alembic)
76API routes, all behind authorization tests

The application was also driven end to end in a real Chrome browser with a local AI model (sign-in, upload, cited answers, search, sharing, versions, reviews, conflicts, keyboard and layout checks). The results, including what failed and was fixed, are in docs/RELEASE_VERIFICATION.md.

Technology

React 18ViteTailwind CSSFastAPIPydanticSQLAlchemy + AlembicMySQL / MariaDBChromaDBsentence-transformersPyMuPDFOllama / hosted LLMspytestVitest

Run it on your computer

You need Python 3.11+, Node.js 18+ and MySQL (XAMPP works). For AI answers install Ollama or use a hosted model key.

git clone https://github.com/JidnyasaGirase4/documind-ai.git
cd documind-ai/backend
python -m venv .venv && .venv/Scripts/activate
pip install -r requirements.txt
cp .env.example .env            # set DATABASE_URL, JWT_SECRET_KEY, LLM_*
python -m alembic upgrade head
python -m uvicorn app.main:app --reload --port 8000

cd ../frontend
npm install
cp .env.example .env            # VITE_API_BASE_URL=http://127.0.0.1:8000
npm run dev

Full instructions, configuration reference and troubleshooting are in the README.