Fair Lending-Compliant AI Credit Decisions
Lenders must make fast credit decisions while meeting ECOA/FCRA adverse action notice requirements and proving decisions are not discriminatory.
The problem
When an AI model scores a credit application, Corules validates the decision against underwriting policy before it is rendered. Approved applications proceed. Denied applications automatically generate specific adverse action reasons citing the exact factors that failed (debt-to-income ratio, credit score threshold, employment verification). Every decision is replayable for regulatory examination.
Without deterministic enforcement, AI agents either block every edge case (adding manual overhead) or silently approve decisions that violate policy — with no audit trail to show auditors or regulators.
How Corules solves it
Corules sits between your AI agent and the action it wants to take. When the agent proposes a decision, Corules evaluates the full context against your compiled policy set in a single deterministic pass — no LLM, no ambiguity.
The result is a structured outcome: BLOCK — DTI ratio 52% exceeds max_dti = 43%. Adverse action reason: debt-to-income ratio.
Decision outcome: BLOCK
DTI ratio 52% exceeds max_dti = 43%. Adverse action reason: debt-to-income ratio.
Policy example
Corules policies are written in CEL (Common Expression Language). They are compiled once at publish time and evaluated deterministically at request time — no LLM, no variability.
// Credit decision policy (CEL)
context.credit_score >= params.min_credit_score
&& context.dti_ratio <= params.max_dti
&& context.employment_verified == true
&& context.loan_amount <= params.max_loan_by_tier[context.applicant_tier]This expression is evaluated against the structured context your agent sends in the /v1/validate request.
Integration options
Corules integrates with the tools your teams already use. All integrations call the same REST API or MCP server — your policy logic stays in one place.
Frequently Asked Questions
How does this help with ECOA adverse action requirements?
Every BLOCK decision returns specific reason codes that map directly to required adverse action notice language. The reasons cite the actual policy factor that failed, satisfying regulatory requirements.
Can decisions be replayed for regulatory examination?
Yes. Every decision stores a normalized input hash and policy version. The exact decision can be reproduced at any future point for audit or dispute.
Does Corules detect discriminatory patterns?
Corules enforces policy deterministically. Disparate impact analysis (segmenting outcomes by protected class) is a separate reporting layer built on audit log data.
Ready to enforce this policy?
Start free — evaluate up to 1,000 decisions per month with no credit card required.
Get started free