Skip to content
Ali Zarreh
Live demo Finance

Credit Decisioning

Adverse-action notices that are verified before anyone sends them.

A calibrated credit model, notices written by code from a reviewed template, an independent eight-check verifier proven by mutation testing, and a human who makes the call. A read-only AI analyst explains cases — and code checks every number it states.

mutation classes caught
14
genuine notices wrongly rejected (of 1,006)
0
AUROC, out-of-fold
0.780
analyst guardrail cases pass
19 / 19
Credit Decisioning review page showing the model's reasons and the eight notice-verification checks

Why it exists

In the United States, ECOA and Regulation B require a written notice with the principal reasons when credit is declined. “Insufficient score” is explicitly not enough, and the CFPB has said the duty is the same when a complex model makes the decision. In practice, two things go wrong:

  • Reasons drift from what the model used — after a template edit, a mapping change or a reviewer’s rewording.
  • Generated text adds things nobody checked — a wrong number, a promise, or a prohibited basis such as age or sex.

The applicant cannot contest a reason they were never given, and the lender carries the regulatory exposure. The project asks a practical question: how do you prove a regulated document is correct before it is sent?

How it works

  1. 01 Input Application
  2. 02 Model / AI Calibrated model probability of a bad outcome
  3. 03 Code Policy band & reasons derived from the cost matrix
  4. 04 Code Notice from template
  5. 05 Check Eight-check verifier independent implementation
  6. 06 Human Reviewer decides
In order · Model / AI Code Independent check Human

Every artifact has a producer and a separate check:

ArtifactProduced byChecked by
Probability of a bad outcomeCalibrated logistic regressionRepeated 5×5 cross-validation, bootstrap intervals, reliability curve
Approve / refer / decline bandCode, from the benchmark’s cost matrixUnit tests pin the derived (not tuned) threshold
Principal reasonsCode, from the model’s coefficientsAttributions must sum to the model’s log-odds difference
Notice textCode, from a reviewed templateEight deterministic verifier checks
Analyst answersA read-only LLM agentCode checks every number against tool results

A reviewer sees the model’s reasons, the verifier’s results and the drafted notice, then records the decision. The model’s recommendation stays on record even when the human overrides it.

The verifier is itself verified

The verifier is a second, independent implementation — it never calls the renderer. It checks that reasons match the derivation, that there are one to four of them, that none rests on a prohibited basis, that each states the applicant’s actual value, that the decision is consistent, that every number matches the application, that the legal text matches a pinned hash, and that each sentence is approved wording.

To prove those checks earn their place, a mutation suite applies 14 kinds of defect to every genuine notice and requires each one to fail its intended check. A meta-test then switches each of the eight checks off in turn and requires the gate to notice.

Results and honest limits

All figures come from one generated run (2026-10-29) on the benchmark’s 1,000 applicants with out-of-fold predictions.

  • Decision quality: expected cost of 0.541 per applicant (95% interval 0.488–0.598) against 0.70 for declining everyone — the right baseline, because declining a good applicant costs 1 and approving a bad one costs 5. AUROC is 0.780 (0.751–0.810).
  • Model choice: a boosted-tree challenger gained +0.012 AUROC with an interval that includes zero, so the simpler, explainable model was kept.
  • Verifier: every applicable mutant was caught across 1,006 genuine notices, no genuine notice was rejected, and all eight checks were detected when disabled.
  • Analyst agent: 19 of 19 scripted guardrail cases pass. A separate live run of 15 questions behaved correctly on all 15 after fixes, with one answer flagged for a real transcription error — a smoke test, not a rate.

Engineering decisions

  • No LLM on the decision path, enforced by an import contract rather than by convention.
  • The review workflow is a plain state machine with atomic claims — a double start or a stale page returns a conflict — and a verified-hash binding before a notice can be sent.
  • Reproducible by construction: pinned, hash-checked data, and a single command that retrains from scratch and requires the evidence to match.
  • Quality gates on every pull request: lint, strict typing, import contracts, 90%+ test coverage and an evaluation gate.

Who it’s for

For lenders and fintech teams, it shows an approach to regulated, explainable decisions where every outbound document is independently verified. For AI and risk leaders, it is a worked example of using mutation testing to prove that your safety checks actually catch failures.

All case studies
Cohort Risk & Review Lab home page showing the four-step flow from risk model to fairness audit to AI evidence agent to clinician decision
Live demo Healthcare

Cohort Risk & Review Lab

A calibrated risk model decides who is flagged, fairness is audited for every subgroup, an AI agent assembles the evidence, and a clinician makes every enrolment decision. It also reproduces how training on cost instead of illness burden skews who gets care.

  • Fairness & explainability
  • Agentic AI
  • Machine learning
Trade Surveillance Agent sample case: a synthetic Chief Financial Officer sale two days before earnings, with a research-prototype notice
Live demo Finance

Trade Surveillance Agent

An AI investigator for SEC Form 4 insider filings. It gathers evidence, drafts a finding, checks every claim against what it actually retrieved, and hands a clear, flag or escalate outcome to a human — while openly reporting where its accuracy still falls short.

  • Agentic AI
  • Evaluation & guardrails
DualLens Analytics financial dashboard comparing stock-price trends for GOOGL, MSFT, IBM, NVDA and AMZN
Live demo Finance

DualLens Analytics

An investment-research prototype that pairs Yahoo Finance metrics with AI-strategy insights retrieved from company reports through RAG. Every answer is scored for groundedness and relevance by an LLM judge, and companies can be compared and ranked on both lenses.

  • RAG & retrieval
  • Evaluation & guardrails

Open to consulting, advisory roles and select projects.

Building AI that has to be right?

I help teams design systems with verifiers, guardrails and human review built in from the start — not bolted on after the demo.

Search zarreh.ai