The problem
Documents arrive at the LOS as large, unlabeled PDFs with no machine-readable structure. Before any decisioning work can start, a processor must manually split bundles, rename files, re-key data from multiple sources, and check it all against the LOS — a task that averages one hour per loan. Mistakes discovered later at underwriting send the file all the way back.
For developers, there is no standard intake layer. Documents land in proprietary LOS folders with no structured data payload, no confidence scores, and no event stream to build downstream automation against.
| An hour of manual prep per loan Processors split large PDFs, rename files, and re-check every field against the LOS before decisioning can begin — before a single AI or underwriting touch. |
No machine-readable intake layer Documents arrive in Encompass folders as raw PDFs. No classification, no extracted fields, no confidence scores — any downstream automation must re-solve the intake problem from scratch. |
Errors surface at underwriting, not intake Misclassified documents and missing fields pass through setup undetected. When underwriting flags them, the loan backtracks — adding days and cost to every affected file. |
How it works
The Loan Setup workflow runs an asynchronous pipeline on every uploaded file: splitter → classifier → extractor → LOS validator → Encompass export. Your integration submits files and polls for status; MOS handles everything in between.
| Step 1 — Upload source files POST to /loans/{loanId}/source-files with a multipart PDF payload. The API returns a sourceFileId immediately and starts the pipeline asynchronously. One call handles single documents or multi-document bundles. |
Step 2 — Pipeline classifies and extracts MOS splits, converts, and runs AI classification with per-document confidence scores, then extracts field values with per-field confidence. Poll GET /loans/{loanId}/documents until processingStatus reaches EXTRACTED. |
Step 3 — Validated data writes back to Encompass Extracted fields are validated against the LOS and cross-document rules. Confident results push automatically to the configured Encompass eFolders. Only documents below the confidence threshold create a human review queue item. |
What you get
| Under 5 minutes to structured data From PDF upload to validated, LOS-ready field data — before a human touches the file. TRUE processes 1M+ loans annually at this speed. |
89.3% avg classification confidence Across all document types in production. W-2s reach 94.2% avg confidence. Documents below your configured threshold are routed to a review queue, not silently passed through. |
Eliminates offline document prep No manual PDF splitting, no renaming, no offshore stacking labor. The first customer quote: "Before TRUE, the process took almost an hour per loan. Since implementing, I'm processing four loans in less than 20 minutes." — First Continental Mortgage |
Common questions
What document types does MOS classify?
MOS classifies all standard residential mortgage document types out of the box: 1003 Uniform Residential Loan Application, W-2 Wage Statements, pay stubs, bank statements, closing disclosures, promissory notes, deeds of trust, title commitments, and more. Custom document types can be defined via the /document-types endpoint and are immediately available to the classifier. The full list of active types for your tenant is queryable at any time.
How do I know when processing is complete?
Poll GET /loans/{loanId}/documents and check processingStatus on each document. The status sequence is: UPLOADING → PROCESSING → CLASSIFIED → EXTRACTED → EXPORTED → FAILED. For event-driven integrations, filter the analytics events stream at GET /tenant/{tenantId}/analytics/events by eventType=EXTRACTION_RESULT or CLASSIFICATION_RESULT. Webhook support is on the roadmap; polling with cursor-based pagination is the current production pattern.
Can I correct a misclassified document?
Yes. Send a PUT to /documents/{documentId} with the correct documentTypeId. MOS will re-run extraction against the corrected type and update the manuallyCorrected flag on affected fields. The correction is tracked in the document's version history and recorded as a MANUAL_CORRECTION event in the analytics stream — preserving a full audit trail of the change.
What if a document fails processing?
Documents that fail any pipeline stage will have processingStatus = FAILED. The standard error response shape is { status, message, error }. Failed documents do not block other documents in the same loan from processing — the pipeline runs per-document. You can soft-delete and re-upload via PATCH /documents/{documentId}/trash followed by a new source file upload, or correct extracted data directly with PUT /extractedData/documents/{documentId} if the failure was in the extraction stage.
Key endpoints
Upload documents and let MOS handle splitting, classification, extraction, and LOS validation — automatically.
/loans
Create a loan record
/loans/{loanId}/source-files
Upload PDF source files (triggers async pipeline)
/loans/{loanId}/documents
List classified documents and processing status
/extractedData/documents/{documentId}
Get extracted field values with confidence scores
/extractedData/documents/{documentId}
Correct extracted field values after review
/tenant/{tenantId}/analytics/loans/{loanId}/timeline
Per-loan processing event timeline
Loan Setup & Data Quality
Turn uploads into clean, decision-ready files automatically.
Underwriting Automation
Decision-ready income and asset data without manual calculations.
Processing, Closing & Post-Close
Automate condition matching, closing review, and post-close validation.