Financial Services
A portfolio PDF bundles many distinct documents into one file: a mortgage packet runs an application, pay stubs, bank statements, tax returns, an ID, and an appraisal back to back. Before any field can be extracted, the boundaries have to be found and each sub-document classified. Sensible detects the boundaries, classifies every document, and routes each one to the right extraction config, in a single API call.
Validated JSON
Schema-enforced output; every field matches your contract
Source coordinates
Every value links back to page + bounding box for audit
Per-document pricing
Predictable cost. No token-volatility surprises
Trusted by teams turning documents into production data






The hard part of a portfolio PDF is everything before extraction: a single file holds documents of different types, in any order, with no separator pages. Boundaries have to be found, each document classified, and each routed to the config built for its type. Sensible does all three before a single field is read.
01
A 200-page packet has no markers telling you where the bank statement ends and the tax return begins. Sensible reads the package page by page and finds the boundaries between documents, so a nine-page statement stays one document instead of nine loose pages.
02
Once the boundaries are set, each sub-document is classified by type: pay stub, W-2, bank statement, driver's license, appraisal. Classification returns a type and a confidence score per document, so low-confidence splits surface for review instead of routing to the wrong config.
03
Each classified document is handed to the extraction config built for its type. The bank statement runs through the bank statement config, the W-2 through the W-2 config. Split, classify, and extract happen in one API call, and the response comes back as a single structured manifest.
Managed services
Solutions engineers handle plan, build, deploy, and adjust on your behalf. You see clean JSON in your API response. Same engine as self-serve, just with the configuration work outsourced.
What's included
01Plan.Engineers review your samples and pick the right method
02Build.SenseML configs written from your samples
03Deploy.Same engine as self-serve, ready for production
04Adjust.We update configs when formats shift or new edge cases appear
05Integrate.Help with custom integration into your downstream systems
For a portfolio PDF, the first output is a split manifest, not field values. It tells you where each document sits, what type it is, and how confident the classification was, before per-document extraction runs. We map the manifest and the downstream fields to your pipeline.
01
Document boundaries
Page ranges for every detected document, total page count, document count, and any pages that could not be assigned to a document
02
Per-document classification
Document type for each segment (pay stub, bank statement, W-2, tax return, ID, appraisal), classification confidence score, and the config matched to each type
03
Routed extraction output
The structured JSON each sub-document extracts to once routed, nested under its document in the manifest so every value traces back to its page range
config.json
SenseML
{ /* SenseML: portfolio split + classify */
"document_types": [
{
"id": "pay_stub",
"description": "pay stub, earnings statement, gross pay, net pay, pay period"
},
{
"id": "bank_statement",
"description": "bank statement, account summary, beginning/ending balance, transactions"
},
{
"id": "w2",
"description": "W-2, wage and tax statement, wages tips other compensation"
}
// + more types, each routed to its own config
]
}Sensible splits and classifies portfolio PDFs across industries. Define the document types you expect in a packet, and new packet shapes can be configured in hours. The classification logic is explicit in SenseML, not buried in prompt tuning.
Loan applications (1003), pay stubs, W-2s, bank statements, tax returns, IDs, appraisals, and verification of employment forms
ACORD forms, loss runs, dec pages, EOBs and scanned checks, plus KYC and onboarding document sets that arrive as one combined file
Answers about boundary detection, per-document classification, and routing each document to the right extraction config.
Yes. Each classified document is routed to the extraction config built for its type, the bank statement through the bank statement config and the W-2 through the W-2 config. Split, classify, and extract happen in a single API call, and the response comes back as one structured manifest where every value traces to its page range.
Once boundaries are set, each sub-document is classified by type, such as pay stub, W-2, bank statement, driver's license, or appraisal. Classification returns a type and a confidence score per document, so low-confidence splits surface for review instead of routing to the wrong config.
A 200-page packet has no markers telling you where the bank statement ends and the tax return begins. Sensible reads the package page by page and finds the boundaries between documents, so a nine-page statement stays one document instead of nine loose pages.
Sensible handles mortgage and loan packets (1003 applications, pay stubs, W-2s, bank statements, tax returns, IDs, appraisals, and VOEs) and insurance submissions and onboarding bundles (ACORD forms, loss runs, dec pages, EOBs, scanned checks, and KYC sets). Define the document types you expect in a packet and new packet shapes can be configured in SenseML.
Start free
Free 14-day trial. No credit card required. Start extracting in minutes.