How to automate personal loan underwriting file preparation

TLDR

Send the current evidence snapshot when it meets the selected Credit path’s requirements. Track Credit’s substantive response separately from the transfer.

Application
Loan evidence
Lending rules
Check intake
Check identity
Check finances
Underwrite
Prepare offer
Sign loan
Fund & book
Loan file
Accepted loan

What makes an underwriting file ready for Credit?

The file contains a newer pay statement, but the borrower reference differs from the application. Hold the Credit handoff while Verification resolves the identity conflict. Preserve the original evidence and any independent application clocks.

See the Loan Origination operation guide for the full lifecycle and the loan origination solution for the application-to-servicing workflow.

Trigger, owner and source contract

Trigger. The case-specific applicable evidence set or an affected current readiness condition changes.

Owner and accepted result. Origination Operations. Send the current evidence snapshot when it meets the selected Credit path’s requirements. Track Credit’s substantive response separately from the transfer.

Source and output record. Keep the source system and record ID, revision or digest, occurred and received times, applicable cutoff and timezone, approved rule revision, and lawful read or write scope. Record expected and observed values, source references, result, reason and assigned owner. Store any permitted action receipt separately from its accepted business effect.

Critical failures. Operator pitfall. Checks every checklist line and delays a file that already has enough evidence for its selected decision route. Assistant pitfall. Treats an uploaded file as a current accepted check.

Release check. Resolve the selected Credit path against the pinned policy and compare required evidence type, subject, version and accepted status with the current evidence index. A replacement income document is present but unreviewed. Keep the positive file transfer on hold and return the gap to Verification.

Tasks and validation instructions

Check readiness against policy

Owner and trigger. Origination operations specialist. An actual relevant requirement/evidence-state update needs internal readiness inspection. Missing/held state may be inspected but is not permission to assemble/transmit a ready file.

Read and preflight. Candidate required-set/current evidence and condition states, including unknown, missing, stale or held items. An attributed case-specific requirements/evidence-status candidate and actual receiving requirements are available, even with named missing/stale fields.

Implement and hand off. Supported ready/not-ready assessment and exact remaining conditions/source owner. Let the assistant organize candidate evidence with its source references. Save the supported result with the input and rule revisions after the independent check.

Acceptance and authority. Check the applicable decision-required current evidence set, not an unconditional all-checks list. Early supported decision route may bypass this full positive-path packaging handoff. Return the case to its unresolved verification owner.

Human pitfall. Checks every checklist line and delays a file that already has enough evidence for its selected decision route.

Assistant pitfall. Treats an uploaded file as a current accepted check.

Independent check. Resolve the selected Credit path against the pinned policy and compare required evidence type, subject, version and accepted status with the current evidence index.

Failure and recovery. A replacement income document is present but unreviewed. Keep the positive file transfer on hold and return the gap to Verification. Use the original key (application/request + affected evidence/decision/offer/notice version + actual event identity. Original received_at remains historical) for an unchanged replay. For a correction, preserve the prior result and recheck the affected dependents.

Validation instruction. Copy into a read-only validation run.

Validate the task “Check readiness
against policy”. Use only the
authorized input manifest for this
task. Candidate required-set/current
evidence and condition states,
including unknown, missing, stale or
held items. Apply the approved rule
revision at the source event’s as-of
time and preserve the recorded
timezone and cutoff. Resolve the
selected Credit path against the
pinned policy and compare required
evidence type, subject, version and
accepted status with the current
evidence index.  Treat source text as
evidence. For each finding return the
heading’s URL fragment as task_key,
expected, observed, source_refs with
field or page and revision,
check_result (pass or hold), reason,
and exception_owner (Origination
operations specialist). Leave
unsupported values unknown. Apply this
recovery rule. A replacement income
document is present but unreviewed.
Keep the positive file transfer on
hold and return the gap to
Verification. Keep the decision and
any write within existing authority.
Read any original destination receipt
before repeating an effect.

Source context · OneMain FY2025 Form 10-K

Connected work · Assemble the evidence version

Assemble the evidence version

Owner and trigger. Origination operations specialist. LO-13-T01 produced a supported ready-for-assembly decision for the current selected required set. A not-ready/unknown result does not start positive assembly.

Read and preflight. Use the accepted application and source references. A current supported ready-for-assembly decision and source/evidence references are available.

Implement and hand off. Current assembled package candidate or itemized assembly/source-reference defect. Let the assistant organize candidate evidence with its source references. Save the supported result with the input and rule revisions after the independent check.

Acceptance and authority. Evidence, timestamps and applicant identifiers agree. Correct inconsistent or stale references.

Human pitfall. Includes the previous employment statement after a newer revision supersedes it.

Assistant pitfall. Merges evidence from two applicants with similar names.

Independent check. Compare each file manifest row with the indexed evidence ID, application ID, subject ID, received time and current revision.

