How AI helps Ashkon Farmand run a 1-person finance team as VP Finance @ Payroll Integrations
INTERVIEWS WITH CFOS ABOUT AI | EPISODE 4
At one point, Ashkon Farmand and I realized we might be the only two CFOs alive who get excited about building primary keys on top of scattered financial data. That’s when I knew this was going to be a good interview.
Ashkon is a CPA who has spent most of his career trying not to be an accountant.
He taught himself SQL at KPMG using textbooks and YouTube. Then he got a Master’s in Analytics from UChicago while working full time in an analytical role, where he used SQL and Python to analyze beer and hot dog sales at Cubs games. After that came five years of buy-side M&A diligence at Deloitte, roughly 100 deals a year, turning messy customer data into EBITDA. Then he joined Sumeru Equity Partners and tried to drag its portfolio companies out of spreadsheet hell.
Two years ago, he took his first finance leadership role as VP of Finance at Payroll Integrations.
Since then, the company has grown from under $5M to double-digit millions of ARR. The finance team is still Ashkon plus external bookkeepers.
We connected through a LinkedIn post. Five minutes into our first call, it was obvious we had basically taken the same weird route into finance.
I did data systems consulting for hedge funds, went to U Chicago Booth for my MBA, made fun of Booth for being a CFO factory, and then immediately became a CFO. Ashkon and I also have both the SQL brain and the finance brain, which is extremely rare. He’s running his finance org exactly how I would.
If you only read one thing: the top 5 highlights from my conversation with Ashkon
You can run finance at double-digit millions of ARR with one person. Ashkon outsources the debits and credits, buys modern software, and uses Claude to produce a ton of high-quality output.
Vibe coding gets you to a shockingly good 80% in a few hours. Then the last 20% eats your life. The other problem is feature bloat: once you can build anything, suddenly your billing app also needs to push to HubSpot, post to Slack, reconcile Stripe, and make coffee. Ashkon built a working billing engine in a weekend, saw the maintenance burden that it was going to require, and promptly went out and bought Tabs.
The scariest part of vibe coding is not the code. It’s letting the code touch anything important. Ashkon would not let his apps write directly to HubSpot or reach into AWS.
MCPs make board prep feel like asking a smart analyst one more question. The night before a board meeting, Ashkon used the Rillet and Ramp MCPs to pull six months of spend on one vendor. The question came up the next day. He had the answer.
Data mapping is the glue that holds finance together. Matching CRM records to usage data. Maintaining lookup tables. Untangling customer hierarchies after one customer buys another. This is the ugly work underneath billing, rev ops, and reporting. (It is also, conveniently, exactly what we’re building at Cashboard.)
Ashkon’s path: KPMG, beer and hot dog analytics, Deloitte M&A, private equity, Payroll Integrations
Julian: Thanks for joining us, Ashkon. You’ve spent your whole career becoming an accountant while trying very hard not to be one. How did that happen?
Ashkon: I started at KPMG in their advisory practice with a whole bunch of other accountants. I was trying to differentiate myself, and I got exposed to SQL. I was drawn to it because other people were afraid of it. I knew I could have a little job security and learn something interesting besides anti-money laundering compliance and really annoying regulatory projects that I thought brought no value. This was 10-plus years ago, so there was no coordinated way to learn. I was learning by textbook and YouTube videos.
I wanted to figure out how I could become a programmer slash accountant slash business analyst. I had no clue, but I knew I didn’t want to do debits and credits, audit, or tax. I already had a CPA, so an MBA didn’t make sense, and I didn’t want to be a software engineer, so computer science didn’t either. Right around then, schools started launching business analytics programs, and UChicago had just announced one for working professionals. I got to learn coding and the application of it, not just theoretical mathematics. I was like, this is great. I want to be an accountant who can code.
I took one class and realized, what the hell am I doing at KPMG doing compliance? So I went to work for a data analysis company in Chicago doing business analytics, analyzing concession stand sales at Cubs games, NFL games, concerts. I’m using SQL and Python to analyze beer and hot dog sales at sporting events. Amazing gig.
Eventually I realized the TAM of my skills, this hybrid CPA-plus-coder thing, was a lot bigger outside of food and beverage. So I went to Deloitte, after claiming I’d never work for a Big Four firm again, and spent five years doing M&A due diligence, specializing in private equity buyers, analyzing customer data during buy-side diligence. A hundred deals a year, basically two projects at a time. I could translate customer data into EBITDA and actually blend the accounting side and the data side.
Then I got the opportunity to do that same thing inside a mid-market private equity firm, Sumeru, helping portfolio companies beef up the tech stack for the finance function. Trying to teach older-school finance teams: don’t just hire another FP&A analyst who’s going to grind through Excel. Get a data warehouse, get BI, anything but broken Excel and Google Sheets that won’t load.
So after a couple of years of coaching people, I thought, let me just do the damn thing. I saw what CFOs were doing and thought, I know how I would do it. I’d never done it before. But I knew the data side, and finance is just data management. The controllership and compliance stuff is all pretty dry from there, and it can be automated if you have quality data. I knew what needs to be done at $100M ARR, so let me go start at $5M ARR and do it right from the get-go instead of doing a cleanup job. I joined Payroll Integrations when we were sub-$5M ARR. We’re now well into double-digit millions of ARR.
The team-of-one stack
Julian: And it’s still just you. That is insane to me.
I’m curious about systems, too. In my own CFO roles, I had accounting data, budgets and forecasts, payroll, an internal KPI database, and a sales CRM. What are you running all of this on?
Ashkon: It’s just me, plus external bookkeepers, because it’s cost-effective and they’re better at debits and credits than I am. I wanted to see how long I could stay a team of one, keep improving the tech stack, and get smarter about our data connectivity.
We upgraded out of QuickBooks into Rillet as our ERP earlier this year. We moved to JustWorks as a PEO, so I’m not running payroll anymore, which was annoying. Our data warehouse is in AWS, where I’m doing stuff in Python and SQL. We implemented Drivetrain for FP&A last year, and the way I use it has changed since MCPs and Claude Code blew up: I’m using it essentially as a data warehouse and for data mapping, whereas before I used it for modeling. We have Power BI, but between Drivetrain and Claude I don’t really use it as much. We’re implementing Tabs for billing, because our billing is chaotic and annoyingly complex. I vibe-coded some billing myself, and it worked, it’s decent, but I don’t want to maintain responsibility for all of our billing, so I needed pros to build a semi-customized solution. We’re on Ramp for spend. We’re in HubSpot, where I’m doing pseudo-rev-ops and piping data into Drivetrain for sales leadership reports.
And we just went live with Invoice Butler on AR. We’re high volume, low dollar amount, and I had HubSpot support tickets full of customers saying update my credit card, where’s your W-9, why is this charged this way. I can’t be doing that, and I’m not hiring an AR specialist. Those guys have been tremendous.
The easy AI wins: SQL, Python, and journal entries written straight into Rillet
Julian: Okay, so that’s your stack. What have you actually built with AI on top of that?
Ashkon: The easiest win, even from before Claude Code blew up, is that it helps me write SQL and Python better. But that’s because I had a baseline understanding from the old days of Stack Overflow and Google. And you almost don’t need to do that anymore, because Claude can just query the data directly.
Here’s one I like. We have a vendor that bypasses Ramp and pulls directly from our bank feed, so in Rillet it just shows up as, whatever, $10,000 withdrawn. No bill, no credit card. They’d email me an itemized PDF, and I didn’t want $10,000 sitting in G&A. I want $2,000 here, $2,000 there, allocated across R&D, G&A, and COGS. So I used OCR to get the PDF into Python, did the allocations, and wrote the journal entries directly into Rillet through the API. It was partly just to see if I could do it, but it saved me manual journal entries. Now I can upload the PDF directly into Claude and replicate the same thing.
The other big one is our usage data. I’m pulling about five million records out of AWS, putting them into a good format, and loading them into a shared S3 bucket to feed Tabs. That’s a Python script right now, and I’m converting it to a cron job soon so it runs nightly without me loading it up and clicking run. All of that is Claude-assisted, because I had no clue what a cron job was, and I don’t want to bug my engineers.
Prepping for a board meeting with the Rillet and Ramp MCPs
Julian: You use the Ramp MCP a lot. I’d love to hear an example of how that’s been helpful.
Ashkon: The best example: I had a board meeting coming up, and I knew they were probably going to ask about our Anthropic bill, because it’s gone up. So I said, hey Claude, I have a board meeting tomorrow. Pull all of my Anthropic expenses from Ramp and Rillet: averages, six-month trailing average, all that sort of stuff. And the board did ask the question! It was phenomenal to walk in prepared. That’s the Rillet MCP and the Ramp MCP working together.
Scheduled tasks are the thing I need to get better at. What I want is one that connects to my Gmail, my Slack, and my HubSpot, and every day pings me: here’s what you need to prioritize.
Julian: I built a Ramp expense-review skill that I really like. Every Friday, it checks the past week’s transactions, flags new vendors, looks back about 380 days for annual renewals, guesses billing cadences, and checks declined transactions.
Then it Slacks each person their own past and expected upcoming spend and says: if you don’t recognize something, please flag it. And please cancel anything you’re not using!
I also force every message to end with “sent using Claude,” because people should know that it’s a robot sending it.
It gives everyone spend visibility without me chasing them around. We’ve probably saved a couple thousand bucks from people canceling unused subscriptions.
(Note: I sent Ashkon my ramp skill & scheduled task after we hung up. Email me if you want it too.)
The vibe-coded billing engine and the customer-matching app
Julian: You mentioned doing a ton of vibe-coding — I’d love to hear more about that.
Ashkon: Our billing logic is complicated. Historically, it lived in a spreadsheet that’s 58 columns long, all if-statements and lookup tables, because we have parent-child customer hierarchies and a bunch of different channels. I tried to replicate it in Python when I first joined and didn’t want to maintain that either. So I vibe-coded a billing app.
It is not live-connected to AWS. I still export the usage data and upload it manually, which is one reason I’m replacing it with Tabs. But once the data is in, the app calculates each customer’s bill and pushes the invoice into Rillet through the API.
The app really works. I’m always cross-checking my work before using it just to be safe. Once a bill looks right, I just hit “push” in the app. The invoice appears in Rillet, and the app generates the supporting CSV automatically. Every customer wants to know why we charged them and what the underlying usage was, so I attach that CSV to the invoice.
I’m still running the app in parallel with Excel and reviewing everything before it goes out. It works. I’m also extremely excited to stop owning it — the maintenance burden would be way too crazy over time.
The other app I built is for mapping customer tags across systems so that I have a single unified tag for everyone. The customer names in HubSpot and in our usage database don’t always match. So I built an app that scores matches: these two names are a 100% match; lock it in and store that mapping forever; this one’s a 90% fuzzy match; flag it for manual review. The idea is that an entry-level person can review the flags instead of me going through thousands of names. But it’s all local, on my machine. I’d rather pay for a proper tool to do this for me, so I can collaborate with teammates instead of manually managing it all myself.
Where vibe coding breaks down
Julian: You’ve built some really cool software. When did you realize you shouldn’t keep owning it?
Ashkon: Security was the big one. I did not feel comfortable letting a vibe-coded app tap into our AWS directly, so I was writing a query, saving the file locally, and uploading it into my app. Same with HubSpot. I was hesitant to write data back to HubSpot directly without proper controls, because I don’t perfectly understand what I built, right? It’s not like I’m going through every script it created. I had decent controls and small sample sizes, but one of my company’s co-founders asked, are you sure you want to let your app loose on our HubSpot instance? And I was like, you’re right. I probably shouldn’t do that (laughs). So now the app exports a file that matches HubSpot’s import template, I review it manually in Excel, and I upload it myself.
The other thing is that vibe coding gets you a really damn good 80% or 85% within a couple of hours. Then you spend so, so much time on the remaining 20%.
And when you think you can build anything, the bloat is real. I want it to push to HubSpot. I want it to post to Slack. I want it to auto-log everything. Suddenly, the little app I built has become an internal software company that I apparently run.
For small, focused, one-off things, it’s great. For larger, important things, the build-versus-buy math stops working. I’ve built one billing app. Tabs has done it a million times. By the end of the weekend, my app was pretty great, and I still thought: it doesn’t make sense to spend the rest of my life on this.
Data mapping is the finance function
Julian: Before we wrap, I just have to say — you’re the first finance leader I’ve interviewed who tried to build his own data-mapping tool. I think that’s so cool. Data mapping in finance is such an insane technical problem.
I always handled mappings in Excel when I was a CFO and it was a nightmare. You can’t get down to vendor-level mapping because the data volume is insane, and there’s always a new one every day. Which means you can’t really understand your atomic units of spend and how they compare to budget. Same for customer mapping, employee mapping, etc.
We built Cashboard’s data mapping engine to solve that. It’s the crown jewel of our platform. I’m unhealthily obsessed with it.
You can create as many dimensions as you want, and stitch together infinite labels from as many source systems as you want. Then, when a new label shows up, the humans get alerted, and AI has a suggestion that they can approve with a click.
Mappings are just such a wild finance-specific data engineering problem, and — before I built my own platform to solve it — they were the bane of my existence as a CFO.
Ashkon: That’s right. I have three hierarchy layers of customers and a lookup table I’ve outgrown. But that’s the thing. What you’re building, data mapping and essentially lookup tables, is finance. That’s the finance function.
Julian: Some kids want to be astronauts. For some reason, I wound up spending my whole career at the intersection of data and finance, and now I’m apparently obsessed with it.
About Ashkon & Julian
Ashkon Farmand is the VP of Finance at Payroll Integrations, where he runs the finance function as a team of one.
Julian Rowlands is the founder and CEO of Cashboard, the AI enablement platform for FP&A. He was previously CFO of Xendit (last valued at $3bn) and Head of Finance at Spruce (exited to Zillow in 2023). You can learn more about Cashboard at www.cashboard.co.
Interviews with CFOs about AI is an interview series by Cashboard. We speak with finance leaders who use AI in their day-to-day work, and ask them really detailed questions about their setup.
If you’re a finance leader building with AI, we’d love to interview you! Email julian.rowlands@cashboard.co with a quick summary of what you’ve used AI to accomplish, and we’ll get a call booked.


