Developer fix request
A new rule that reads the appraisal date needs a field your agent may not send. The Developer gets a fix request naming it, and it closes when the field arrives.
Mortgage & Loan Processing · C# SDK
An underwriting agent can propose approval fast. Put the approval call behind the .NET SDK, send the loan figures it used, and your lender rules decide whether the approval goes through, waits for an underwriter, or stops.
veriproof is one client from Veriproof.FromEnvironment(), and reviews comes from ReviewsAsync. The Profile names a review form set up in the portal.
C# · Veriproof.Sdk.Core
using Veriproof.Sdk.Core;
var result = await veriproof.GovernAsync(
"loan.approve",
loanFile,
(context, cancellationToken) =>
los.ApproveAsync(context.Input, context.IdempotencyKey, cancellationToken),
new GovernOptions
{
Facts = new Dictionary<string, object?>
{
["credit_score"] = loanFile.CreditScore,
["loan_amount"] = terms.LoanAmount,
["ltv_ratio"] = terms.LtvRatio,
["monthly_dti"] = terms.MonthlyDti,
["loan_purpose"] = loanFile.LoanPurpose,
["occupancy_type"] = loanFile.OccupancyType,
["undisclosed_gift_funds"] = findings.UndisclosedGiftFunds,
["undisclosed_seller_concessions"] = findings.UndisclosedSellerConcessions,
},
Review = new GovernReviewOptions
{
Profile = "loan-approval-review",
ProposedActionSummary = "Approve the loan on the terms shown.",
},
});
await reviews.SaveIfRequiredAsync(result);SaveIfRequiredAsync stores the checkpoint only when a rule asked for review. When the underwriter answers, a worker calls ResumeAsync and the approval runs with their response attached.
Why C# here: Many loan origination platforms and their extensions run on .NET, so the check lives next to the code that updates the file.
Your app calculates the loan figures. Send the results so the rule and the underwriter see the same numbers the agent did.
| Fact | What it holds |
|---|---|
credit_score | The score the agent used. |
loan_amount | Purchase price less the down payment. |
ltv_ratio | Loan amount divided by purchase price. |
monthly_dti | Monthly debt divided by monthly income. |
loan_purpose | purchase, refinance, cash_out_refinance, or home_equity. |
occupancy_type | primary_residence, second_home, or investment_property. |
undisclosed_gift_funds | True when gift funds appear that the borrower didn’t disclose. |
undisclosed_seller_concessions | True when seller concessions appear that weren’t disclosed. |
These three borrowers are the simulator’s sample files. Run loan simulator
When: Jordan’s file clears the lender’s rules.
Your code: ApproveAsync runs, and the decision is recorded with the rule version that allowed it.
Who picks it up: The Business Owner sees approvals moving. Auditors read the record inside an engagement.
When: Morgan’s debt share is above the automatic approval limit.
Your code: The approval waits. The underwriter gets the loan figures and the choices available to them.
Who picks it up: The named underwriter, in the VeriProof Inbox, by email, or in Slack or Microsoft Teams, with reminders and escalation.
When: Taylor’s credit score is below the lender’s minimum of 680, and the agent proposed approval anyway.
Your code: The status is Blocked. ApproveAsync never runs, and the file stays where it was.
Who picks it up: The Governance Engineer sees the rule and version that stopped it.
The simulator’s app has its own minimum credit score of 620, and the lender’s rule sits at 680. The record keeps the app’s decision, the rule check, and the final outcome as separate facts, so nobody has to guess which limit applied.
Developer fix request
A new rule that reads the appraisal date needs a field your agent may not send. The Developer gets a fix request naming it, and it closes when the field arrives.
Changing the rule
Raising the credit floor from 680 to 700 can run in Shadow against live loan files first, showing what would have changed. Because the agent is in production, a compliance officer or administrator approves the engineer’s change before it enforces.
For your business owner
The mortgage page explains what the agent can take on and how its decisions are defended.
Read the mortgage business caseDocs
Install Veriproof.Sdk.Core, configure the key, and look up industry values for Mortgage & Loan Processing.
Open the demo portal as a reviewer, then as a Governance Engineer, and follow one loan approval through both.