Problem
Currently all ingested documents and eval runs share a single global namespace. If a user adds multiple datasets, every eval run searches across all documents — there is no way to scope a test to a specific set of documents.
Goal
Introduce a Projects concept that gives users isolated workspaces. Each project has its own:
- Document collection (uploaded files)
- Ground truth / test dataset (question-answer pairs)
- Eval runs (scoped only to that project's documents)
- RAG config settings
User Story
As a user, I want to create a Project called "ML Docs Evaluation", upload specific documents to it, add my ground truth Q&A pairs, run evals, and have those evals only search within that project's documents — not across everything I've ever ingested.
Detailed Plan
See docs/plans/projects-feature.md for the full implementation plan.
Scope
- Backend: new
projects table, all existing tables get project_id FK, Qdrant payloads tagged with project_id, all API routes scoped
- Frontend: Projects dashboard, project switcher, per-project documents + evals + ground truth management
- Migration: existing data moved into a default project
Labels
Problem
Currently all ingested documents and eval runs share a single global namespace. If a user adds multiple datasets, every eval run searches across all documents — there is no way to scope a test to a specific set of documents.
Goal
Introduce a Projects concept that gives users isolated workspaces. Each project has its own:
User Story
Detailed Plan
See docs/plans/projects-feature.md for the full implementation plan.
Scope
projectstable, all existing tables getproject_idFK, Qdrant payloads tagged withproject_id, all API routes scopedLabels