From a scanned page to an answer you can verify. paperless-ngx imports and searches documents. This project adds AI reading for difficult scans, automatic organization, and a browser chat copilot without changing Paperless itself.
- Read: A complete-PDF OCR service (Paddle or the optional vision adapter) transcribes every page and saves searchable text in Paperless.
- Organize: a text model extracts a title, date, sender, and summary.
- Ask: the copilot searches Paperless, reads matching documents, and answers with citations.
Paperless workflows and tags start the work. A webhook listener puts document IDs in Redis; Python workers process them and write results back through the Paperless API. The stack runs with Docker Compose, PostgreSQL stores Paperless and chat data, and Arize Phoenix records traces and evaluations. Models can run through OpenRouter or an OpenAI-compatible local server such as Ollama or vLLM.
flowchart LR
A[Document in Paperless] --> B[Workflow and webhook]
B --> C[Redis queue]
C --> D[Parse every document page]
D --> E[Extract document details]
E --> A
F[Chat copilot] --> G[Paperless search]
G --> F
The copilot uses Paperless's existing full-text search, so there is no separate vector index. If local model serving is offline, queued documents wait for it to return.
The default cloud models receive document content; see privacy details and local model options.
This Compose deployment assumes an existing Traefik network, Paperless data volumes, and the sibling container hardening baseline. See the setup guide for prerequisites, secrets, Paperless workflows, startup, backfills, model selection, and upgrades.
- Architecture, data flow, and privacy
- OCR service setup · Workstation implementation prompt
- Configuration and Docker secrets
- Daily operations and correspondent cleanup
- Testing and model evaluation
- Repository layout
For the project story and design tradeoffs, read the case study and deep dive.
