Insights

Pointing agentic AI at our own bookkeeping

4 min read
The Xero reporting dashboard for the Si Novi organisation

Pointing an AI agent at the Xero jobs I'd rather not do

We've been using agentic tooling for a while now, and lately we've started turning it towards how we actually run Si Novi. Our Xero bookkeeping is one area of pain. I do our books myself, so I know exactly which jobs take the most time each month. Those are the ones I've been handing to an agent, in the shape of a little suite of tools we've built against the Xero API and can drive from inside a Claude Code session. The first results are really exciting and have already saved me a bunch of time and effort this quarter.

Where I aimed it, and why

I set the agent a task list of the fiddly, repetitive jobs I already know inside out and would happily never do by hand again. The big one, and where most of my monthly grief lives, is draft supplier bills, because every month there's a run of them to work through: converting the dollar receipts from the likes of GitHub into the pounds that actually left the bank, spotting where a supplier has sent both an invoice and a receipt for the same payment so one can be dropped, and setting the right tax treatment across reverse charge, No VAT, and plain 20%. None of it is hard, it's just fiddly and it mounts up, and one batch had five duplicate invoice-and-receipt pairs to weed out on its own.

I knew that with draft bills cleaned up I could then focus on reconciliation - which would be a much easier task even still using the Xero UI. But automating reconciliation is unlocked by the bills being clean.

The shape that's working so far

The pattern underneath it is what I'd call AI in the loop rather than AI in a box, and it falls into three clean roles. The scripts do the deterministic donkey work of authenticating, pulling the bills and the bank lines, and writing approved changes back. The agent does the judgement I actually point it at, reading a receipt, matching a foreign-currency bill to the sterling that left the bank, working out the category and flagging anything that looks off. And I sit in the middle, setting the task and approving every write, so nothing reaches Xero until I've looked at it, which is the entire point when it's the live accounts.

Where the API runs out

The one real limit I've hit is that the data you want isn't always where the API reaches. It seems that raw unreconciled bank transactions are not available via the Xero API, so for now I'm bridging the gap with a once-per-batch XLSX report export. I can hand that to our Xero Tools agent to be extracted via a script and included in the data processing. It works fine but isn't quite the elegant answer I'd have liked. One manual step but still a huge improvement overall.

Guardrails, because it's live accounts

Because this is pointed at the live accounts, everything runs as a dry run by default and won't write a thing until I confirm against named targets, each change is atomic so there's no half-finished mess to unpick, and a re-run knows what it has already done and skips it. The one time it genuinely hit a wall it stopped cleanly, refusing a couple of bills it shouldn't have touched rather than mangling them, which is exactly the behaviour you want the first time you let a tool near the books.

In summary... well, it's brilliant

This is early and I'm still very much playing, but it's a genuinely exciting way to work.

The part I like most is quiet: the supplier quirks and billing rules and tax treatments I know are getting written down as we go, as versioned notes the agent picks up on its own, so it starts each session already knowing what I taught it last time. And I love the compounding knowledge of the codified work I've done here - this is operations software we can iterate over time and further optimise our workflows, saving ourselves time.

If you've got a repetitive, fiddly corner of your own operations that you know better than anyone, that's just the sort of thing we like getting our teeth into, so do get in touch and we'll talk it through.


Do you have any thoughts on this article? Get in touch: hello@sinovi.uk


Authored by

Profile image of James Galley James Galley