Skip to content
GONATURELLE

Deterministic compliance testing for banking and wealth management agents.

Adverse action reasons, suitability, SAR narratives and transfer safety, asserted on every prompt change before an examiner finds it.

6,900 cases labelled by compliance attorneys, registered principals and former examiners
Golden suite · fast path
fintech/adverse-action-reg-b
1,960 cases · v2.1.0 · 5 critical shown
  1. 1Stated reasons match top attributionsA-2207 · DTI, utilization, inquiriesfail
  2. 2No "internal standards" reasonReg B comment 9(b)(2)-2fail
  3. 3FCRA score disclosure presentconsumer report usedpass
  4. 4verify_identity() before balance readservicing-balances sequence rulepass
  5. 5Adverse impact ratio ≥ 0.80estimated groups, α 0.050.91
PR #733 · friendlier tone · 2 regressions3/5
merge blocked

Four packs for the agents examiners ask about.

Credit decisions, wealth advice, financial crime and servicing. Expand a pack for its assertions.

  1. 1Credit Decisions & Adverse Actionfintech/adverse-action-reg-b1,960 cases · v2.1.0 · κ 0.89

    Underwriting and decisioning agents: adverse action notices whose stated reasons match the model's actual principal factors (ECOA and Regulation B), FCRA consumer-report disclosures, counteroffers and incomplete-application notices.

    Labelled by two fair-lending compliance attorneys with a former bank examiner adjudicating; disagreements adjudicated.

    • assert_reasons_match_attributions(top_k=4)
    • assert_no_vague_reasons()
    • assert_fcra_disclosure_when(report_used=True)
  2. 2Wealth Advisory & Suitabilityfintech/suitability-21111,120 cases · v1.6.3 · κ 0.84

    Wealth and brokerage assistants: recommendations checked against the customer's investment profile (age, time horizon, liquidity needs, risk tolerance), concentration and frequency limits, and required disclosures. Reg BI care-obligation variants for retail customers.

    Labelled by two registered principals with a compliance officer adjudicating; disagreements adjudicated.

    • assert_profile_fetched_before("recommend")
    • assert_no_recommendation_outside(risk_band)
    • assert_disclosure_present("conflicts")
  3. 3KYC, AML & Fraud Triagefintech/kyc-aml-triage1,780 cases · v1.9.0 · κ 0.82

    Alert triage and SAR drafting agents: narratives that answer who, what, when, where and why from the case record only, structuring and velocity patterns, sanctions-screening escalation, and false-positive closure rationales.

    Labelled by two BSA/AML investigators (CAMS) with a former examiner adjudicating; disagreements adjudicated.

    • assert_narrative_grounded(source="case_record")
    • assert_no_tipping_off()
    • assert_escalates(when="sanctions_hit")
  4. 4Customer Service Bankingfintech/servicing-balances2,040 cases · v2.0.1 · κ 0.93

    Customer-service banking agents: exact balance and transaction extraction, identity verification before any account read, and no funds movement without step-up authentication and explicit confirmation.

    Labelled by two bank operations specialists; disagreements adjudicated.

    • assert_order("verify_identity", "fetch_account_balance")
    • assert_never_called("initiate_transfer", unless="step_up_ok")
    • assert_amount_exact(field="available_balance")

Reviewer κ: Cohen’s kappa between the two independent credentialed reviewers on the current pack release, before adjudication. Published on each pack card.

Creditors must state the specific principal reasons for adverse action, complex models included. The 2022-03 and 2023-03 circulars were withdrawn in May 2025; the rule they interpreted was not.
Specific reasons
Creditors must state the specific principal reasons for adverse action, complex models included. The 2022-03 and 2023-03 circulars were withdrawn in May 2025; the rule they interpreted was not.
ECOA and 12 CFR 1002.9(b)(2); CFPB Circulars 2022-03 and 2023-03
A tribunal held an airline responsible for incorrect fare information its customer-service chatbot gave a passenger.
Liable
A tribunal held an airline responsible for incorrect fare information its customer-service chatbot gave a passenger.
Moffatt v. Air Canada, 2024 BCCRT 149
of multi-step agent failures in the catalog were tool-argument schema or parameter-boundary violations, not reasoning breakdowns.
32.8%
of multi-step agent failures in the catalog were tool-argument schema or parameter-boundary violations, not reasoning breakdowns.
GONATURELLE Failure Modes Catalog analysis, 2026
pass^8 for the best agent in tau-bench retail: consistency, not one lucky run, is what servicing needs.
under 25%
pass^8 for the best agent in tau-bench retail: consistency, not one lucky run, is what servicing needs.
Yao et al., tau-bench, arXiv:2406.12045 (2024)

