A dashboard over Xero and MYOB — and the demo is open.
Xero will tell you everything that already happened. That is rather the problem with it. Open it on a Monday and you get a list of reports, every one of them correct, none of them saying which one you should have opened first.
So we built the other thing. It reads Xero and MYOB through their own APIs, holds four company files at once, and instead of another menu it puts a sentence at the top: here is what is going wrong this month, here is what it is costing you, do this about it. It is open at dashboard.twinmind.au with no sign-in and nothing to install. Every picture below is a screenshot of it.
One caveat before the numbers. The demo’s ledger rolls forward with the calendar, so anything that depends on today’s date — the cash forecast, what has gone overdue, what each finding is worth — will have moved a little by the time you read this. The figures quoted below are that file as it stood on 10 September 2026. The shapes are the part that holds still.
The one rule the whole thing is built on
An owner does not need more numbers. He needs to be told which number is the problem this month.
That line decided the architecture. About fifty rules run over the file every time the page loads, and a rule that fires has to answer two things before it is allowed on screen: how many dollars are at stake, and what to do on Monday. The charts underneath are the evidence. The ranked list is the product. On the demo file it currently runs to thirteen findings with about A$2.9m of value in play, and the one thing tagged critical sits eleventh, because what is at stake there is A$952. That ordering is deliberate, and it took a bug to get right.
The bug that taught us the most
The first version ranked findings by severity and then by money. Which is how a slow-paying customer worth A$2,275 came to sit at the top of a page reporting a A$493,000 cash shortfall. Both were tagged critical. The sort was doing exactly what it was told.
The repair is one line of arithmetic: rank by the base-ten logarithm of the dollars, then nudge by severity. A point of rank is now one order of magnitude of money, and “critical” is worth one and a half of them. That is enough to lift a genuine emergency past a larger but duller number, and never enough to put a rounding error on top of a crisis. The written verdict leads with the same finding the list leads with, on purpose. Two different most-important-things on one screen is worse than either of them alone.
Cash, thirteen weeks out
Ask an owner what he actually wants to know and it is rarely last month’s gross margin. It is whether payroll clears in October.
So the forecast runs six hundred times. On the demo file it is built from 255 unpaid invoices, 94 unpaid bills, the payments it recognised as recurring by spotting the same amount arriving on the same rhythm, and new sales at that file’s own recent run rate. The line is the likeliest path and the band is the honest range.
On this file the line drops under the safety buffer in the week of 23 October, about A$344,560 below the A$565,147 that business needs to trade comfortably. Six weeks of warning is a conversation with the bank, or a fortnight of firmer collections. Six days of warning is not a conversation at all; it is a decision somebody else makes for you.
Beside the chart sits every assumption it used, in a table: what it thinks you invoice in a week, how long your customers really take to pay (52 days on this file, whatever the invoice says), what leaves anyway. A forecast you cannot argue with is a forecast nobody trusts, and an owner who cannot see the assumptions simply stops believing the line.
Four files, two vendors, one set of totals
Xero and MYOB disagree about what a sign-in is, and you cannot paper over it. One Xero authorisation legitimately covers several organisations: one token, and each call names the organisation it is for. MYOB is one authorisation per company file, and since March 2025 the granular kind has been compulsory for new keys; from September 2026 it is the only kind there is. So the demo carries one Xero connection holding two organisations, and two separate MYOB connections. Settings leads with the companies and treats the sign-in as a subtitle, because nobody running a business should have to hold the word “connection” in his head.
Adding four files together is where the quiet errors live. Money is additive: four files’ cash really is the group’s cash. A count of customers is not. Somebody who buys from two of your companies is one customer, and summing the parts inflates him into two.
Accounts roll up by name, never by code. Xero numbers wages 477 and MYOB numbers the same thing 6-1477, so keying by code gave the consolidated view two “Wages and Salaries” lines, each holding half the group while presenting itself as the whole line. Nothing about the page looked broken. It was simply wrong by half. MYOB also hands over its amounts tax-inclusive, and the connector strips the tax on the way in: compare a raw MYOB figure against a raw Xero one and you are out by a tenth, every single time.
The paragraph at the top is written by a model that may not do arithmetic
The plain-English verdict on the front page is generated. None of the numbers in it are.
The order matters. The metric layer computes a pack of finished facts first, and the model is allowed to reword what is already in that pack and nothing else. Then a validator pulls every number back out of the draft and checks it against the facts at 2.5 per cent tolerance. One number that is not there and the entire draft is discarded, not patched, and the page falls back to the plain template.
That rule throws away good paragraphs, and we kept it anyway. A dashboard that is 99 per cent right about money is not 99 per cent useful. It is useless, because you have to go and check all of it.
Down to the bill, and down to the person
The profit page is a month-end pack that nobody assembles: this month against last month, against the same month last year, against the year to date, with costs printed in brackets the way a real set of accounts does it, so green means the movement went the way you wanted on every line.
The bridge is the part people click. It takes last month’s profit and this month’s and puts one bar between them for every reason, and the bars add up to exactly the difference, at every level. Click one and it opens: the cost group, then the account inside it, then the supplier or the employee, then the actual bill or the actual pay line. Wages arrive from Xero Payroll and from MYOB’s pay runs at month-by-employee-by-category grain, which is what turns “why did people cost more in August” from a question for the bookkeeper into two clicks.
Beside it, break-even. On the demo file about A$498,962 of sales a month covers everything, and that file missed the mark in four of the last twelve months, worst in January when it fell A$80,039 short. Twelve small squares, red for a month that did not cover its costs. Nobody has ever needed that chart explained.
What it refuses to say
The most useful thing in the metric layer is a refusal.
Margin only appears where a cost price genuinely exists behind at least 90 per cent of a group’s revenue. Before that rule went in, a services group where two-thirds of the revenue carried no cost at all displayed an 80 per cent margin, and claimed more gross profit from that one group than the whole business earned. The arithmetic was flawless. Summing cost over the lines that have one while summing revenue over all of them is a calculation; it just is not a margin.
A partial-cost margin is not conservative. It is wrong in the flattering direction, which is the worst direction for a number about your own business to be wrong in.
Three more limits, stated because each one is a decision rather than a gap. There is no budget variance, because comparing against a plan needs a plan and neither API holds one, so it would have to be typed in by hand. There is no multi-currency yet; the schema carries the currency, so the day it matters it is a rate table rather than a redesign. And it never writes. Read-only against both vendors, in every code path. Nothing this dashboard does can touch a set of books.
Go and press things
The demo is genuinely open, and it is read-only for everyone including us, so there is nothing you can break. Switch companies with the picker at the top, then watch what happens to the customer count when you do — that is the sub-additive rule from three sections ago, doing its job in front of you.
Open the dashboard and click anything.
Eight tabs over four company files, two on Xero and two on MYOB. Read-only, no account, nothing to install.
Open the demo → dashboard.twinmind.auSteady, and running on a thinner margin of safety than its owner thinks.
Very profitable, and leaning hard on a single client.
Losing money, cash tied up for months, a fifth of the shelves not moving.
Growing fast, and running out of cash precisely because of it.
Four invented Australian businesses, given deliberately different problems — a demo where everything is healthy shows you nothing.
Every figure in there is made up. What sits underneath them is not: each business has a full double-entry ledger, where every sale, purchase, payment, payroll run, depreciation charge and written-off debt posts a balanced journal and the trial balance comes out at zero. That is the only reason the consolidated totals can be checked at all — and they are, by 226 assertions that re-add the whole expense tree and tie three control totals back to the ledger before anything ships.
The day the real keys arrive
Nothing in the code changes. Each connection carries its own API address, so you point it at Xero or MYOB proper, paste the client id and secret from your own developer app, press Connect and tick the company files you want counted. The demo is the same product running against a different server, which is exactly why we built it that way round.
It is the same joining work we do everywhere else: an API integration against whatever a business already runs, pointed here at the two ledgers most Australian businesses keep their books in. If yours are not Xero and MYOB, the shape does not change — the connecting is the same job, and we have done it against a legacy ERP that answers in 38 milliseconds as well as against the cloud ones.
A dashboard that is 99% right about money is not 99% useful. You still have to check all of it.
Building this took the route we take with a client, and it is on offer the same way: a fixed A$2,000 audit, one to three days across your systems, and the costed plan is yours whether you build it with us or not. It answers two things in dollars — which block of work is worth automating first and what it is costing you a year, and what your data could carry that it currently does not. The first hour, with both founders, is free.
Related reading: the whole business on one screen, which is this same idea with the jobs, the stock and the pipeline in it and not only the ledger, and connecting Xero to the systems you already run. If the number you chase every month is who owes you, the chasing itself can be automated too, and the matching of bank lines to the ledger along with it.
Want this over your own file?
Book a free meeting with the founders. Bring your Xero or MYOB, tell us the number you go looking for every month, and we will tell you honestly what it takes to put it on one screen. The A$2,000 audit that scopes it leaves you a costed plan either way.
Book a free 60-minute meetingOr reach us right here, right now - talk, type or call, whichever suits you:
Live video & voice calls run 9am-5pm Brisbane; chat, the AI assistant and email are open any time. Calls are transcribed live into your chat, so everything you discuss stays right here in your messages.