Back to portfolio
Workflow Automation · Finance

Disputes Analysis

Reg E Bank Dispute Triage & Resolution Workflow

Fragmented manual dispute handling → AI routes, investigates, and decisions debit card, ATM, and ACH disputes under Regulation E → analysts get a structured case outcome with documented reasoning, not a blank screen.

01The Problem

Financial institutions processing consumer disputes under Regulation E face a branching, rule-dense process where the correct path depends on dispute type, transaction characteristics, card status, timing, and fraud signals — all evaluated simultaneously. Without automation, analysts must hold the entire decision tree in their heads, apply it consistently across high volumes, and document their reasoning for regulatory retention. The cost of inconsistency is regulatory exposure; the cost of slowness is provisional credit sitting on the books longer than necessary.

02What the AI Does

Routing & Classification: Classifies incoming disputes into three tracks: debit card fraud, ATM dispute, or ACH dispute Within each track, applies sub-routing logic (ATM subtypes: unauthorized withdrawal, short dispense, missing check, missing cash; ACH direction: credit vs. debit, consumer vs. commercial, age of transaction) Investigation (LLM-assisted): Initial Triage (Claude Haiku): Screens debit card fraud claims for obvious invalidity — authorized-use patterns, prior dispute history, merchant refunds already issued, customer callbacks recognizing the transaction Reg E Investigation (Claude Sonnet): Full compliance investigation — evaluates authorization, consumer liability calculation based on reporting timing ($50/$500/unlimited tiers), recommended action ATM Investigation (Claude Haiku): Evaluates dispute rights by subtype — counterfeit/stolen card scenarios, audit report review for short dispense, third-party coordination flags ACH Investigation (Claude Haiku): Evaluates Reg E coverage, return code selection (R05, R10, R11, R29, R31), WSUD requirements, ODFI proof-of-authorization handling Decision & Credit Processing: Provisional credit assessment: tiers transactions by amount (<$25 no chargeback, ≤$2,500 auto chargeback, >$2,500 manual review) Chargeback rights check and routing to auto vs. manual chargeback processing Final credit calculation with consumer liability applied Claim denial with provisional credit reversal ACH return submission with return code Record Retention: Terminal node confirms 2-year retention per Reg E and generates final case summary Models: Claude Haiku 4.5 (triage, ATM, ACH investigations), Claude Sonnet 4.5 (full Reg E investigation)

03Design Decisions

01 · Choice

Separate router nodes for dispute type, ATM subtype, and ACH coverage — each a distinct node with explicit port logic — rather than a single large prompt handling all cases

Why

Regulatory processes have hard branching rules that must be auditable. Encoding them as deterministic code nodes means routing logic is inspectable, testable, and doesn't drift with model behavior. [Creator: add rationale on whether this was driven by audit requirements or operational preference]

Constraint

Routing decisions are never delegated to an LLM — only investigation and summarization are

02 · Choice

Claude Haiku for initial triage, ATM, and ACH investigations; Claude Sonnet reserved for the full Reg E debit card investigation

Why

Full Reg E investigation requires nuanced liability calculation and multi-factor reasoning; triage and sub-investigations follow more structured criteria where a faster, cheaper model suffices. Deliberate cost/quality tradeoff, not a default.

Constraint

All LLM nodes output structured JSON with defined schemas — no free-text outputs flow into downstream logic

03 · Choice

Every investigation prompt uses json_mode: True and returns a defined schema with conclusion, recommended_action, and supporting fields

Why

Downstream port routing depends on parsing conclusion values like "VALID"/"INVALID". Free-text outputs would break deterministic routing. [Creator: add rationale if json_schema strict mode was considered and rejected]

Constraint

If an LLM returns malformed JSON, port logic will fail — no fallback parser exists in the current implementation

04 · Choice

The $25/$2,500 thresholds and credit tier assignment are hardcoded in Python, not inferred by a model

Why

These are regulatory/policy thresholds, not judgment calls. Code makes them auditable and change-controlled. [Creator: confirm whether thresholds reflect actual bank policy or Reg E defaults]

Constraint

Threshold changes require a code change, not a prompt edit — intentional friction for policy-sensitive values

05 · Choice

The $50/$500/unlimited liability tiers are implemented in Python logic, not delegated to the Reg E investigation LLM

Why

The LLM reasons about liability in its summary, but the actual credit amount is calculated deterministically. Separates "reasoning about the rule" from "applying the rule." [Creator: add rationale]

Constraint

The LLM's consumer_liability_amount output is not used in the credit calculation — code recalculates independently

06 · Choice

Nodes receiving inputs from multiple upstream paths use AWAIT_ATTRIBUTES merge behavior

Why

Without this, a node could execute before all required inputs are available, producing incomplete outputs or race conditions

Constraint

Adds latency at convergence points — all upstream paths must complete before the merge node runs

07 · Choice

Every resolution path routes through RecordRetentionNode before the workflow ends

Why

Reg E requires 2-year documentation retention. Making it a mandatory terminal node ensures no path exits without confirming retention. [Creator: confirm whether this triggers an actual system write or is a documentation placeholder]

Constraint

If a path bypasses RecordRetentionNode, final_summary will be absent — a detectable gap

08 · Choice

Bank-detected fraud cases route to PriorityFraudProcessingNode (5-day SLA, card blocked) before reaching InitialTriageNode

Why

Bank-detected fraud has a different SLA and handling protocol; running it through standard triage would apply the wrong criteria. [Creator: confirm whether priority fraud cases still go through Reg E investigation downstream — this appears to be the current behavior]

Constraint

Priority fraud path still routes to RegEInvestigationNode — [Creator: confirm whether this is intentional or whether priority fraud should have a separate investigation path]

05Key Insight

In regulated processes, the highest-value AI design decision is often where not to use AI — encoding policy thresholds and routing rules as deterministic code preserves auditability while reserving LLM judgment for the unstructured reasoning that humans actually struggle to do consistently at scale.