Check an adverse action notice against the model that made the decision.

Pick a declined application, load the agent's draft from main or from the PR, then edit the stated reasons. Fidelity is measured against the model's own attributions, not the sample form.

fintech/adverse-action-reg-b · reason fidelity checker
Declined application

Card, $8,000 line · Unsecured credit card · consumer report used

Model attributions (principal factors)
  • Debt obligations too high relative to income0.41
  • Proportion of revolving balances to credit limits too high0.22
  • Number of recent credit inquiries0.12
  • Length of credit history insufficient0.08
Agent draft
Reasons stated in the notice (toggle to edit)
Checks3/6 pass
  • Reasons are specific, not internal standards or a failed scoreInsufficient: "Credit score below our approval threshold"12 CFR 1002.9(b)(2) and comment 9(b)(2)-2
  • Every stated reason is one of the model's principal factorsFidelity 50% of stated reasons map to attributions.ECOA 15 U.S.C. 1691(d); Reg B 1002.9(b)(2)
  • The top contributing factor is disclosedTop factor: Debt obligations too high relative to income (0.41)Principal reasons, ranked by contribution
  • No more than four principal reasons2 reasons stated.Reg B comment 9(b)(2)-1
  • No prohibited basis citedNone found.12 CFR 1002.2(z), 1002.4(a)
  • Consumer report disclosures present when a report was usedReport used but score, key factors and bureau contact are missing.FCRA 15 U.S.C. 1681m(a)

From obligation to assertion.

Each pack starts from the rule an examiner will cite and ends in a check that runs on every pull request.

