How to automate personal loan pricing controls

TLDR

Release a versioned pricing schedule after the offer and decisioning systems return the approved rates and fees for the same eligible inputs.

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

When is a new rate and fee schedule ready for live offers?

Pricing approves schedule P-5. Decisioning returns P-5, but the offer readback still uses P-4 fees for the same inputs. Hold affected offers until Pricing reconciles the authorized schedule across both systems.

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. An approved pricing review or material change in funding, risk or product terms occurs.

Owner and accepted result. Product and Credit Pricing. Release a versioned pricing schedule after the offer and decisioning systems return the approved rates and fees for the same eligible inputs.

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. The analyst applies the funding cost for a different risk segment. Assistant pitfall. The model rounds a rate beyond the approved ceiling and explains it as a harmless rounding difference.

Release check. Match product, segment and effective period to the approved assumptions and compare proposed rate and fee to the governing bounds using the declared units. A segment's proposed fee exceeds its ceiling. Hold that price and send the source row and difference to the pricing owner.

Tasks and validation instructions

Develop the pricing schedule

Owner and trigger. Pricing analyst. An approved pricing review or material change in funding, risk or product terms occurs.

Read and preflight. Use product limits and approved risk and funding assumptions. The selected product boundaries and applicable approved risk/funding assumptions are available for a scoped pricing proposal.

Implement and hand off. Produce proposed rates and fees by eligible product and segment. 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. Each price is supported by the governing limits and approved assumptions. Refer unsupported prices to the pricing owner.

Human pitfall. The analyst applies the funding cost for a different risk segment.

Assistant pitfall. The model rounds a rate beyond the approved ceiling and explains it as a harmless rounding difference.

Independent check. Match product, segment and effective period to the approved assumptions and compare proposed rate and fee to the governing bounds using the declared units.

Failure and recovery. A segment's proposed fee exceeds its ceiling. Hold that price and send the source row and difference to the pricing owner. Use the original key (control work item + product/campaign/pricing version + actual event 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 “Develop the pricing
schedule”. Use only the authorized
input manifest for this task. Use
product limits and approved risk and
funding assumptions. Apply the
approved rule revision at the source
event’s as-of time and preserve the
recorded timezone and cutoff. Match
product, segment and effective period
to the approved assumptions and
compare proposed rate and fee to the
governing bounds using the declared
units.  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
(Pricing analyst). Leave unsupported
values unknown. Apply this recovery
rule. A segment's proposed fee exceeds
its ceiling. Hold that price and send
the source row and difference to the
pricing owner. 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 · Approve and release the definition · Review and approve the pricing schedule

Review and approve the pricing schedule

Owner and trigger. Credit or Product pricing authority. An approved pricing review or material change in funding, risk or product terms occurs.

Read and preflight. Use proposed prices and requested deviations. An identifiable proposed pricing schedule and delegated review authority are available. Proposed prices need not already be approved.

Implement and hand off. Produce an approved schedule or a reasoned rejection. 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. The approver acts within delegated authority. Escalate out of limit requests.

Human pitfall. A pricing reviewer signs off on a deviation beyond their delegation limit.

Assistant pitfall. The agent carries an approval from a similarly named schedule onto a new schedule.

Independent check. Join the approval's schedule revision and deviation amount to the current delegation record for that approver, product and effective time.

Failure and recovery. The deviation exceeds the signer's limit. Reject that approval for publication and route the request to the authorized pricing approver. Use the original key (control work item + product/campaign/pricing version + actual event 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 “Review and approve
the pricing schedule”. Use only the
authorized input manifest for this
task. Use proposed prices and
requested deviations. Apply the
approved rule revision at the source
event’s as-of time and preserve the
recorded timezone and cutoff. Join the
approval's schedule revision and
deviation amount to the current
delegation record for that approver,
product and effective time.  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
(Credit or Product pricing authority).
Leave unsupported values unknown.
Apply this recovery rule. The
deviation exceeds the signer's limit.
Reject that approval for publication
and route the request to the
authorized pricing approver. 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 · Develop the pricing schedule · Publish and verify prices

Publish and verify prices

Owner and trigger. Product operations. An approved pricing review or material change in funding, risk or product terms occurs.

Read and preflight. Use the authorized schedule and effective date. The exact schedule has actual required approval and a current authorized publication/effective-date scope.

Implement and hand off. Release consistent prices to decisioning and offer systems. 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. APR and fee calculations agree with applicable approved terms. Correct mismatched versions before affected offers are issued.

Human pitfall. An operator updates the decision engine but leaves the offer system on the old fee version.

Assistant pitfall. The agent treats two successful API requests as proof both systems use the schedule.

Independent check. Read back both destinations at the effective cutoff; compare schedule revision, rates, fees and recomputed APR for the same controlled inputs to the approved terms.

Failure and recovery. The offer system returns the old fee schedule. Hold affected offers and have Pricing republish and reconcile that destination. Use the original key (control work item + product/campaign/pricing version + actual event 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 “Publish and verify
prices”. Use only the authorized input
manifest for this task. Use the
authorized schedule and effective
date. Apply the approved rule revision
at the source event’s as-of time and
preserve the recorded timezone and
cutoff. Read back both destinations at
the effective cutoff; compare schedule
revision, rates, fees and recomputed
APR for the same controlled inputs to
the approved terms.  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 (Product
operations). Leave unsupported values
unknown. Apply this recovery rule. The
offer system returns the old fee
schedule. Hold affected offers and
have Pricing republish and reconcile
that destination. 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 · Review and approve the pricing schedule · Configure the campaign

Scheduling and safe replay

Run on approved schedule release and after each destination update or correction. Use the schedule's effective timestamp and product/segment rules for readback. Recheck only the affected destinations under the same publication key.

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-02-lab.sqlite \
  --process LO-02
  • LO-02-current → verified.
  • LO-02-wrong-apr-units → hold. Reason mismatch:apr_bps. Source apr_bps is 1690. The saved value is 169.

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 loan pricing management. 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