Local-first MVP for ingesting project knowledge (meeting notes, CSV trackers, manual uploads), processing it asynchronously, and answering PM/TPM questions with citations.
- Frontend: React + Vite
- Backend: FastAPI
- Database: Postgres + pgvector
- Queue: Redis + RQ
- Worker: Python RQ worker
- Embeddings: Ollama
nomic-embed-text(768 dimensions) - LLM: Ollama
qwen2.5:7b(fallback:qwen2.5:3bon low-RAM machines) - Packaging: Docker Compose
- Docker Desktop (with Compose)
- Ollama running on the host machine
Pull required models on the host:
ollama pull nomic-embed-text
ollama pull qwen2.5:7bFor machines with 8 GB RAM or less, use qwen2.5:3b instead and set OLLAMA_LLM_MODEL=qwen2.5:3b in .env.
cd rag_intelligence_copilot/deccan-ai-copilot
cp .env.example .env
docker compose up --buildServices:
| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend | http://localhost:8000 |
| Postgres | localhost:5432 |
| Redis | localhost:6379 |
API docs: http://localhost:8000/docs
Recommended: use the dummy data pack at ../dummy_data/ — 5 PM-themed text files with full upload and chat test instructions. No manual metadata required.
Quick test:
- Open http://localhost:5173
- Upload tab → select all 5 files from
../dummy_data/(bulk upload) - Click Upload & Process and wait for all jobs completed
- Chat: ask
Why is Project Phoenix delayed?with project filterPhoenix - Confirm answer includes citations (see dummy_data/README.md for more questions)
- Dashboard shows document/chunk/job counts
Supported upload formats: .txt, .md, .csv, .pdf, .docx (max 10 MB per file).
| Method | Path | Description |
|---|---|---|
| GET | /health |
Health check |
| POST | /documents/upload |
Upload document (JSON) |
| POST | /documents/upload/bulk |
Upload files (multipart) |
| GET | /documents |
List documents |
| GET | /jobs/{job_id} |
Job status |
| POST | /chat/query |
Ask question |
| GET | /dashboard/summary |
Stats |
See [.env.example](.env.example). Key settings:
OLLAMA_BASE_URL— defaulthttp://host.docker.internal:11434for Docker → host OllamaEMBEDDING_DIMENSION— must match model (768 fornomic-embed-text)CHUNK_SIZE_CHARS/CHUNK_OVERLAP_CHARS— default 3500 / 500UPLOAD_MAX_BYTES— max file size (default 10 MB)ALLOWED_UPLOAD_EXTENSIONS—.txt,.md,.csv,.pdf,.docx
main/
backend/app/ # FastAPI, services, workers
frontend/src/ # React UI
docker-compose.yml