Loan decisioning software that plugs into your LOS.
Encode your credit policy in visual decision tables, evaluate every application in milliseconds, and return approve, decline, or refer with the exact rules that fired. Keep your loan origination system; GoRules replaces the hard-coded logic inside it.
From decline to counteroffer, start to finish.
Watch a morning in a lending team: a strong borrower declined on payment math, a one-cell policy change, a replay over 2,140 declined applications, a signed release - and declines that come back as offers.
0.46DTI at 36 mo · cap 0.43 income verified · $7,100 / mo
Existing debt$1,890 / mo
Payment · 36 mo$912
Payment · 60 mo$598
DTI 0.46cap 0.43
Application
Requested$28,000 · 36 mo
PurposeHome improvement
ChannelWeb
Submittedtoday · 09:41
Decided bypolicy v3.6.4 · declined
declined by policy · fits at a longer term - open in GoRules to see why
Lending policy
Affordability rules for personal lending. Evaluated top-down on every application - first match decides.
DTI · requested termDTI · best termDecisionTerm
1at most0.43ApproveAs requested
2more than0.43at most0.43DeclineCounterofferLongest that fits
3OtherwiseDecline-
+
was Decline · approvals untouched · edited by Head of Lending
1 unsaved changeRun testsRequest review
Quality checks0 declines replayed
Over cap at 36 mo, fits at 60, counterofferswas: decline
Affordable at requested term still approvesunchanged
Over cap at every term still declinesguardrail
Knockouts and score floor untouchedok
All checks passed · +0 counteroffers created · 0 extra approvals
Release v3.7.0
v3.7.0draftPriya Shah · just now · over-cap decline → counteroffer
PS
Priya ShahHead of Risk
pending
developmentv3.7.0 deploying
stagingv3.6.4 live
productionv3.6.4 live
Live in production - every new application now decides against v3.7.0, and this week's affordability declines re-evaluate automatically.
full diff + approval recorded · one-click rollback
Thursday, 09:41
A strong application lands.
LN-3092: personal loan, $28,000 over 36 months, income verified, clean file. The payment math is about to decline it.
The case file
Strong borrower. Declined anyway.
At 36 months the payment is $912 and DTI hits 0.46 - over the 0.43 cap. At 60 months it would be 0.41. The policy has no way to say so.
One cell
Decline becomes counteroffer.
The failing rule opens the live policy. On a branch, over-cap applications that fit at a longer term now counteroffer instead of declining - approvals untouched.
Proof before production
2,140 declines re-run.
Ninety days of declined applications replay against the draft while you watch: 312 come back as counteroffers, zero extra approvals, over-cap-at-every-term still declines.
Sign-off
Risk approves. v3.7.0 ships.
Priya Shah signs the release, it promotes through staging to production with the full trail recorded. Rollback stays one click away.
Same morning
Declines come back as offers.
LN-3092 flips to a counteroffer: $28,000 over 60 months. Across the queue, affordability declines convert - except the one over cap at every term.
Three places to look. Zero straight answers.
Ask where loan decisioning happens in your stack and you will usually get three answers at once: rules hard-coded inside the LOS, a spreadsheet the credit team maintains, and a vendor scorecard nobody can inspect. Loan decisioning software is supposed to put that logic in one governed place; most lenders never get there. So changing a score floor or a DTI cap means a ticket, an engineering sprint, and a release window - a policy change that should take an afternoon stretches into weeks.
The fix the market offers is worse than the problem. Loan origination software vendors sell better decisioning as the reason to migrate everything, application intake, documents, verification, and funding included, onto their platform. That is a rip-and-replace project to solve what is really a rules problem.
Meanwhile the questions that matter go unanswered. Why did this application decline, specifically? What happens to the approval rate if we tighten the DTI cap to 43%? Who changed the pricing grid last quarter, and who approved it?
When the answers live in code and tribal knowledge, every exam, audit, and policy review is slower and riskier than it needs to be.
LOS-2117Counteroffer longer term instead of decliningQ3 roadmap · blocked on LOS vendor
one policy · three owners · release windows apply
The decisions inside your origination flow.
GoRules is the loan-specific application of our credit decision engine: application in, priced decision out, every step readable.
01
One pipeline from application to decision
Model the whole decision as a graph. Knockout rules run first as a decision table: state eligibility, minimum score, bankruptcy recency, fraud flags. Affordability follows, with DTI and residual-income calculations written in ZEN expressions or typed TypeScript function nodes, then a pricing grid maps score band and DTI to APR. The result is one structured decision: approve with stipulations, counteroffer, decline with reasons, or refer to review.
02
Automate loan underwriting, route the judgment calls
Clear approvals and clear declines go straight through. Borderline applications route to a human underwriter with the triggering rules attached, so reviewers see exactly why the case referred instead of re-working it from scratch. Conditional approvals carry their stipulations, such as proof of income or employment verification, in the decision payload your LOS consumes.
03
Your credit policy without release cycles
Credit and risk teams edit decision tables directly, and natural-language rendering makes each rule read the way the policy document does. Git-like versioning, approval workflows, and one-click rollback mean risk signs off before anything reaches production. Run a change through the simulator with real application data before it ships.
Keep the LOS. Upgrade the brain.
No data migration: the LOS keeps owning applications, documents, and funding. GoRules owns the decisions inside that workflow.
01
Connect
Call GoRules over REST from your LOS or point-of-sale flow, or embed the MIT-licensed open-source ZEN Engine in your own service with SDKs for Node.js, Python, Java, Go, C#, and Rust.
02
Model
Rebuild your policy as decision tables and graphs: knockout screens, affordability math, pricing tiers. Bureau attributes, bank transaction data, and scorecard or ML model outputs enter as plain inputs, so the final decision stays deterministic and reviewable even when a score is not.
03
Test and promote
Branch a change, test it in the simulator with real application data, and trace execution through every node. Promote through dev, staging, and prod with an approval recorded at each step.
04
Operate
Every evaluation returns the outcome plus the exact rules that fired, ready to feed your adverse action process. Iterate weekly instead of quarterly, and roll back in one click if a change misbehaves.
Built for production, not proof of concept.
Sub-millisecond evaluation embedded, milliseconds over REST: fast enough for instant prequalification at point of sale
Git-like versioning with approval workflows, one-click rollback, and separate dev, staging, and prod environments
Self-host with Docker or Kubernetes so applicant PII and bureau data never leave your infrastructure, or run on GoRules Cloud
Full traceability: every decision links to the rules that fired, and every rule change records who changed what and when. SSO, RBAC, and SOC 2
No lock-in: the core engine is open source under MIT with a Rust core, and 70+ industry templates, including loan approval, give you a working starting point
Questions, answered.
What is loan decisioning software?
Loan decisioning software evaluates a loan application against a lender's credit rules and returns approve, decline, or refer to review, with the specific reasons, in real time. It is the decision layer of origination: the LOS manages intake, documents, and funding, while the decisioning engine determines who qualifies, on what terms, and why.
Does GoRules replace our LOS?
No. A loan origination system (LOS) runs the pre-funding workflow: application intake, document collection, verification, e-sign, and disbursement. GoRules handles only the decisions inside that workflow, from instant prequalification to full loan underwriting, and your LOS calls it over REST wherever a decision is needed.
How does GoRules help with decline reasons and adverse action notices?
Every decision returns the exact rules that fired, so a decline arrives with its specific principal reasons rather than an opaque score. You map those reasons to the language in your adverse action notices under ECOA and FCRA. GoRules supplies the traceability; the compliance obligations and notice content remain yours.
Can our credit team change lending rules without an engineering release?
Yes. Decision tables are edited visually, natural-language rendering keeps them readable for business users, and GoRules AI can draft rule changes, run tests, and explain decisions. Every change goes through approval workflows and versioned promotion, so nothing reaches production without sign-off, and any change rolls back in one click.
Can we self-host so applicant and bureau data stay in our infrastructure?
Yes. Deploy GoRules with Docker or Kubernetes inside your own environment, so applications, bureau attributes, and decision logs never leave your network. SSO and role-based access control govern who can view or change rules. GoRules Cloud is available if you prefer managed hosting.
The same engine, next door.
One decision layer serves the whole institution - these use cases run on the same tables, versioning, and audit trail.