Docintake: grounded answers over your own documents by Amish BemelkhedkarDocintake: grounded answers over your own documents by Amish Bemelkhedkar

Docintake: grounded answers over your own documents

Amish Bemelkhedkar

Amish Bemelkhedkar

Docintake: grounded answers over your own documents

A document intake pipeline for contracts and invoices, with the measurement layer that says how well it works.
Ingests mixed business documents, routes them through a LangGraph state machine, extracts structured fields with provenance, and answers grounded questions over the corpus using hybrid retrieval and cross-encoder reranking. FastAPI in front, MCP for agents, Postgres + pgvector underneath.
Measured on 20 CUAD contracts, 212 answerable and 82 unanswerable queries, with paired bootstrap clustered on documents. Every comparison carries a confidence interval, and null results are published. Cross-encoder reranking beat dense-only by 0.205 MRR [0.152, 0.254]. Correct abstention on unanswerable queries 0.854 [0.773, 0.931]. Per-claim grounding 0.9727 from the judge, 0.957 from human grading. Retrieval p50 241 ms. Cost per successful task $0.001696.

What is unusual here

An answer is a set of claims, each badged. Every claim is either matched to a retrieved passage or shown as unsupported, and any citation opens to the source text so you can check it.
"Not present" is an answer. A question the corpus cannot answer is declined rather than guessed at. Correct abstention on unanswerable queries: 0.854 [0.773, 0.931].
Like this project

Posted Sep 10, 2026

A document QA pipeline over contracts and receipts. Every answer cites its source, and unanswerable questions are declined rather than guessed.