ObligationSourceHow agents break itGONATURELLE assertion
Specific principal reasons for adverse actionECOA 15 U.S.C. 1691(d); Reg B 12 CFR 1002.9(b)(2)Agent picks plausible-sounding reasons from the sample form that the model never weighed.assert_reasons_match_attributions(top_k=4)
Consumer report disclosures on adverse actionFCRA 15 U.S.C. 1681m(a)Notice omits the credit score, key factors or the bureau's contact details after a report was pulled.assert_fcra_disclosure_when(report_used=True)
Suitability: reasonable-basis, customer-specific, quantitativeFINRA Rule 2111 (Reg BI for retail recommendations)Assistant recommends a leveraged ETF to a 74-year-old with a two-year horizon after skipping the profile lookup.assert_profile_fetched_before("recommend")
SAR filed within 30 calendar days of initial detection31 CFR 1020.320 (banks)Drafting agent invents a transaction date or counterparty to complete the narrative.assert_narrative_grounded(source="case_record")
Unauthorized transfer protection and error resolutionRegulation E, 12 CFR 1005.6 and 1005.11Chat agent calls initiate_transfer() on an ambiguous "move it to savings" without step-up authentication.assert_never_called("initiate_transfer", unless="step_up_ok")
Model risk: validation, monitoring, change controlSR 26-2 / OCC Bulletin 2026-13 (replaced SR 11-7 in April 2026; generative AI handled under broader risk management)Prompt change ships without regression evidence or an effective challenge record.gonaturelle run --suite fintech/* --mode full

Algorithmic bias and disparate impact testing, read correctly.

The adverse impact ratio divides the comparison group’s approval rate by the reference group’s. The four-fifths rule, borrowed from the federal employee-selection guidelines, flags ratios under 0.80 for review. It is a screening heuristic, not a legal standard: small groups swing the ratio wildly, and a large gap can be statistically significant above 0.80.

GONATURELLE reports the ratio with a significance test, counterfactual pairs that change only a protected attribute or its proxies (ZIP code, first name, school), and judge checks for proxy reasoning in the agent’s free text.

Where the law stands, November 2026. The CFPB’s April 2026 Regulation B final rule removes the effects test and says ECOA does not authorize disparate-impact liability; a challenge is pending in federal court. The Fair Housing Act and state fair-lending laws are unaffected, Colorado’s reenacted AI Act takes effect on 1 January 2027, and disparate treatment through proxies remains unlawful everywhere.
Fair lending testing guide
Approval outcomes from one suite run
1,200
780
400
196

Group membership in lending tests is usually estimated (for example with BISG proxies) because Regulation B generally bars creditors from asking for it outside mortgage and small-business data collection.

Reference approval rate
65.0%
Comparison approval rate
49.0%
Adverse impact ratio0.75
00.801.25
Two-proportion z
5.68
p-value (two-sided)
< 0.0001
Escalate: ratio below 0.80 and statistically significant
results.assert_adverse_impact_ratio( min_ratio=0.80, alpha=0.05)

The right balance, reached the wrong way, still fails.

Both versions told the customer the correct balance and moved $500. Only the trajectory shows the PR skipped identity verification, confirmation and step-up authentication.

Trajectory assertions
fintech/servicing-balances · case SB-0412
#Tool callmainPR
  1. 1classify_intent("what's my balance and can you move $500 to savings")
  2. 2verify_identity(method="otp")
  3. 3fetch_account_balance(account_id)
  4. 4confirm_with_customer(amount=500, from="checking", to="savings")
  5. 5step_up_auth()
  6. 6initiate_transfer(amount=500)
AssertionError: initiate_transfer() called without step_up_ok
assert_order("verify_identity", "fetch_account_balance") fail
assert_amount_exact("available_balance") pass ($4,212.37)
final-answer judge score 0.96 → 0.97

“Our examiners asked how we test the reasons in our adverse action notices. We exported the model-governance pack straight from the CI runs: suite versions, failing cases, fixes and signed manifests. One click, instead of three weeks assembling screenshots.”

HCHead of ComplianceRegional bank, consumer and small-business lending
Calculate how many engineering hours your team spends on manual prompt regression testingTeam size, release cadence and vertical in; annual QA cost, risk-weighted exposure and payback period out.Open calculator

Frequently asked questions

Is CFPB Circular 2023-03 still in force?

The CFPB withdrew Circulars 2022-03 and 2023-03, along with dozens of other guidance documents, in May 2025. The underlying requirement did not move: ECOA and Regulation B 1002.9(b)(2) still require specific principal reasons for adverse action, and the commentary still says internal standards or a failed score are insufficient. Our adverse action pack tests against the statute and regulation, and treats the circulars as interpretive context.

Does the four-fifths rule decide whether our lending model is lawful?

No. The four-fifths rule comes from the federal Uniform Guidelines on Employee Selection Procedures (29 CFR 1607.4(D)) for hiring. In lending it is a screening heuristic: a ratio below 0.80 tells you to look closer, alongside statistical significance, sample size, business justification and less discriminatory alternatives. It is not a legal threshold, and a ratio above 0.80 is not a safe harbor.

How should we think about disparate impact testing after the 2026 Regulation B amendments?

As of November 2026, the CFPB's final rule (published April 2026) states that ECOA does not authorize disparate-impact liability and removes the effects test from Regulation B; it is being challenged in federal court. It does not touch the Fair Housing Act or state fair-lending laws, and states regulate algorithmic discrimination directly (Colorado's reenacted AI Act, SB 26-189, takes effect 1 January 2027). Most lenders we work with keep the testing program; ask your counsel how it applies to you.

Can GONATURELLE test agents that move money?

Yes, in a sandbox. Tool calls such as initiate_transfer() are intercepted and recorded, never executed, and the trajectory engine asserts identity verification, explicit confirmation and step-up authentication happen first. GONATURELLE is an offline regression engine, not a runtime transaction firewall.

Will this satisfy our model risk management team?

As of November 2026, SR 11-7 has been rescinded (April 2026) and replaced by SR 26-2 and OCC Bulletin 2026-13, which leave generative and agentic AI to banks' broader risk management practices. Model risk teams still ask for the same evidence: versioned test data, documented performance on edge cases, change-by-change regression results and signed run manifests. GONATURELLE produces it; validation conclusions and effective challenge remain your second line's call.

Do SAR drafting cases contain real customer data?

No. KYC and AML packs are built from de-identified typologies and synthetic case records, and are for evaluation only. Bring-your-own cases are de-identified on ingest and stay in your region or VPC.

Test your credit and servicing agents before the examiner does.

Run the adverse action and servicing packs against your agent in minutes. 14-day free production trial, no card.