AI-powered contract review and extraction platform.
🔗 Live Demo: docpilot-tau.vercel.app
Upload PDF contracts (NDAs, service agreements, employment contracts) and DocPilot automatically classifies the document type, extracts key fields like parties, dates, and payment terms using GPT-4o, and flags risky clauses with plain-English explanations. Compare two contracts side-by-side to spot differences at a glance.
- AI-Powered Extraction — Classifies document type and extracts structured fields using GPT-4o with JSON mode and Pydantic validation
- Risk Analysis — Identifies risky clauses (non-compete, liability, termination) with risk levels and plain-English explanations
- Contract Comparison — Side-by-side field-level diff between any two contracts with match/difference/missing indicators
- Real-Time Progress — Server-Sent Events stream processing updates to the browser as each pipeline step completes
- Team Workspaces — Multi-tenant architecture with role-based access (owner, admin, member) and team invitations
- Async Pipeline — Celery workers process documents in the background so the API stays responsive
graph LR
Browser -->|REST API| Next["Next.js Frontend"]
Next -->|HTTP| API["FastAPI"]
API -->|async queries| DB[(PostgreSQL)]
API -->|dispatch task| Worker["Celery Worker"]
Worker -->|structured output| OpenAI["OpenAI GPT-4o"]
Worker -->|read/write| DB
Worker -->|publish progress| Redis[(Redis)]
API -->|SSE stream| Redis
| Layer | Technology |
|---|---|
| Frontend | Next.js 15, TypeScript, Tailwind CSS, shadcn/ui |
| Backend | Python 3.12, FastAPI, SQLAlchemy (async), Alembic |
| AI | OpenAI GPT-4o, structured JSON output, Pydantic validation |
| Queue | Celery, Redis |
| Database | PostgreSQL 16 |
| DevOps | Docker Compose, GitHub Actions CI |
- Docker and Docker Compose
- Node.js 20+ (for frontend development)
- An OpenAI API key
# Clone the repo
git clone https://github.com/MLaitarovsky/docpilot.git
cd docpilot
# Copy env file and add your OpenAI API key
cp .env.example .env
# Edit .env and set OPENAI_API_KEY=sk-your-key-here
# Start the backend services (API + worker + Postgres + Redis)
docker compose up -d
# Run database migrations
docker compose run --rm api alembic upgrade head
# Install frontend dependencies and start the dev server
cd apps/web
npm install
npm run devOpen http://localhost:3000 and create an account to get started.
Note: The API runs on port 8001 by default. Swagger docs are available at http://localhost:8001/docs.
docpilot/
├── apps/
│ ├── api/ # FastAPI backend
│ │ ├── app/
│ │ │ ├── main.py # App entry point + CORS
│ │ │ ├── config.py # Pydantic Settings (env vars)
│ │ │ ├── database.py # Async SQLAlchemy engine
│ │ │ ├── models/ # ORM models (User, Document, Extraction, ...)
│ │ │ ├── schemas/ # Pydantic request/response schemas
│ │ │ ├── routers/ # API endpoints (auth, documents, compare, teams)
│ │ │ ├── services/ # Business logic (extraction pipeline, compare)
│ │ │ ├── tasks/ # Celery background tasks
│ │ │ ├── prompts/ # LLM prompt templates per doc type
│ │ │ └── utils/ # PDF parser, text chunker, LLM client
│ │ ├── alembic/ # Database migrations
│ │ ├── Dockerfile
│ │ └── requirements.txt
│ │
│ └── web/ # Next.js frontend
│ ├── src/
│ │ ├── app/ # App Router pages
│ │ ├── components/ # UI components (shadcn + custom)
│ │ ├── hooks/ # React hooks (SSE, documents, auth)
│ │ ├── lib/ # API client, auth utils
│ │ └── types/ # TypeScript interfaces
│ ├── Dockerfile
│ └── package.json
│
├── docker-compose.yml # Local dev (with hot reload)
├── docker-compose.prod.yml # Production
├── .github/workflows/ci.yml # CI pipeline
└── .env.example # Environment variables template
With the backend running, interactive API docs are available at:
- Swagger UI: http://localhost:8001/docs
- ReDoc: http://localhost:8001/redoc



