Deterministic credit decisions, with the ECOA reasons already written
The LLM drafts; deterministic code decides. VasperaMesh’s credit-decision gate takes the assembled decision and its factors, derives the ECOA / Reg B principal reason codes deterministically, and generates the Regulation B §1002.9 adverse-action notice from the recorded row — reproducible offline, never “the model said so.”
The decision leaves the model
Deterministic code — not the LLM — renders the verdict over the recorded factors. The decision of record is the gate’s, versioned against the policy in force.
Specific principal reasons
ECOA 15 U.S.C. 1691(d) / Reg B 12 CFR 1002.9(b)(2) require the specific reasons for denial. “Failed a score,” “internal policy,” and “too complex to explain” are insufficient — so the reason codes are a deterministic output, reproducible from the row.
Governance evidence, provable
One-click evidence packs map to Fannie Mae LL-2026-04, Freddie Mac Bulletin 2025-16, and ECOA / Reg B — every control backed by the hash-chained, externally-anchored ledger, not self-attestation.
What the credit-decision gate does
The gate validates the decision against policy thresholds and derives the principal reasons for any adverse action. The block is reserved for the unexplainable denial and the out-of-policy approval.
| Decision | Factors | Verdict |
|---|---|---|
| APPROVE | all factors in policy | pass |
| APPROVE | a factor out of policy | escalate |
| DENY | ≥1 factor explains it | pass + reason codes |
| DENY | no factor out of policy | hold |
| REFER | — | escalate |
Under enforcing mode a hold or escalate is blocked before it executes — inline on the proxy (a 409 instead of the model output) or via the direct enforce endpoint — and queued for a human. Start in shadow, graduate one workflow at a time.
The adverse-action notice writes itself
For an explainable denial, the Regulation B §1002.9 notice is generated from the recorded ledger row — every field reproducible, none authored by the model.
After reviewing your application for credit, we are unable to approve it at this time. The specific principal reason(s) for this decision are:
- Credit score too low (SCORE_LOW)
- Excessive obligations in relation to income (DTI_EXCESSIVE)
Reasons derived deterministically from the recorded decision by the governing policy gate; reproducible from the tamper-evident ledger row — 12 CFR 1002.9(b)(2); 15 U.S.C. 1691(d).
Inside the product, every denial that carries reason codes links straight to its notice for review, print, or export.
Bring your underwriting agent under deterministic control
Connect in one line with OpenTelemetry or the gateway, author a lending policy, and start in shadow mode — no risk to production.