Documenso is an open-source DocuSign alternative with PAdES-standard PDF signing (Next.js/tRPC/Prisma). We self-hosted it inside the client's VPC and added an LLM job that pre-fills signing fields from uploaded contracts.
A real-estate brokerage needed isolated, compliant document signing for buyer disclosures hosted in their own VPC — no third-party SaaS holding sensitive PDFs. They also wanted signing fields pre-filled automatically instead of placed by hand on every disclosure.
- Self-hosting a full e-signature stack inside the client's VPC with valid PDF signing certificates.
- Extracting field positions and values from heterogeneous uploaded PDFs to auto-place signature fields.
- Wiring signed-document events into the client's transaction-management system.
We deployed Documenso via Docker inside the client's VPC, generated PAdES signing certificates, and built a field-detection job (AWS Textract → Claude) that populates Documenso field records through the TypeScript SDK, with a webhook firing on document.signed.
- A self-hosted Documenso deployment (docker compose) inside the client's VPC with a generated .p12 PAdES signing certificate.
- An AI field-detection job using AWS Textract plus Claude to read uploaded PDFs and pre-populate documenso.field records via the sdk-typescript.
- A document.signed webhook that pushes completed, signed disclosures straight into the brokerage's transaction-management system.
A customized view of the system we shipped for this engagement — the components and how requests and data flow between them.
Before — manual bottleneck flow
Sending sensitive disclosures through a third-party SaaS fails the brokerage's data-isolation rules.
Signature and initial fields are dragged onto every PDF by hand.
Signed files are downloaded and re-entered into the transaction-management system.
After — automated optimized flow
Disclosure is uploaded into the self-hosted Documenso instance inside the VPC.
Fields and values are detected and placed automatically via the SDK.
On document.signed the completed file is pushed straight into the transaction system.
“The disclosures never leave our own environment now, which was the whole point for us, and the fields come in already placed. It took a small but constant chore off every transaction without changing how our agents work.”

