AI and automation
Practical AI and automation for growing SMEs.
I’m an AI consultant for growing SMEs. I find the manual work in your business and connect the systems you already run. AI agents and automation then do the checking, the re-keying and the reporting, and a person still decides. I run the same setup in the finance team I lead.
01 What I do for an SME
Less manual work, better operations.
- Find it. The re-keying, chasing and checking that slow the business down, counted from how the work runs today.
- Connect it. The systems you already run, such as Xero, MYOB, Simpro or ServiceM8, before I suggest replacing anything.
- Automate it. Rules for the checks that should never vary, AI where judgement is needed, and a person approving every money decision.
- Build it and hand it over. I build it myself, with an owner, a written routine and the controls an auditor expects.
Several workflows, your systems and your people: that is this page and the Diagnostic. One workflow at a fixed price is Works Better, the implementation side. My finance background is why the numbers and the controls hold: Chartered Accountant (CA ANZ), MBA, 16 years across finance, operations and systems.
02 The finance fleet
A finance function that runs on schedule, with a person in charge.
An agentic finance fleet I designed and built, and run inside the group where I lead finance. For a business like yours, it means:
- consolidation across entities, without the manual reconciling;
- live reporting for the whole business and each unit;
- a faster close; and
- supplier bills that a person approves before anything is paid.
- Everymoney decision approved by a person
- ~10Kautomated tests
- 87%of scheduled steps as pure code
- Read-onlyconnectors throughout
03 Workflows, running
Press run and watch the work move.
Six everyday workflows. Each shows what arrived, what reads it, which rules check it and who decides. The data is made up, and so are the businesses.
Every run catches one common problem.
What gets caught: A bill 12% over the order is stopped at the rules check before anyone pays it.
- Claude reads
- Rules check
- A person decides
You sent a purchase order.
PO-3318 to Timber supplier, at the prices you agreed.
Then the supplier’s bill arrives.
Same supplier, same order number. It looks routine.
PDFPO-3318.pdf
Purchase orderPO-3318
To Timber supplier
- BearersA$3,800.0020 × A$190.00
- Joist hangersA$500.0040 × A$12.50
- Subtotal
- A$4,300.00
- GST
- A$430.00
- Total incl. GST
- A$4,730.00
PDFINV-20931.pdf
Tax invoiceINV-20931
From Timber supplier · Your order PO-3318
- BearersA$3,800.0020 × A$190.00
- Joist hangersA$560.0040 × A$14.00
- Subtotal
- A$4,360.00
- GST
- A$436.00
- Total incl. GST
- A$4,796.00
Claude (Anthropic’s AI model) reads both.
Claude turns both into the same fields. It doesn’t decide anything.
Plain rules match them, line by line.
The same checks every time. No guessing.
- ✓Not a duplicate bill
- ✓Supplier ABN active
- ✕Line 2 and the total differ
The mistake, in dollars.
Line 2 is billed above the price on your order.
Line 2 · 40 joist hangers
Ordered on PO-3318A$12.50a unit
+12%Billed on INV-20931A$14.00a unit
- Over per unit
- A$1.50
- × 40 units
- A$60.00
- GST
- A$6.00
- More to pay, incl. GST
- A$66.00
Bill total A$4,796.00 against the order’s A$4,730.00.
It waits for a person.
Nothing is paid until a person decides. Here, that’s you.
Accounts leadMessage from the bill check
Held. Not paid.
Needs your decision
Bill INV-20931 is A$66.00 over PO-3318 on line 2 (joist hangers). Approve, query the supplier or reject?
You decide: pick one to see what happens, or the run goes with “Query the supplier”.
Caught before anyone paid it.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Approved at A$4,796.00A$66.00 more than the order, approved on purpose, not by accident.
A draft bill in the ledger, and a note to #accounts naming who approved it.
XeroDraftSample
BillINV-20931
Timber supplier · ref PO-3318 · for the next pay run
- Bearers20 × A$190.00A$3,800.00
- Joist hangers40 × A$14.00A$560.00A$1.50 a unit over PO-3318, accepted
- GST
- A$436.00
- Total incl. GST
- A$4,796.00
Approved by the accounts lead
Slack #accountsSample
ClaudeApp9:42 am
INV-20931 from Timber supplier approved at A$4,796.00 by the accounts lead: A$66.00 over PO-3318, new hanger price accepted. Saved as a draft bill, not paid.
- Claude read PO-3318 and INV-20931 into the same five fields.
- Plain rules found line 2 at A$14.00 a unit, not the A$12.50 ordered.
- The accounts lead accepted the new price, so an A$4,796.00 draft bill went to the ledger with the reason on file.
When a bill matches its order, the accounts lead approves it and an A$4,730.00 draft bill goes to the ledger.
Held. Not paid.A$66.00 more than the order, stopped before anyone paid it.
Claude’s query to the supplier, quoting the order line and the difference.
EmailSentSample
- From
- Accounts lead
- To
- Timber supplier, accounts
- Subject
- INV-20931: line 2 is above PO-3318
Hi, thanks for INV-20931. Line 2, 40 joist hangers, is billed at A$14.00 a unit. Our order PO-3318 has them at A$12.50.
That is A$60.00 more, A$66.00 incl. GST: A$4,796.00 billed against A$4,730.00 ordered.
Could you send a credit note for A$66.00, or a corrected bill at A$4,730.00? We’ll hold the bill until then.
- PO-3318.pdf
- INV-20931.pdf
Drafted by ClaudeSent by the accounts lead
- Claude read PO-3318 and INV-20931 into the same five fields.
- Plain rules found line 2 at A$14.00 a unit, not the A$12.50 ordered.
- The accounts lead queried the supplier. The bill waits for a credit note or a corrected bill at A$4,730.00.
When a bill matches its order, the accounts lead approves it and an A$4,730.00 draft bill goes to the ledger.
Rejected. Not paid.A$66.00 more than the order, sent back before anyone paid it.
The bill, stamped and sent back to the supplier with the reason.
Returned to Timber supplierSample
Tax invoiceINV-20931
From Timber supplier · Your order PO-3318
- Bearers20 × A$190.00A$3,800.00
- Joist hangers40 × A$14.00A$560.00PO-3318: A$12.50 a unit
- Total incl. GST
- A$4,796.00
Rejected
Reason: line 2 is billed above the price on PO-3318. Please reissue at A$4,730.00.
Reason drafted by ClaudeRejected by the accounts lead
- Claude read PO-3318 and INV-20931 into the same five fields.
- Plain rules found line 2 at A$14.00 a unit, not the A$12.50 ordered.
- The accounts lead rejected the bill and sent it back: line 2 is above the price on PO-3318.
When a bill matches its order, the accounts lead approves it and an A$4,730.00 draft bill goes to the ledger.
Sample data: a fictional supplier, order and figures.
What gets caught: An emailed request to change bank details is held at the call-back rule until someone rings the number already on file.
- Claude reads
- Rules check
- A person decides
You have a saved supplier record.
Steel supplier Pty Ltd: the account, name and phone number you have paid and called before.
Then an email arrives.
Steel supplier, accounts: please pay a new bank account from Friday. It looks routine.
Supplier record
Supplier recordSteel supplier
Saved in the accounts system
- Account nameSteel supplier Pty Ltd
- Bank accountBSB 06•-••• · •••• 1180
- ContactAccounts manager
- Phone02 •••• 4410
- Next paymentA$12,300.00, Friday
Updated bank details
EmailNo attachment
From Steel supplier, accounts
- Asks forPay a new account from Friday
- Account nameA different business
- Bank accountBSB 08•-••• · •••• 9902
- Call us on04•• ••• 731
- SignedAccounts team
Claude (Anthropic’s AI model) reads both.
Claude turns the email and the record into the same details. It doesn’t decide anything.
Plain rules match them, line by line.
The same call-back rule every time: the name and the number must match what is on file.
- ✓Sender on the supplier record
- •Account and contact changed, as the email asks
- ✕Name not the supplier’s
- ✕Not the number on file
The risk, in dollars.
Friday’s payment would go to an account that isn’t the supplier’s.
Friday’s payment to Steel supplier
Would go to a different businessA$12,300.00on Friday
- Account named in the email
- A different business
- Phone number given
- Not the one on file
- Paid or changed so far
- Nothing
- Details that fail
- 2 of 4
A bank change by email is the classic payment fraud.
It waits for the accounts lead.
Nothing is paid or changed until a person decides. Here, that’s you.
Accounts leadMessage from the call-back rule
Held. Nothing paid or changed.
Needs your decision
Steel supplier’s bank details changed by email, and the name and phone don’t match our record. Call 02 •••• 4410, the number on file, before anything changes?
You decide: pick one to see what happens, or the run goes with “Call the number on file”.
Held until a call-back.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Held until the call-backA$12,300.00 held, not sent to an account in a different name.
A call-back booked to the number on file, with Claude’s notes for the call.
CalendarBookedSample
Today10:30 am
Call-back: Steel supplier’s bank details
- Ring
- 02 •••• 4410, the number on file
- Not
- 04•• ••• 731, the number in the email
- Ask
- Did you ask us to pay a new account?
- Held
- Friday’s A$12,300.00, until the call is on record
Call notes drafted by ClaudeBooked by the accounts lead
- Claude read the email and the supplier record into the same four details.
- Plain rules found the account name and the phone number don’t match the record, so nothing changes by email.
- The accounts lead rings 02 •••• 4410, the number on file, not the one in the email, and decides once the call is on record.
When the account is in the supplier’s name and the accounts lead’s call to the number on file confirms it, the details are updated with the call on record.
Rejected. Nothing changed.A$12,300.00 still goes to the account on file, not the one in the email.
A note to the supplier at the contact on file: nothing has changed.
EmailSentSample
- From
- Accounts lead
- To
- Steel supplier, accounts manager (contact on file)
- Subject
- A request to change your bank details
Hi, we had an email asking us to pay a new bank account from Friday. The account name and phone number don’t match our record, so we haven’t changed anything.
Friday’s A$12,300.00 goes to your account on file, ending 1180. If you did ask for a change, please call us.
Drafted by ClaudeSent by the accounts lead
- Claude read the email and the supplier record into the same four details.
- Plain rules found the account name and the phone number don’t match the record, so nothing changes by email.
- The accounts lead rejected the change and kept the saved details: Friday’s A$12,300.00 goes to BSB 06•-••• · •••• 1180.
When the account is in the supplier’s name and the accounts lead’s call to the number on file confirms it, the details are updated with the call on record.
Sample data: a fictional supplier, account and figures.
What gets caught: A finished job with unapproved hours and a variation not yet raised is held at the ready-to-invoice check, so no invoice goes out short.
- Claude reads
- Rules check
- A person decides
A job is finished.
J-2047, an office fit-out: 56 hours, parts, and a variation agreed on site.
Then it’s marked complete.
Ready to invoice, it says. It looks routine.
Job J-2047
Work doneJ-2047
Office fit-out for a property manager
- LabourA$6,720.0056 h on 14 timesheets × A$120.00
- PartsA$3,140.00All costed
- VariationA$1,850.00Agreed on site
- Subtotal
- A$11,710.00
- GST
- A$1,171.00
- Total incl. GST
- A$12,881.00
J-2047, complete
Ready to invoiceJ-2047
Marked complete, what it would bill now
- LabourA$5,280.0044 h on 11 approved timesheets
- PartsA$3,140.00All costed
- VariationA$0.00Not raised
- Subtotal
- A$8,420.00
- GST
- A$842.00
- Total incl. GST
- A$9,262.00
Claude (Anthropic’s AI model) reads both.
Claude turns the job and its completion into the same fields. It doesn’t decide anything.
Plain rules match them, line by line.
Hours, variation, parts: the same checks on every job, before an invoice is drafted.
- ✕3 timesheets not approved
- ✕Variation not raised
- ✓Parts all costed
The gap, in dollars.
Invoiced now, the job would go out A$3,619.00 short.
J-2047 · invoiced as it stands
Work doneA$12,881.00incl. GST
−28%Would be invoicedA$9,262.00incl. GST
- 12 h on 3 timesheets × A$120.00
- A$1,440.00
- Variation, not raised
- A$1,850.00
- GST
- A$329.00
- Short, incl. GST
- A$3,619.00
Work done A$12,881.00 against A$9,262.00 if invoiced now.
It waits for the project manager.
No invoice goes out until a person decides. Here, that’s you.
Project managerMessage from the ready-to-invoice check
No invoice sent.
Needs your decision
J-2047 is complete, but 3 timesheets (12 hours) aren’t approved and the A$1,850.00 variation isn’t raised. Approve the hours and raise the variation, or ask the site supervisor first?
You decide: pick one to see what happens, or the run goes with “Ask the site supervisor”.
Nothing goes out short.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Ready to invoiceNothing left off: the invoice is drafted for the whole job.
Claude’s email to the customer with the invoice for the whole job, ready to send.
EmailReady to sendSample
- From
- Project manager
- To
- Property manager
- Subject
- Invoice INV-5512: office fit-out, J-2047
Hi, please find INV-5512 attached for the office fit-out: A$12,881.00 incl. GST, due in 14 days.
It covers 56 hours of labour (A$6,720.00), parts (A$3,140.00) and the A$1,850.00 variation we agreed on site.
- INV-5512.pdf
Email and invoice drafted by ClaudeReady for the project manager to send
- Claude read the job and its completion into the same four fields, then drafted INV-5512 from the job notes: A$12,881.00 incl. GST, for the project manager to review and send.
- Plain rules found 3 timesheets not approved and the variation not raised.
- The project manager approved the 3 timesheets and raised the A$1,850.00 variation.
Once the project manager has reviewed and sent it, INV-5512 posts to the ledger, due in 14 days, and the job’s margin updates.
On the morning listNo invoice goes out A$3,619.00 short.
Claude’s question to the site supervisor, sent as a direct message.
Slack Direct message · Site supervisorSample
Project manager7:42 am
J-2047 is marked complete, but 3 timesheets (12 hours) aren’t approved and the A$1,850.00 variation isn’t raised. Can you confirm the 12 hours, and that the variation was agreed on site?
Drafted by ClaudeSent by the project manager
- Claude read the job and its completion into the same four fields. It drafts nothing until the rules pass.
- Plain rules found 3 timesheets not approved and the variation not raised.
- The project manager asked the site supervisor to confirm the 12 hours on the 3 timesheets. The job stays on the list until both blockers clear.
With hours, the variation and parts all in, the rules pass and Claude drafts the invoice the next morning: A$12,881.00 incl. GST, due in 14 days.
On the morning listNo invoice goes out A$3,619.00 short.
J-2047 stays on tomorrow’s morning list, with both blockers named.
Morning listBlockedSample
J-2047 · ready to invoice
Office fit-out · A$12,881.00 incl. GST when both clear
- To do: 3 timesheets, 12 h, not approved
- To do: Variation, A$1,850.00, not raised
- ✓Done: Parts all costed, A$3,140.00
- Owner
- Project manager
- Due
- Tomorrow, 7:30 am
Left on the list by the project manager
- Claude read the job and its completion into the same four fields. It drafts nothing until the rules pass.
- Plain rules found 3 timesheets not approved and the variation not raised.
- The project manager left it on tomorrow’s morning list, with both blockers named.
With hours, the variation and parts all in, the rules pass and Claude drafts the invoice the next morning: A$12,881.00 incl. GST, due in 14 days.
Sample data: a fictional job and figures. The 12 hours on the 3 timesheets are a sample figure.
What gets caught: An employee who has left, still on the pay run, is stopped at the rules check before the bank file is made.
- Claude reads
- Rules check
- A person decides
Payroll knows who is paid.
Approved timesheets: 41 employees and 3,032 hours. One person left on 3 October.
Then rostering sends the draft run.
Ready for approval, it says. It looks routine.
Payroll roster
Payroll rosterFortnight to Sunday
Approved timesheets and the leaver’s record
- Employees4142 last run, less 1 leaver
- LeaverOff the runFinished 3 Oct, final pay made
- Hours3,032On approved timesheets
Pay run, draft
Pay run, draftFortnight to Sunday
From rostering, before anything is paid
- Employees42On the draft run
- Leaver76 hFinished 3 Oct, paid again
- Hours3,108On the draft run
Claude (Anthropic’s AI model) reads both.
Claude turns the roster and the draft run into the same fields. It doesn’t decide anything.
Plain rules match them, line by line.
Award rates, super, leavers: the same checks every pay run.
- ✓Award rates
- ✓Super
- ✕1 leaver still on the run
The mistake, in hours and dollars.
The leaver would be paid again.
The leaver’s 76 hours
Paid to someone who leftA$2,969.3276 h at A$39.07 an hour
- Hours on the draft run
- 3,108
- Hours on the roster
- 3,032
- Payments on the draft run
- 42, not 41
- Hours paid to the leaver
- 76
Sample rate: the run’s average, A$118,460.00 over 3,032 hours.
It waits for the finance manager.
No bank file is made until a person decides. Here, that’s you.
Finance managerMessage from the pay run check
Stopped. No bank file.
Needs your decision
This pay run still pays a leaver 76 hours (A$2,969.32). Remove them and approve the run, query payroll, or reject it?
You decide: pick one to see what happens, or the run goes with “Query payroll”.
Stopped before the bank file.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Ready for the bank fileNobody is paid twice: the leaver comes off and the run goes on.
The approved pay run, with the leaver taken off and the bank file queued for pay day.
PayrollApprovedSample
Pay runFortnight to Sunday
- Employees paidOn the roster41
- Leaver, finished 3 Oct76 h, A$2,969.32Removed
- HoursOn approved timesheets3,032
- Total pay
- A$118,460.00
Bank file for 41 payments queued for pay day.
Changes explained by ClaudeApproved by the finance manager
- Claude read the roster and the draft run into the same three fields, then explained the changes against the last pay run for the finance manager.
- Plain rules found 1 leaver, finished on 3 October, still on the run with 76 hours.
- The finance manager removed the leaver and approved the run: 41 payments.
The bank file for 41 payments (A$118,460.00) is queued for pay day.
Stopped. No bank file.A$2,969.32 not paid twice: stopped before the bank file.
Claude’s question to payroll in #payroll, posted by the finance manager.
Slack #payrollSample
Finance manager2:15 pm
The draft run for the fortnight to Sunday still pays the employee who finished on 3 Oct: 76 hours, A$2,969.32. Can you take them off and send a corrected draft? Approved timesheets show 41 people and 3,032 hours. No bank file until then.
Drafted by ClaudePosted by the finance manager
- Claude read the roster and the draft run into the same three fields. It explains nothing until the rules pass.
- Plain rules found 1 leaver, finished on 3 October, still on the run with 76 hours.
- The finance manager queried payroll about the leaver’s 76 hours. The run waits for a corrected draft.
With no leaver on the run, the rules pass, Claude explains the changes against the last pay run and, once a person approves it, the bank file for 41 payments (A$118,460.00) is queued for pay day.
Rejected. No bank file.A$2,969.32 not paid twice: sent back before the bank file.
The draft run, stamped and sent back to rostering with the reason.
Returned to rosteringSample
Pay run, draftFortnight to Sunday
- EmployeesOn the draft run42
- Leaver, finished 3 OctPaid again76 hNot on the roster: A$2,969.32
- HoursOn the draft run3,108
Rejected
Reason: the run pays someone who left on 3 October. Please send a run of 41 people and 3,032 hours.
Reason drafted by ClaudeRejected by the finance manager
- Claude read the roster and the draft run into the same three fields. It explains nothing until the rules pass.
- Plain rules found 1 leaver, finished on 3 October, still on the run with 76 hours.
- The finance manager rejected the run and sent it back to rostering.
With no leaver on the run, the rules pass, Claude explains the changes against the last pay run and, once a person approves it, the bank file for 41 payments (A$118,460.00) is queued for pay day.
Sample data: a fictional business and figures. The A$39.07 hourly rate is a sample figure.
What gets caught: Work done this month with no bill in is caught at the cut-off check, so the close waits for the accrual.
- Claude reads
- Rules check
- A person decides
This month’s work is done.
Two subcontracts complete: J-2051, A$18,400.00, and J-2040, A$6,200.00.
Then the ledger is ready to close.
Bank and bills matched every day. It looks routine.
Work done, this month
Work doneThis month
Subcontract work completed, excl. GST
- J-2051 subcontractA$18,400.00Complete
- J-2040 subcontractA$6,200.00Complete
- Subcontract work
- A$24,600.00
Close checklist
Ledger at month-endDay 1
Before the close, excl. GST
- J-2051 subcontractA$0.00No bill, no accrual
- J-2040 subcontractA$6,200.00Bill in
- Bank lines1,284Matched daily
- Supplier bills312Matched daily
- Subcontract costs
- A$6,200.00
Claude (Anthropic’s AI model) reads both.
Claude turns the work done and the ledger into the same fields. It doesn’t decide anything.
Plain rules match them, line by line.
Cut-off and accruals: the same checks every month-end.
- ✓Cut-off
- ✓Bank and bills matched
- ✕Accrual missing on J-2051
The mistake, in dollars.
This month’s costs are A$18,400.00 too low.
This month’s costs, excl. GST
In the ledgerA$298,080.00costs
+6.2%With the work doneA$316,480.00costs
- J-2051, no bill, no accrual
- A$18,400.00
- Revenue this month
- A$460,000.00
- Gross margin as it stands
- 35.2%
- Gross margin with the accrual
- 31.2%
Without the accrual the board would read a margin 4.0 points too high.
It waits for the finance lead.
Nothing is signed off until a person decides. Here, that’s you.
Finance leadMessage from the cut-off check
Close on hold.
Needs your decision
Subcontract work on J-2051 (A$18,400.00) was done this month with no bill. Approve the accrual, ask the subcontractor for the bill, or hold the close?
You decide: pick one to see what happens, or the run goes with “Ask the subcontractor”.
The close waits for the accrual.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Accrual inCosts complete: the margin reads 31.2%, not 35.2%.
The accrual journal Claude drafted, approved by the finance lead.
Accounts systemApproved, to postSample
Journal · accrualThis month
J-2051 subcontract work, excl. GST · reverses next month
- Subcontract costs, J-2051DebitA$18,400.00
- Accrued expensesCreditA$18,400.00
Board pack commentary, drafted: gross margin 31.2%, down 0.8 points, with costs of A$316,480.00.
Drafted by ClaudeApproved by the finance lead
- Claude read the work done and the ledger into the same four fields, then drafted the commentary: gross margin 31.2%, down 0.8 points, for the finance lead to review.
- Plain rules found J-2051’s A$18,400.00 of work done with no bill and no accrual.
- The finance lead approved an A$18,400.00 accrual for J-2051.
Once the finance lead signs off the numbers, the board pack goes out on day 5.
Close on holdNo board pack with costs A$18,400.00 short.
Claude’s email to the subcontractor, asking for the J-2051 bill.
EmailSentSample
- From
- Finance lead
- To
- J-2051 subcontractor, accounts
- Subject
- J-2051: your bill for this month’s work
Hi, your work on J-2051 was completed this month, but we don’t have a bill for it yet.
Could you send it, or confirm the amount to accrue (we have A$18,400.00 excl. GST), by tomorrow? It needs to be in this month’s accounts.
Drafted by ClaudeSent by the finance lead
- Claude read the work done and the ledger into the same four fields. It drafts no commentary until the rules pass.
- Plain rules found J-2051’s A$18,400.00 of work done with no bill and no accrual.
- The finance lead asked the subcontractor for the J-2051 bill, or the amount to accrue. The close waits for it.
With the accrual in, the rules pass, Claude drafts the commentary and, once the finance lead signs off, the board pack goes out on day 5.
Close on holdNo board pack with costs A$18,400.00 short.
The close checklist, on hold, with the missing accrual named.
Close checklistOn holdSample
Month-end close
- ✓Done: Bank lines matched: 1,284
- ✓Done: Supplier bills matched: 312
- To do: Accrual for J-2051: A$18,400.00
- To do: Board pack: waits for the accrual
- Owner
- Finance lead
Held by the finance lead
- Claude read the work done and the ledger into the same four fields. It drafts no commentary until the rules pass.
- Plain rules found J-2051’s A$18,400.00 of work done with no bill and no accrual.
- The finance lead held the close, with the missing accrual named on the checklist.
With the accrual in, the rules pass, Claude drafts the commentary and, once the finance lead signs off, the board pack goes out on day 5.
Sample data: a fictional business and figures, excl. GST. Revenue and total costs are sample figures.
What gets caught: Two orders split to stay under an approval limit are caught at the limit check and go to a manager.
- Claude reads
- Rules check
- A person decides
You set approval limits.
A$5,000.00 an order, and A$5,000.00 a supplier a week, without a manager.
Then a purchase request arrives.
PO-7741, A$4,800.00 to Steel supplier, the day after PO-7740. It looks routine.
Delegation of authority
Approval limitsSite supervisor
What the supervisor’s lead may approve
- Per orderA$5,000.00Without a manager
- Per supplier, per weekA$5,000.00Without a manager
- Above eitherA managerGoes to
PO-7741, request
Purchase requestPO-7741
From the site supervisor, Tuesday
- Steel supplierA$4,800.00PO-7741, Tuesday
- Steel supplierA$4,900.00PO-7740, Monday, sent
- This week to Steel supplier
- A$9,700.00
Claude (Anthropic’s AI model) reads both.
Claude turns the request and the limits into the same fields. It doesn’t decide anything.
Plain rules match them, line by line.
Per order and per week: the same limits on every request.
- ✓Under the per-order limit
- ✓Supplier on file
- ✕A$9,700.00 to one supplier in two days
The mistake, in dollars.
Split in two, each order slips under the limit.
Steel supplier, this week
Limit without a managerA$5,000.00a week
+94%Ordered in two daysA$9,700.00two orders
- PO-7740, Monday
- A$4,900.00
- PO-7741, Tuesday
- A$4,800.00
- This week to one supplier
- A$9,700.00
- Over the weekly limit
- A$4,700.00
Each order is just under the limit. Together they need a manager.
It waits for a manager.
Nothing is sent until a manager decides. Here, that’s you.
ManagerMessage from the limit check
Not sent. Waits for a manager.
Needs your decision
Two orders to Steel supplier in two days total A$9,700.00, each just under the A$5,000.00 limit. Approve PO-7741, ask the site supervisor, or reject it?
You decide: pick one to see what happens, or the run goes with “Ask the site supervisor”.
Split orders go to a manager.
Claude (Anthropic’s AI model) reads. Rules check. A person decides.
Approved by a managerA$9,700.00 to one supplier this week, approved by someone allowed to.
PO-7741, approved by the manager and sent to the supplier.
Sent to Steel supplierSample
Purchase orderPO-7741
To Steel supplier · raised by the site supervisor
- Order to Steel supplierRequested on TuesdayA$4,800.00
- Order total
- A$4,800.00
Approved
Approved above the A$5,000.00 weekly limit: with PO-7740 on Monday, A$9,700.00 to Steel supplier this week. Reason on file.
Approved by the manager
- Claude read the request and the approval limits into the same three fields.
- Plain rules found A$9,700.00 to one supplier in two days, A$4,700.00 over the weekly limit.
- The manager approved PO-7741 above the weekly limit, with the reason on file, and it was sent to Steel supplier.
One order under both limits is approved by the supervisor’s lead and sent to the supplier.
Not sentPO-7741 isn’t sent until a manager decides.
Claude’s question to the site supervisor, sent as a direct message.
Slack Direct message · Site supervisorSample
Manager11:05 am
PO-7740 on Monday (A$4,900.00) and PO-7741 on Tuesday (A$4,800.00) both go to Steel supplier: A$9,700.00 this week, over the A$5,000.00 weekly limit. Why was it split into two orders? PO-7741 waits for your answer.
Drafted by ClaudeSent by the manager
- Claude read the request and the approval limits into the same three fields.
- Plain rules found A$9,700.00 to one supplier in two days, A$4,700.00 over the weekly limit.
- The manager asked the site supervisor why the order was split in two. PO-7741 waits for the answer.
One order under both limits is approved by the supervisor’s lead and sent to the supplier.
Rejected. Not sent.PO-7741 sent back: A$9,700.00 is over the weekly limit.
An email to the site supervisor saying why PO-7741 wasn’t approved.
EmailSentSample
- From
- Manager
- To
- Site supervisor
- Subject
- PO-7741 not approved: over the weekly limit
Hi, I haven’t approved PO-7741. With PO-7740 on Monday, it makes A$9,700.00 to Steel supplier this week, A$4,700.00 over the A$5,000.00 weekly limit.
If the steel is needed, please raise one order for the full amount and it will come to me.
Drafted by ClaudeSent by the manager
- Claude read the request and the approval limits into the same three fields.
- Plain rules found A$9,700.00 to one supplier in two days, A$4,700.00 over the weekly limit.
- The manager rejected PO-7741 and sent it back to the site supervisor.
One order under both limits is approved by the supervisor’s lead and sent to the supplier.
Sample data: a fictional supplier, orders and limits.
Sample data. Claude reads and drafts; the rules and a person decide what happens. Nothing is sent, posted or paid without that approval.
04 Where I draw the line
Software reads and checks. A person decides.
One supplier bill, at four levels.
- SoftwareReads it
Pulls out the supplier, the amount and the dates.
- SoftwareChecks it
Against the order, the ABN and the limits.
- SoftwarePrepares it
Codes it and drafts the entry.
- A personDecides
Pays it.
Steps 1 to 3 can run on their own. Step 4 belongs to a person.
05 The builder thread
Building systems since 2012.
- 2012An MYOB cloud migration and Tanda cloud payroll for a landscaping business.
MYOBTanda
- Early yearsExcel macro-driven full stocktakes for an off-road and 4WD retailer.
Excel
- 2014–17Xero and Employment Hero implementations as an expert integrator at an accounting firm.
XeroEmployment Hero
- 2018–22As CFO, rebuilt the reporting, built a rolling-forecast model and took the close from 21 days to 5.
21→5days to close the month
- 2022–23A productised finance automation stack, adopted by more than 10 clients.
10+clients on the stack
XeroAirtableZapier
- From 2023Zapier and Power Query automation of payroll and AP, plus an automated month-end: more than 500 labour hours a year removed. That is time, not cash: I claim no dollar saving here. What it costs to own shows the running costs beside the hours.
500+labour hours a year removed
ZapierPower Query
Alongside my roles I design and build systems. The most complete is an agentic finance fleet, built and run inside the group where I lead finance.
- ~10Kautomated tests
- 87%of scheduled steps as pure code
06 The tools I work in
Connecting the systems you already run.
- LedgersXero certifiedMYOBQuickBooks
- PayrollEmployment HeroTanda
- AutomationZapiern8nPower QueryExcel
- Data and registersAirtableSmartsheetSharePoint
- CRMHubSpot
- Job managementSimproServiceM8Buz SoftwareWorkshop Software
I connect what a business already runs before I suggest replacing anything. Most businesses don’t need a new system; they need the ones they have to agree with each other. I start with the ledger, because that is where the numbers have to reconcile, then connect payroll, job management, the CRM and the registers around it.
Connections are read-only wherever they can be, so nothing changes in your accounts without a person approving it. Rules handle the checks that should never vary. AI is used only where judgement is needed, such as reading a supplier bill, and every money decision still goes to a person.
Sometimes replacing a system is the right call. I recommend it only when keeping it costs more, in rework, delay or risk, than moving.
07 Three lenses
Three roles, one person.
The same problem looks different to an operator, an accountant and a builder. I bring all three, so the fix covers the cause, the numbers and the system.
An operator, a Chartered Accountant and a builder see different causes.
- 1OperatorVariations done on site and never raised with the customer.
- 2Chartered AccountantCost to finish not updated, so the forecast looked fine for weeks.
- 3BuilderA weekly check that flags any job down 4 points or more, with the cost lines behind it.
- 1OperatorTwo large jobs start before their deposits land.
- 2Chartered AccountantDebtor days have crept up, so cash trails the profit.
- 3BuilderA 13-week forecast refreshed from the ledger each morning shows week 8 a month early.
- 1OperatorSign-offs queue behind one person.
- 2Chartered AccountantReconciliations wait for month-end instead of running daily.
- 3BuilderMatching runs every day, so the close starts on day 1 with clean balances.
Illustrations, not client figures.
08 Principles
Three rules the systems follow.
- 01
Code computes, models explain.
Totals, matches and checks are done in code that gives the same answer every time. Language models read, summarise and draft. They never do the arithmetic.
- 02
Fail closed.
When something doesn’t reconcile, the system stops and tells a person. It doesn’t guess and carry on.
- 03
A person owns money decisions.
Anything that pays, posts or changes a record is approved by a named person.
Need one workflow built at a fixed price? That’s Works Better. worksbetter.ai
What’s happening in your business?
Tell me in a few sentences. I reply personally within one business day.