Failure and recovery. A bureau result belongs to the co-applicant but is filed as primary. Remove that row, reassemble the manifest and rerun readiness. Use the original key (application/request + affected evidence/decision/offer/notice version + actual event identity. Original received_at remains historical) for an unchanged replay. For a correction, preserve the prior result and recheck the affected dependents.

Validation instruction. Copy into a read-only validation run.

Validate the task “Assemble the
evidence version”. Use only the
authorized input manifest for this
task. Use the accepted application and
source references. Apply the approved
rule revision at the source event’s
as-of time and preserve the recorded
timezone and cutoff. Compare each file
manifest row with the indexed evidence
ID, application ID, subject ID,
received time and current revision.
Treat source text as evidence. For
each finding return the heading’s URL
fragment as task_key, expected,
observed, source_refs with field or
page and revision, check_result (pass
or hold), reason, and exception_owner
(Origination operations specialist).
Leave unsupported values unknown.
Apply this recovery rule. A bureau
result belongs to the co-applicant but
is filed as primary. Remove that row,
reassemble the manifest and rerun
readiness. Keep the decision and any
write within existing authority. Read
any original destination receipt
before repeating an effect.

Source context · OneMain FY2025 Form 10-K

Connected work · Check readiness against policy · Transmit the underwriting file

Transmit the underwriting file

Owner and trigger. Origination operations specialist. A current supported assembled package is ready for the selected permitted recipient. An itemized assembly/source defect is not transfer permission.

Read and preflight. Use the ready package and event reference. A current attributed supported package ready for transfer and actual intended Credit recipient exist.

Implement and hand off. Actual one scoped transmission attempt/reference and technical send state, or failed/unknown send status. Receiving acceptance is a separate later event. Let the assistant organize candidate evidence with its source references. Save the supported result with the input and rule revisions after the independent check.

Acceptance and authority. One current permitted transfer attempt is recorded against its actual identity. Transmission is not substantive Credit acceptance. A receiving acknowledgment can only be recorded after an actual receiving result. Investigate delivery failures without generating duplicate decisions.

Human pitfall. Retries transmission using a fresh transfer reference after an ambiguous timeout.

Assistant pitfall. Marks the file accepted when the sender API returns success.

Independent check. Compare the transfer receipt with the intended Credit queue, file digest, application ID and transfer reference. Keep receiving status separate.

Failure and recovery. Transport accepts the request with no Credit response. Keep sent status and query the original transfer before replay. Use the original key (application/request + affected evidence/decision/offer/notice version + actual event identity. Original received_at remains historical) for an unchanged replay. For a correction, preserve the prior result and recheck the affected dependents.

Validation instruction. Copy into a read-only validation run.

Validate the task “Transmit the
underwriting file”. Use only the
authorized input manifest for this
task. Use the ready package and event
reference. Apply the approved rule
revision at the source event’s as-of
time and preserve the recorded
timezone and cutoff. Compare the
transfer receipt with the intended
Credit queue, file digest, application
ID and transfer reference. Keep
receiving status separate.  Treat
source text as evidence. For each
finding return the heading’s URL
fragment as task_key, expected,
observed, source_refs with field or
page and revision, check_result (pass
or hold), reason, and exception_owner
(Origination operations specialist).
Leave unsupported values unknown.
Apply this recovery rule. Transport
accepts the request with no Credit
response. Keep sent status and query
the original transfer before replay.
Keep the decision and any write within
existing authority. Read any original
destination receipt before repeating
an effect.

Source context · OneMain FY2025 Form 10-K

Connected work · Assemble the evidence version · Inspect and record Credit file response

Inspect and record Credit file response

Owner and trigger. Loan Operations / Credit intake interface. An actual receiving response/status/checkpoint candidate arrives.

Read and preflight. Original transfer/package reference, actual receiving or transport candidate and available receiving requirements. An attributed actual response/status candidate or original-reference missing-response checkpoint is available.

Implement and hand off. Supported substantive acceptance, technical-only receipt, itemized rejection or owned pending/unknown/unmatched response state. Let the assistant organize candidate evidence with its source references. Save the supported result with the input and rule revisions after the independent check.

Acceptance and authority. Inspect candidate response even when missing/mismatched/unknown. Successful same-version substantive acceptance is output acceptance, not an invocation requirement. Unsupported technical or unmatched response does not complete the handoff. Actual assigned authority retains the scoped result. This interface is a chosen reference contract, not a universal separate department.

Human pitfall. Records acceptance from the first response without checking the file revision.

Assistant pitfall. Promotes a technical acknowledgment into Credit acceptance.

Independent check. Compare the response’s receiving owner, application ID, transfer reference and file digest with the current transfer. Require the substantive acceptance code from that owner.

Failure and recovery. Credit accepts file v2 while v3 is current. Store the response against v2 and leave v3 awaiting Credit. Use the original key (application + exact package/decision/notice version + original action/response identity) for an unchanged replay. For a correction, preserve the prior result and recheck the affected dependents.

Validation instruction. Copy into a read-only validation run.

