How it works

The domain, the decision, and why it's an agent instead of an if/else chain.

What's a chargeback

A disputes a charge with their bank, the . The issuer reverses the money from the merchant immediately: a provisional credit to the cardholder, taken as fact until proven otherwise. Only after that reversal does the merchant get a chance to argue back. It's guilty-until-proven-innocent from the merchant's side, which is the entire reason the rest of this process exists.

Why the matters

Every dispute carries a card-network reason code: "product not received," "fraud, card-not-present," "cancelled service," and dozens more. The code isn't bureaucratic labeling, it determines what evidence actually matters. Proof of delivery wins a not-received claim but is irrelevant to a fraud claim, where // authentication signals matter instead. That's why classify, interpreting the code before any judgment happens, is the agent's first step, not an afterthought.

Fight or accept:

To fight a chargeback, the merchant submits a formal written rebuttal, a representment letter, with documented evidence that the charge was legitimate. That takes real effort, and fighting isn't free even when you have a case: card networks track how often merchants dispute and lose, and fighting too often on weak evidence has its own cost. So the actual decision is a judgment call, weighing the odds of winning against the cost of trying, not just "do we have the textbook evidence or not."

The pipeline

One dispute flows through four steps, each one handing the next a little more of the final verdict:

classify

Reads the reason code, asks Claude what it means and what evidence typically wins it.

assess

Weighs the merchant's actual signals against each other. Claude reasons about conflicts, not a lookup table.

decide

A transparent, deterministic policy over assess's win-probability: fight above the threshold, accept below it.

draft

Only reached on "fight". Claude writes the representment letter, citing only evidence the merchant actually has.

The step from decide to draft is a conditional edge: it only fires when the recommendation is "fight". On "accept", the graph ends right after decide. No letter is generated, no extra Claude call is spent.

Why an LLM, not a rules engine

A rules engine handles the easy cases fine: AVS mismatch plus a foreign IP is almost always a loss, clean history plus solid delivery proof is almost always a win. The hard cases are the ones where signals point in different directions: a 4-year customer with zero prior chargebacks, but no tracking number for this one order. Rules force a threshold on that; an LLM can weigh the signals against each other and explain why, in plain English, the way an experienced analyst actually would. That reasoning step, not the drafting, is where this agent earns its keep over a spreadsheet of if/else rules.

Try the demo →