Financial Services

Split and classify portfolio PDFs into structured JSON

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.

loan packet intake | document classification | mailroom automation

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

What makes portfolio PDFs hard to process

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

Boundary Detection

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

Per-Document Classification

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

Routing to the Right Config

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

Don't want to build it? We'll write your configs from your samples.

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

What the split returns

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
]
}

Supported packet types

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.

Mortgage and loan packets

Loan applications (1003), pay stubs, W-2s, bank statements, tax returns, IDs, appraisals, and verification of employment forms

Insurance submissions and onboarding bundles

ACORD forms, loss runs, dec pages, EOBs and scanned checks, plus KYC and onboarding document sets that arrive as one combined file

Common Questions

Answers about boundary detection, per-document classification, and routing each document to the right extraction config.

Does splitting, classifying, and extracting happen in one call?

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.

How does Sensible classify each sub-document?

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.

How does Sensible find boundaries when there are no separator pages?

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.

What kinds of portfolio PDFs does Sensible split and classify?

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

Turn your next document package into JSON.

Free 14-day trial. No credit card required. Start extracting in minutes.