Ninety disputes in thirty days: the month M-Pesa nearly buried my shop
I sell kitchenware and home storage on Instagram—plastic containers, lunch boxes, spice racks, the sort of thing every household in Nairobi needs but doesn't think about until the old one cracks. I take orders through DM, send a catalogue PDF over WhatsApp, and collect payment by M-Pesa. Three hundred orders a month on average, closer to five hundred during back-to-school season in January and May.
In March I had ninety M-Pesa disputes. Not chargebacks—M-Pesa doesn't work that way—but customers messaging to say the payment didn't go through, or they paid twice, or the order never arrived so they want a reversal. Some were legitimate: a boda rider marked "delivered" but left the parcel with a neighbour who wasn't home. Others were confusion: a customer sent money to the wrong till number, then assumed I'd received it. A few were outright attempts to get a refund after using the product for two weeks.
Each dispute took fifteen to thirty minutes to resolve. I'd check my M-Pesa statement, screenshot the transaction, explain the delivery process, offer a replacement or a partial refund depending on the claim. By mid-March I was spending four hours a day on dispute responses and falling behind on packing orders. I needed a way to triage these messages and draft replies that were firm, polite, and specific enough that the customer either accepted the explanation or escalated to M-Pesa formally—at which point I had a paper trail.
I'd heard about Kryotta Compare from a chama member who uses it for copywriting. The feature lets you send one prompt to four models at once and see their answers side by side. I decided to test Claude Sonnet 4.5, Gemini Flash, GPT-OSS 120B, and Mistral Large on fifteen sample disputes—real messages I'd received in March—then route the remaining seventy-five by claim type based on which model handled each scenario best.
Fifteen sample disputes, four models, one afternoon
I picked fifteen disputes that covered the range: failed reversals, duplicate charges, "order never arrived," "wrong item sent," "product damaged," and "I changed my mind." I copied each dispute message into Compare, then wrote a single prompt:
"Draft a response to this M-Pesa payment dispute for a kitchenware shop in Nairobi. Be polite, check the facts I provide below, and offer a resolution that protects the business while treating the customer fairly. If the claim is invalid, explain why without sounding defensive. If it's valid, offer a replacement or refund. Keep it under 100 words."
I added context for each dispute: the M-Pesa transaction code, the delivery date, the boda rider's name, the product ordered. Then I ran Compare and waited.
Claude came back first. Its responses were clear, acknowledged the customer's frustration, and proposed a next step in every case. For a failed reversal it said, "I've checked our M-Pesa statement and confirmed your payment of KSh 1,200 on March 12. The reversal you're seeing may be from a different transaction—can you share the M-Pesa code so I can verify?" For a duplicate charge it offered an immediate refund of the second payment and apologized for the confusion.
Gemini Flash was faster and cheaper—about KSh 0.80 per response compared to Claude's KSh 2.50—but the tone was slightly colder. It gave the facts, offered a solution, but didn't acknowledge emotion. On a "product damaged" claim it said, "Send a photo of the damage and we'll send a replacement within three days," which is correct but feels transactional when someone's annoyed that their lunch box cracked in transit.
GPT-OSS 120B surprised me. It was verbose—most responses hit 120 words when I'd asked for under 100—but it caught nuances the others missed. On a claim that said "I ordered a blue container, you sent green," it asked, "Did you mean the lid or the base? We have a two-tone design where the base is green and the lid is blue." That was exactly the confusion: the customer thought the whole thing would be blue. GPT's reply de-escalated before I even sent it.
Mistral Large was a disaster for disputes. It escalated two out of fifteen, telling customers to "contact M-Pesa support directly" or "file a formal complaint" when a simple refund would have closed the issue. On one "order never arrived" claim it said, "We have proof of delivery, so this matter is closed," which is technically accurate but guaranteed to make someone furious.
Which model I used for which claim type
After testing fifteen, I routed the remaining seventy-five disputes by type:
Failed reversals and duplicate charges: Claude Sonnet 4.5. These need empathy and precision. The customer is already frustrated because they think they've lost money. Claude's responses acknowledged that frustration, explained what I saw on my end, and asked for the specific M-Pesa code to verify. Cost: KSh 2.50 per response. I had eighteen of these in March. Total spend: KSh 45.
"Order never arrived": GPT-OSS 120B. These are tricky because sometimes the boda rider lied, sometimes the customer gave the wrong address, and sometimes a neighbour signed for it. GPT asked clarifying questions before assigning blame, which kept the conversation cooperative. Cost: KSh 1.20 per response. Twenty-three disputes. Total: KSh 27.60.
"Wrong item sent" or "product damaged": Gemini Flash. These are straightforward: if the claim is valid, send a replacement; if it's not, explain why. Gemini's slightly transactional tone worked here because the customer wants action, not sympathy. Cost: KSh 0.80 per response. Nineteen disputes. Total: KSh 15.20.
"I changed my mind" or "I want a refund": Claude Sonnet 4.5 again. These need a firm but polite "no" unless the product is unopened. Claude's language was assertive without sounding rude: "Our policy is no refunds on used items, but I can offer you a 20% discount on your next order as a goodwill gesture." Fifteen disputes. Total: KSh 37.50.
I didn't use Mistral for any of the remaining seventy-five. The two escalations in my test sample told me it wasn't worth the risk.
What went wrong and what I'd change
Two things broke during the routing process. First, I didn't account for disputes that mixed claim types. One customer said the order never arrived and they'd been charged twice. I sent that to GPT for the delivery question, then had to follow up manually for the payment issue. Next time I'll flag mixed claims upfront and send them to Claude, which handles complexity better.
Second, Gemini's responses occasionally used phrasing that sounded like a bot. One said, "Your concern has been noted and a replacement will be dispatched." A customer replied, "Is this an automated message?" I rewrote it to say, "I've noted this down—your replacement will go out tomorrow," and she was fine. If you're using Gemini for customer service, edit the first line of every response to sound human.
The total cost for ninety dispute responses was KSh 125.30. Before Compare, I was spending four hours a day on these messages, which works out to roughly KSh 2,400 in opportunity cost if I value my time at KSh 600 per hour (what I'd pay someone else to handle customer service). The models didn't replace me—I still reviewed every response before sending, and I jumped in manually for the mixed claims—but they cut my dispute-handling time to about forty minutes a day.
The routing system I'm using now
I built a simple decision tree in a Google Sheet. Column A: claim type. Column B: which model to use. Column C: cost per response. Column D: notes on what to watch for. When a dispute comes in, I skim the message, match it to the claim type, and paste it into Compare with the right model pre-selected.
For failed reversals and duplicate charges, Claude. For delivery issues, GPT. For damaged or wrong items, Gemini. For refund requests, Claude. If the claim mixes two types, Claude. If the customer is already angry (multiple exclamation marks, all caps, threats to "report this shop"), I handle it myself—no model is good enough yet to de-escalate someone who's genuinely furious.
I'm also tracking which responses lead to follow-up questions. If a model's reply generates a second message from the customer more than thirty percent of the time, I'll test a different model for that claim type. So far Claude's follow-up rate is eighteen percent, GPT's is twenty-two percent, Gemini's is twenty-eight percent. Mistral would have been higher, but I stopped using it after the test sample.
Questions people ask
Can I use one model for all dispute types instead of switching?
You can, and Claude would be the safest choice, but you'll spend about double what you'd spend by routing. If you're handling fewer than twenty disputes a month, the time you save by using one model probably outweighs the cost difference.
What if the customer replies in Sheng or mixed English-Swahili?
Claude and GPT handle code-switching better than Gemini or Mistral, but none of them are perfect. If the original message is mostly Sheng, I write the reply myself—customers notice when the tone shifts from how they spoke to you.
How do I know if a model's response will make things worse?
Read it out loud. If it sounds like something you'd never say to a customer's face, rewrite it. The models are good at structure and facts, but they don't always catch tone. A phrase like "this matter is closed" might be factually correct, but it ends the conversation badly.
Does this work for disputes on Jumia or other platforms?
The same routing logic applies, but Jumia's dispute process is more formal—you're often writing for their resolution team, not the customer directly. I'd test the models on a few sample Jumia cases first, because the language needs to be more evidence-focused and less conversational.
Ninety disputes in March, forty-two in April, thirty-eight so far in May. The models didn't eliminate disputes, but they gave me a way to respond quickly and consistently without spending half my day on explanations. If you're running an Instagram or WhatsApp shop and M-Pesa disputes are eating your time, try Compare on fifteen real messages and see which model fits which claim type. It'll cost you less than KSh 50 to test, and you'll know exactly where to route the next hundred.
You can try Kryotta Compare free for the first week—no card required—and see which model works best for your dispute types before you commit to a paid plan.



