Let me paint you a picture of my Monday mornings when I first started at Airbyte.
I'd open Stripe, scroll through the disputes tab, and pick one. Then I'd open Zendesk to check if the customer ever contacted support. Open Orb to pull their billing history. Open Slack to search for any internal threads where sales or support discussed the account. Open Google Drive to find the evidence PDF template. Five tabs, minimum, before I could even start writing a response.
Then I'd spend the next 45 minutes copy-pasting between all of them, assembling a counter-dispute package that had, statistically, maybe a 30% chance of winning anyway.
We were contesting fewer than 10% of the chargebacks we received. It’s not that we didn't have a case. But building each case took so long that most disputes would just expire. We'd eat the loss.
A Controller's nightmare, but also just Tuesday.
The part where I stopped accepting this as normal I work at a company that builds AI agents. At some point it occurred to me that I was doing exactly the kind of work our product is designed to automate: pulling structured data from multiple SaaS tools, cross-referencing it, and generating a report that informs a decision.
I was the agent. A very tired, coffee-dependent agent toggling between Chrome tabs.
So I built an automation using Airbyte Agents. I'm not an engineer. I don't write Python. But the agent connectors and workflow builder make things simple. Once you understand what data lives where, the hard part is already done.
What it actually does This automation runs every weekday morning at 10:30 AM PST. When I show up to work with my coffee, there’s a message in the #customer-dispute channel.
Note: all numbers here are ersatz and meant for illustrative purposes
The message contains a dashboard that shows the number of customer disputes requiring response, disputes currently under review, customer disputes we’ve won and lost, and the total dollar value of customer disputes.
For every customer dispute with a value over $1,000, the agent will pull disputes from Stripe, support tickets from Zendesk, subscription and billing history from Orb, internal Slack conversations about the customer, and evidence documents from Google Drive.
Based on this information, the agent will automatically create a response that includes the reasons to fight or concede the customer’s dispute, relevant Terms of Service sections, a proposed counter-response to the customer dispute, an estimation of the probability of winning the customer’s dispute, and the deadline to respond to the customer.
Note: all numbers here are ersatz and meant for illustrative purposes
For disputes over $1,000, the agent will automatically create a Google Drive folder containing a counter-response document, an evidence document checklist, and the other necessary documents to contest the Stripe dispute. Previously, I would have to create these documents every single time. This automation means they are ready in Google Drive before I even finish my first cup of coffee.
Finally, the agent uses a learning loop. It looks at customer disputes we’ve won and lost and learns from them so that future automated counter-responses are improved by these past lessons. While we haven’t been running long enough to see the full impact of this feature yet, the agent has the potential and the foundation to create increasingly effective counter-responses over time.
The numbers that matter to me Before: fewer than 10% of disputes contested.
After: more than 90%.
Same team size (me). Same number of hours in the day. The bottleneck was never the decision-making. I always knew which disputes to fight. The bottleneck was the 30 to 60 minutes of research per dispute that made it impossible to get to all of them. That part is now automated.
We haven't had enough time to measure the impact on our win rate yet, since dispute outcomes take months to come back from the card networks. But going from contesting almost nothing to contesting almost everything is not a neutral change. Even a modest win rate on disputes we used to just ignore entirely is found money.
The part where I was on a ferry The automation hit choppy waters sometimes. I was doing a test run while riding the ferry one morning, and the Zendesk connector started throwing permission errors. Turns out it wasn't the ferry wifi (my first theory). Some of the Zendesk streams I'd enabled needed admin-level access that my API credentials didn't have.
One of our engineers, Johnny, saw the alert in our connector failures channel before I even got the notification and pinged me about it. I disabled the streams I didn't need, re-ran it, and it worked fine.
I got to prove that Airbyte Agents’ credential management works, which was really cool. It made me feel like I was part of the engineering team.
What I'd tell another finance person reading this You don't need to be technical to build something like this. You need to know your data. Where does it live? What fields matter? What's the logic you run in your head every time you do this task manually?
For me, the logic was: pull all open disputes from Stripe, filter for anything over $1,000, check if the customer ever contacted support, check their billing history for refunds or credits, look for internal context, and then decide whether we have a case. I'd been running that same mental checklist for months. The automation just does it faster, at 10:30 every morning, whether I'm at my desk or on a boat.
The five connectors I used are Stripe, Zendesk Support, Orb, Slack, and Google Drive. They all sync through Airbyte's Context Store, so the agent queries pre-synced data instead of making live API calls at report time. That keeps it fast and avoids rate-limiting issues across five different APIs.
If you have a recurring process where you're pulling context from multiple tools to make a decision, you can probably automate the research part. Chargebacks, expense reconciliation, renewal tracking, revenue recognition prep, whatever it is. The pattern is the same: connect the sources, define the logic, let the agent do the tab-switching.
I'll still be the one making the final call on whether to fight a dispute. But I don't need to spend my morning assembling the case file anymore.
And of course, when the customer is right, we give them a refund right away! Customer-first is one of our key values.