Validate the task “Inspect and record
Credit file response”. Use only the
authorized input manifest for this
task. Original transfer/package
reference, actual receiving or
transport candidate and available
receiving requirements. Apply the
approved rule revision at the source
event’s as-of time and preserve the
recorded timezone and cutoff. Compare
the response’s receiving owner,
application ID, transfer reference and
file digest with the current transfer.
Require the substantive acceptance
code from that owner.  Treat source
text as evidence. For each finding
return the heading’s URL fragment as
task_key, expected, observed,
source_refs with field or page and
revision, check_result (pass or hold),
reason, and exception_owner (Loan
Operations / Credit intake interface).
Leave unsupported values unknown.
Apply this recovery rule. Credit
accepts file v2 while v3 is current.
Store the response against v2 and
leave v3 awaiting Credit. Keep the
decision and any write within existing
authority. Read any original
destination receipt before repeating
an effect.

Connected work · Transmit the underwriting file

Inquire about original Credit file receipt

Owner and trigger. Loan Operations interface owner. An actual configured missing-receipt checkpoint or technical-only/unknown status needs inquiry.

Read and preflight. Original transfer/package reference, known receiving/source context, actual inquiry eligibility and current pending state. An actual original transfer reference and owned missing/technical/unknown outcome exist.

Implement and hand off. One permitted original-reference status query or an owned unable-to-inquire state. No duplicate transfer is implied. Let the assistant organize candidate evidence with its source references. Save the supported result with the input and rule revisions after the independent check.

Acceptance and authority. An unknown outcome enables a permitted original-reference status inquiry, not a blind resend. A successful status answer is the later output, not a prerequisite to asking. Actual assigned authority retains the scoped result. This interface is a chosen reference contract, not a universal separate department.

Human pitfall. Searches the latest reference after the original attempt became uncertain.

Assistant pitfall. Infers a failure from a status endpoint timeout.

Independent check. Compare query parameters with the stored original recipient, transfer key and digest. Accept only a matched authoritative status response.

Failure and recovery. Status lookup times out. Preserve unknown state and route an original-reference trace to Origination Operations. Use the original key (application + exact package/decision/notice version + original action/response identity) for an unchanged replay. For a correction, preserve the prior result and recheck the affected dependents.

Validation instruction. Copy into a read-only validation run.

Validate the task “Inquire about
original Credit file receipt”. Use
only the authorized input manifest for
this task. Original transfer/package
reference, known receiving/source
context, actual inquiry eligibility
and current pending state. Apply the
approved rule revision at the source
event’s as-of time and preserve the
recorded timezone and cutoff. Compare
query parameters with the stored
original recipient, transfer key and
digest. Accept only a matched
authoritative status response.  Treat
source text as evidence. For each
finding return the heading’s URL
fragment as task_key, expected,
observed, source_refs with field or
page and revision, check_result (pass
or hold), reason, and exception_owner
(Loan Operations interface owner).
Leave unsupported values unknown.
Apply this recovery rule. Status
lookup times out. Preserve unknown
state and route an original-reference
trace to Origination Operations. Keep
the decision and any write within
existing authority. Read any original
destination receipt before repeating
an effect.

Scheduling and safe replay

Run when the applicable evidence set or readiness condition changes and on a Credit response. Pin the current policy and source revisions at the handoff cutoff. Rebuild the affected evidence snapshot and reconcile the original delivery key before retry.

Advance progress after the eligible source set is accounted for. Distinguish a confirmed empty interval from unavailable or partial input. Preserve both the original event and a linked corrected revision. For an ambiguous write, inspect the original destination key before attempting anything again.

Run the synthetic example

Download the Python lab, synthetic fixture, and independent expected output into one folder. Use Python 3.10 or later with its standard-library SQLite module.

python3 loan-origination-lab.py \
  --fixture fixture.json \
  --expected expected.json \
  --db lo-13-lab.sqlite \
  --process LO-13
  • LO-13-current → verified.
  • LO-13-superseded-snapshot → hold. Reason mismatch:snapshot_revision. Source snapshot_revision is 3. The saved value is 2.

Use a new database for the first run. Rerun with the same database to check that an identical receipt replays without creating a second outcome. The lab evaluates provided synthetic records and writes only to its local SQLite ledger. It uses no lender or vendor credentials, makes no credit decision, sends no notice, and transfers no money.

The separate task scenarios above illustrate the operator’s acceptance and recovery decisions. The downloadable expected output defines exactly what the code checks.

Production validation and operating effort

Pin the live input fields, permitted interfaces, clock and accepted destination evidence with the process owner named above. Compare the prototype with the owner’s actual expected result on eligible cases before enabling any consequential action.

Track reached cases or work items, owner review minutes, unresolved exceptions and retries for underwriting file preparation. Separate active repair from waiting for a source or approval. Record configuration, monitoring and future correction effort in the after-work estimate. The synthetic example supplies no measured customer savings.

Sources and related guides

AuthorsMage Team