The Tuesday morning I opened my laptop to 90 unsorted Yoco CSVs and 40 per cent battery
I run a café in Observatory, Cape Town. Specialty coffee, pastries we bake on site, lunch menu that changes weekly. We take cash, but about 70 per cent of our customers tap their cards on the Yoco reader at the counter. Every night, Yoco settles the day's card payments into our business account. Every morning, I'm supposed to download the settlement report, match it against our POS, and flag any discrepancies before the accountant invoices at month-end.
I'd been putting it off. Three months of reports—90 files, one per day—sitting in my Yoco Business Portal downloads folder. Some days had two settlements because we'd hit the R15,000 threshold and Yoco splits large batches. Other days had missing transaction IDs where a customer's bank had declined mid-swipe and the system logged it anyway. A few files from July were only half-complete because I'd downloaded them during load-shedding and the connection dropped before the export finished.
It was the second week of October. My accountant had given me until Friday. I opened the folder on Tuesday morning, saw 90 CSVs with names like "yoco_settlement_2024-07-18_final.csv" and "yoco_settlement_2024-08-03_v2.csv", and realised I had no idea which ones I'd already checked and which ones were duplicates.
I had two problems. First, I needed to merge all 90 files into one master sheet, deduplicate the transactions, and calculate total fees so I could reconcile against my bank statements. Second, load-shedding was scheduled for 10 a.m. to 12 p.m. and again at 4 p.m. to 6 p.m. My laptop battery lasts about three hours under load. My café's Wi-Fi runs off a router with no battery backup, so every time the power cut, I lost the connection mid-upload.
I decided to test Claude Sonnet 4.5 and Gemini Pro side by side. I'd used Claude for email drafts before, but I'd never asked either model to process this many files with interruptions baked in. I wanted to see which one could pick up where it left off when the power came back, and which one would just lose the thread and make me start over.
What Yoco settlement reports actually contain (and why they're a pain to reconcile)
Each Yoco CSV has the same columns: transaction date, transaction ID, card type (Visa, Mastercard, Amex), amount, fee, net settlement, settlement date. Straightforward on paper. In practice, three things make reconciliation annoying.
One: declined transactions still appear in the report with a "failed" status, but they don't affect your settlement total. If you're not careful, you'll count them twice.
Two: if a customer disputes a charge, Yoco reverses the settlement and logs it as a separate line item with a negative amount. You need to match the original transaction ID to the reversal ID, or your totals won't balance.
Three: if you download a report during load-shedding and the export times out, you get a partial file. It'll have 40 rows instead of 60, no error message, and a filename that looks identical to the complete version you downloaded the next day. I had seven of these in my folder.
I'd tried reconciling manually in Google Sheets twice before. It took four hours each time, I made mistakes, and I swore I'd automate it. Then I didn't.
First attempt: uploading all 90 files to Claude before the 10 a.m. power cut
I opened Kryotta, switched to Claude Sonnet 4.5, and wrote this prompt:
"I'm uploading 90 Yoco settlement CSVs. Merge them into one sheet. Remove duplicate transaction IDs. Flag any reversals and match them to the original transaction. Calculate total fees paid to Yoco across all three months. Output a single CSV I can download."
I started uploading files at 9:15 a.m. My Wi-Fi is decent when the power's on—20 Mbps down, maybe 8 up—but uploading 90 files, even small ones, takes time. By 9:50 a.m. I'd uploaded 61 files. At 9:58 a.m., the lights cut. The router died. The upload stopped.
When the power came back at 12:04 p.m., I reopened the chat. Claude had processed the 61 files it received before the cut. It had merged them, flagged 14 duplicate transaction IDs, matched six reversals to their originals, and calculated R4,320 in total fees. It gave me a download link for the merged CSV.
But it had no memory of the 29 files I hadn't uploaded yet. I asked, "Can you process the remaining 29 files and add them to the sheet you just made?" Claude said yes, but when I uploaded them, it treated them as a completely new task. It merged the 29 files into a separate CSV. It didn't deduplicate across both batches. I now had two CSVs and no easy way to combine them without doing it manually.
Second attempt: uploading the same 90 files to Gemini in two batches
I ran the same test with Gemini Pro. Same prompt, same 90 files, same load-shedding schedule. This time I uploaded 58 files before the 10 a.m. cut.
Gemini processed them faster than Claude. It merged the 58 CSVs, found 11 duplicate transaction IDs, flagged the same six reversals, and calculated R4,180 in fees (R140 less than Claude, which worried me). It also generated a summary table showing fees by month: July R1,520, August R1,430, September R1,230.
When the power came back, I uploaded the remaining 32 files. I wrote, "Add these 32 files to the sheet you just made. Deduplicate across both batches."
Gemini did it. It appended the new rows, recalculated the totals, and output one merged CSV with all 90 files. Total fees came to R4,320, matching Claude's first-batch figure. The deduplication worked. I spot-checked ten transaction IDs against the original Yoco reports—all correct.
Why Gemini handled the interruption better (and where it still messed up)
The difference came down to how each model treats context when you resume a task. Claude processed each upload as a discrete job. Once it finished the first 61 files, that job was done. When I asked it to process the remaining 29, it started fresh. It didn't "remember" the earlier CSV in a way that let it merge across batches.
Gemini kept the earlier output in context. When I uploaded the second batch and explicitly told it to deduplicate across both, it treated the first 58 files and the next 32 as parts of the same dataset. It recalculated totals, checked for duplicate IDs across the full set, and gave me one file.
That said, Gemini made two mistakes I only caught when I opened the final CSV. First, it had included three declined transactions in the fee calculation. They were marked "failed" in the status column, but Gemini added their fees to the total anyway. I had to manually subtract R47. Second, one of the reversals—transaction ID ending in 4492—wasn't matched to its original. The original charge was in a file from July that I'd downloaded twice (once incomplete, once complete), and Gemini picked the incomplete version, so the IDs didn't line up.
Claude didn't make those mistakes in the first batch, but it also didn't finish the job.
The 4 p.m. test: what happens when the power cuts mid-processing
I wanted to see what happened if the model was actively working when load-shedding hit. I uploaded all 90 files to Claude again at 3:45 p.m. and gave it the same merge-and-deduplicate prompt. The upload finished at 3:58 p.m. Claude started processing. At 4:01 p.m., the power cut.
When it came back at 6:10 p.m., the chat was still open, but Claude had stopped mid-task. The last message said, "Processing your files…" and then nothing. I wrote, "Did you finish?" Claude replied, "I encountered an interruption. Please re-upload the files."
I ran the same test with Gemini at 3:50 p.m. the next day. Upload finished at 4:03 p.m., processing started, power cut at 4:05 p.m. When I reopened the chat at 6:15 p.m., Gemini had also stopped, but it had saved a partial output: 68 of 90 files merged, with a note that said, "Connection lost. Upload remaining files to continue."
I uploaded the 22 missing files. Gemini picked up where it left off and finished the merge. Total time after reconnection: six minutes.
Neither model handled a mid-processing power cut gracefully, but Gemini at least saved its progress. Claude made me start over.
What I'd do differently if I ran this again (and what I'm doing now)
If I had to reconcile another 90 Yoco reports under the same conditions, I'd use Gemini Pro and I'd upload in smaller batches—20 files at a time, maybe 25. That way, if the power cuts mid-upload, I've only lost a few minutes. I'd also rename the files before uploading so duplicates are obvious: "2024-07-18_complete.csv" vs "2024-07-18_partial.csv". Gemini can't guess which version is the right one if the filenames look identical.
I'd write a more explicit prompt. Instead of "merge and deduplicate," I'd say: "Merge these CSVs. Remove duplicate transaction IDs. Exclude any row where the status column says 'failed'. Match reversals to their original transactions using the transaction ID. Calculate total fees, excluding failed transactions. Output one CSV." The extra sentences would've caught the declined-transaction error.
And I'd reconcile weekly, not quarterly. Ninety files at once is too many, even with AI. Twenty files takes ten minutes, and if something breaks, I catch it before month-end.
I'm now using Kryotta's Claude Sonnet 4.5 for email drafts and Gemini Pro for anything that involves interrupted uploads or multi-step data tasks. I keep both models open in separate tabs. It's not about one being better overall—it's about which one handles the specific problem you're solving, under the specific constraints you're working with.
Questions people ask
Can Claude or Gemini reconcile Yoco reports if I don't have load-shedding interruptions?
Yes. If your power and internet are stable, both models will merge, deduplicate, and calculate totals accurately. Claude is slightly better at catching edge cases like mismatched reversals, but Gemini is faster with large batches. Test both with ten files first, check the output, then scale up.
What if my Yoco CSVs have custom columns or I've edited them manually?
Tell the model exactly which columns to use. If you've added notes or merged rows yourself, say so in the prompt: "Column F contains my notes; ignore it. Use columns A–E only." Both models will follow instructions, but they won't guess your custom structure.
Do I need to clean the CSVs before uploading, or can the AI handle messy data?
Gemini handled partial files and duplicates without me cleaning them first, but it made mistakes with declined transactions. If your files are messy—missing rows, extra columns, inconsistent date formats—spend five minutes standardising them in Google Sheets before you upload. You'll save an hour of fixing errors later.
Which model is cheaper for this kind of task?
At Kryotta, Claude Sonnet 4.5 and Gemini Pro are both available on the Starter plan at ₹750/month or the Pro plan at ₹1,500/month (billed in rands at the current exchange rate). You're not charged per file or per token beyond the plan limit. If you're processing hundreds of CSVs monthly, Pro makes sense; if it's a quarterly task, Starter is fine.
I reconciled 90 Yoco settlement reports in two days, across four load-shedding windows, and I didn't lose my mind. Gemini Pro handled the interruptions better than Claude, but Claude caught errors Gemini missed. I'm keeping both. If you're reconciling payments under unstable power or internet, try the same split-test approach—it's faster than guessing, and you'll know which model works for your specific setup. You can start with both models at Kryotta and see which one fits your workflow.



