A builder's record book · est. 2026

Built for myself first.

ENTRY No. 004

The numbers were all there

Problem
Every financial number existed in the ERP. Seeing what they meant took four reports and an accountant.
Built
One screen for the money, fed by our own APIs. Plus an AI that answers questions about it.
Status
running, in-house

We’ve had proper reporting for years. Trial balance, balance sheet, cash flow statements, aging reports, any of it, any time. On paper we could see everything. And still, whenever I wanted to know how we were actually doing, I couldn’t get a straight answer out of a single screen.

The problem isn’t missing data. The problem is a translation gap. Ask an accountant how the company is doing and you get a balance sheet, because that’s the language accounting speaks. Structural, traditional, correct. But I was asking something much simpler. How much is owed to us right now. How much do we owe. Will the money coming in cover the money going out. Is our cash getting better or worse. Is anything about to go wrong. And which customer, exactly, is late.

What accounting shows on one side, what I was asking on the other. Same data, two languages

Every piece of that lives in the ERP. It has to; that’s what an ERP is for. But ERPs are built to keep records, not to show them. So for years my picture of the company came from three or four reports, pulled at different times, compiled by hand, usually by me. My seat in the company isn’t finance. I’m one of the founders and I watch the money closely, which in practice meant the compiling kept landing on me. When a need shows up often enough, it becomes a project whether you wanted one or not.

The build was not clever and I won’t pretend it was. We listed what I actually look at, pulled it out of our own system through its APIs, and put it on one screen written in owner language instead of accounting language. Owed to us, we owe, cash and its direction, who’s late, per customer. Then the one detail that made it real: a few operators got the right to add what the system can’t know. “This one pays Thursday.” “That one always runs two weeks late, don’t panic.” A dashboard that knows what the humans know is a different animal from a dashboard that doesn’t.

The ERP stores it, the APIs pull it, one screen shows it, and the operators add what the system can’t know

Boring project. Genuinely boring. Also one of the most useful things running in this company.

Then came the part I hadn’t tried before. I started loading the financial data into an AI in the terminal and asking it questions. There’s a trust decision in that sentence, I know. I’m on the trusting side of it; you may not be, and that’s fair. But talking to your own company’s numbers is a remarkable thing. What happened this month. What drove it. What helped us, what hurt us, which way we’re drifting. And then the what-ifs, live: cut our receivable days by ten, raise prices five percent, shave two percent off material costs, and show me how each one lands. Questions that used to mean a meeting and a week of back-and-forth turn into a few minutes at a prompt.

Asking the data what-if questions at a terminal, and getting answers in minutes

Talking to data has never been this easy. Understanding financial data has never been this easy. I keep saying that sentence to people and they nod politely, and then I show them the screen and they stop nodding politely.

This one stays in-house too, and for once the reasoning is mostly humility. Finance isn’t my field. I don’t know how other companies handle this or whether they suffer the same way, and I can’t tell whether this would sell or even generalize. So it stays home, next to the ads manager and the lifecycle tracker. That’s three in a row now.

What I’m keeping from this one:

Built for myself first. And finally, in my own language.