Case study, January to October 2026
Atlance. The software our finance runs on.
I run finance at UrbanPiper across four countries. In January 2026 I started building the software it runs on, by directing Claude Code in plain English. This is what it does, how it was built, and what I got wrong.
- 15 → 7
- days to close the month, and real time next
- 7
- tools retired, and a twenty-one-sheet workbook
- 30+
- teammates use it
- 4,300
- changes since 18 January 2026
The problem
Month-end numbers took fifteen days. I was asked to just automate the report. But the report was never the slow part. The month's expenses were not in one place: the ledger held about 60 to 70 percent of the month, and the rest sat in ten other kinds of places.
You can't automate a report on data that doesn't exist yet. So the real job was to get every source into one place first.
Read the memo I wrote in January
The decision: connect the tools, don't replace them
Finance already runs on good tools. Zoho Books holds the ledger in every country. Salesforce holds the contracts. Stripe takes card payments. Ramp and Pazy handle spend and payables. Replacing them would have meant years of migration and a new set of risks.
So Atlance doesn't replace them. Every source syncs into one database, and the screens, AI agents and reports sit on top. When Atlance changes something, it writes back to the tool that owns it.

What it does

Billing, collections and approvals run the same way in India, the UK, the Middle East and the US. One rule beats four exceptions: fewer special cases means fewer things that fail quietly.
Plan against actuals for all four regions on one screen. Cash, people and cloud cost, read live every morning. Prepaid expenses spread across the right months on their own.
Monthly memos drafted from the numbers, and answers to finance questions in Slack.
How it was built
I don't write code. I describe what I need in plain English. Claude Code builds it, and I review every change before it ships. Every change also goes through tests and checks. Routine work runs on smaller models in parallel, and small typed judgements, such as "is this email a dispute?", come from TypeSafe.
The second change I ever made, minutes after the first, was "add password protection". Controls before features. That is the auditor in me, and it set the tone for everything after.
In numbers: 215 days of building, a longest streak of 61 days, and 1,340 features against 1,328 fixes. For every new thing, almost exactly one fix.
What I got wrong
The January memo planned one tracker for all ten places the data gets stuck. It never shipped that way.
By March the question had moved. It was no longer "how fast can we produce the actuals?" It was "how fast can we explain them against the plan?" Building plan against actuals forced several of the ten cases to be fixed upstream, as a side effect. Others were solved inside other tools. Two still have no early warning.
A faster close stops mattering once the question becomes how fast you can explain the numbers.
Where it stands
The month now closes in about a week, down from fifteen days. The next step is real time: numbers that are current every minute, not once a month after the close.