Upload
Drop a PDF in the React UI. The backend hashes content, rejects duplicates with HTTP 409, and parses structure with Docling.
Offline PDF Knowledge Copilot
For teams that cannot upload contracts and policy PDFs to a cloud LLM — natural-language Q&A with verifiable citations, entirely on the machine that holds the documents.

Product demo
Problem
Legal, compliance, and policy teams work from contracts, manuals, and regulatory PDFs that cannot be uploaded to OpenAI or similar services. Keyword search fails on paraphrased questions; vector-only RAG misses exact article numbers and defined terms.
The privacy gap
Cloud convenience vs. on-machine control — many document workflows need the second without giving up citations.
The product challenge is trust and speed: people need answers they can defend in an audit, from documents that legally or contractually cannot leave the building. Keyword search breaks on how people actually ask questions; a generic chatbot cannot cite the manual.
I built this as the on-machine counterpart to my cloud Enterprise Knowledge Copilot — same document Q&A job, different constraint: privacy and data residency come first.
Solution
Upload policy and contract PDFs, ask in natural language, and get answers tied to page-level evidence. Ingestion is duplicate-safe; every response shows which chunks supported it.
Upload
Drop a PDF in the React UI. The backend hashes content, rejects duplicates with HTTP 409, and parses structure with Docling.
Index
Chunks embed locally into Chroma; headings and text land in SQLite FTS5. The document library shows indexed files with metadata.
Ask
A natural-language question triggers hybrid retrieval — vector + lexical fusion with Spanish stopword filtering and heading boost.
Cite
llama.cpp generates from selected chunks only. The UI shows the answer with document/chunk citations you can verify.
What the product delivers
Every response includes citations to source chunks — document, section, and page — so compliance and legal teams can verify claims.
Hybrid search combines meaning and exact terms, so paraphrased questions and precise references (article numbers, defined terms) both reach the right evidence.
Content-hash deduplication stops the index from filling with duplicate PDFs — important when teams share the same manual across folders.
When the corpus does not contain an answer, the system says so instead of inventing policy — critical for HR, legal, and compliance workflows.
PDFs, indexes, and inference run locally. No default path sends document content to a hosted LLM or embedding API.
Stage-level timings, golden-set evaluation, and automated tests make retrieval quality something you can regress — not guess after each change.
Impact
The outcome that matters: teams working from sensitive PDFs can ask questions in plain language, trust the citations, and keep documents on infrastructure they control.
01 - Who it serves
Legal, compliance, HR, and operations teams with contracts, manuals, and regulatory PDFs that cannot go to a cloud AI vendor.
02 - What changes
An 80-page policy manual becomes queryable in minutes — with section-level citations — instead of manual search or risky upload to ChatGPT.
03 - Why it exists
Pairs with the cloud Knowledge Copilot in the portfolio: same knowledge-worker problem, different constraint when data residency and auditability require an on-machine path.
Supporting signals
On-machine
Data residency
PDFs, indexes, and default inference stay on the user's machine — no document egress to a hosted LLM in the standard path.
1.8 h/day
Search waste benchmark
McKinsey's estimate for time knowledge workers spend searching or gathering internal information — the job this product targets.
Cited by default
Answer traceability
Responses include source chunks and references so reviewers can verify claims — not a black-box summary.
Sensitive PDFs cannot use cloud RAG
A product-shaped local engine that complements the cloud Knowledge Copilot when privacy and residency are non-negotiable.
Architecture
Hexagonal service boundaries, dual stores, versioned API contracts, and instrumentation on every query path.
Ingestion path into dual stores; query path through hybrid RRF retrieval, rerank, and local generation with observability.
Decisions
Lessons
What held up in implementation and tuning.
What the next iteration targets.
What changed my engineering judgment.
Next step
Open the repo, run the local stack, or get in touch to discuss how this fits next to a cloud knowledge copilot in your organization.
Keep exploring