What Creditcrest Enrich gets right
Measured on 20 September 2026, against names nobody here chose. Re-run it with npm run audit:enrich.
Two things are measured and they are not the same thing. Coverage is how many payees it categorises at all. Accuracy is how many of those it gets right. A single number combining them would hide whichever half is worse, so they are never multiplied together on this page.
What it was run over
- OpenStreetMap branded Australian outlets (ODbL), judged once per brand, over 20,502 sites.
- The Consumer Data Right Register: all 84 energy retailers a household can hold a bill from, all 117 banking brands, and all 131 non-bank lenders.
- Every insurer registered to sell private health cover in Australia, from the Private Health Insurance Ombudsman (54 names, including the brands one fund underwrites for another company).
- Every Commonwealth payment the Department of Social Services reports recipients for, taken from the column headings of its own release (24 names, read as money in).
- Forty thousand real venue trading names from three states’ liquor and fuel registers (CC-BY), which carry no right answer and so measure what this SAYS rather than whether it is right.
The curated list in this repository — the one the merchant rules were written from — scores full marks and appears in no figure here. A list that was used to write the rules measures the rules against themselves.
Accuracy, per confidence band
| Band | Names | Claimed a category | Right | Accuracy | What it means |
|---|---|---|---|---|---|
| named | 227 | 227 | 226 | 99.6% | A rule matched the merchant’s name in the description. |
| kind | 89 | 89 | 88 | 98.9% | A rule matched a word for a kind of business inside a name this has never seen. It puts the money on the right line and it does not identify the payee. |
| inferred | 0 | — | — | — | No rule matched. The size and direction of the money were used instead, which is a guess and is marked as one. |
| declined | 10 | — | — | — | The name is recognised and is deliberately not categorised, because the name does not settle what the payment was. |
| unknown | 927 | — | — | — | Nothing in the description matched a rule. |
A figure this high means "two wrong answers in 316", not "almost never wrong". It is measured over the brand names in the lists above, and the long tail below is 39,548 real venue names of which four in five are not read at all. That is why the denominator is in the table and why coverage is printed beside accuracy everywhere on this page: either figure on its own is a number somebody will quote wrongly.
It got there by fixing wrong answers rather than by adding merchant names. Every collision the audit found was one brand trading in two industries — Costco sells fuel and groceries, Harcourts is a real-estate agency and a pub, Arcline is RACV’s electricity brand and RACV is an insurer. No rule in a list fixes a fact about the world. Where a word in the name settles the question the rules use it; where nothing settles it the name is recognised and deliberately not categorised, which is what the declined band is.
declined and unknown carry nought, which is not a low opinion of them: they are the two answers that make no claim about a category at all, and nought is the correct confidence in a claim nobody made. inferred is the one band no payee list can measure — it is a guess from the size and direction of a credit, and measuring it would take a real statement with the income labelled on it, which this repository does not have and will not invent.
Accuracy and coverage, per category
Every category has to be right at least 95% of the time it answers, one at a time rather than on average — an average passes while one line of a household's assessment is wrong two times in five, and the line that is wrong is somebody's petrol or somebody's rent. Coverage is printed beside it, always. The two trade against each other: a category can reach full marks by answering once, so a figure with no coverage next to it says nothing.
| Category | Names | Categorised | Right of those | Third party named | Clears 95% |
|---|---|---|---|---|---|
| Transport and fuel | 225 | 10.7% | 95.8% | 14.2% | yes |
| Shopping | 193 | 16.1% | 96.8% | 15.5% | yes |
| Eating out and takeaway | 190 | 24.2% | 100.0% | 16.3% | yes |
| Loan repayment | 113 | 14.2% | 100.0% | 14.2% | yes |
| Utilities | 84 | 79.8% | 100.0% | 77.4% | yes |
| Insurance | 66 | 50.0% | 100.0% | 25.8% | yes |
| Cash withdrawal | 43 | 23.3% | 100.0% | 0.0% | yes |
| Health | 41 | 36.6% | 100.0% | 17.1% | yes |
| Groceries | 31 | 51.6% | 100.0% | 51.6% | yes |
| Rent | 26 | 26.9% | 100.0% | 15.4% | yes |
| Government benefit | 24 | 37.5% | 100.0% | 37.5% | yes |
| Mortgage repayment | 21 | 100.0% | 100.0% | 0.0% | yes |
| Education and childcare | 17 | 58.8% | 100.0% | 11.8% | yes |
| Entertainment and subscriptions | 9 | 22.2% | 100.0% | 22.2% | yes |
| Travel | 8 | 12.5% | 100.0% | 12.5% | yes |
| Phone and internet | 6 | 50.0% | 100.0% | 50.0% | yes |
| Credit card payment | 4 | 100.0% | 100.0% | 0.0% | yes |
| Gambling | 1 | 0.0% | — | 0.0% | — |
credit card payment, 4 names; gambling, 1 name. A share of four names is not a measurement, and the row is here because the register says so rather than because the figure means anything. Asking OpenStreetMap for bookmakers, for instance, gets one Australian brand carrying a brand tag — and the rules do not recognise it, which is the finding rather than the percentage.
Coverage is weakest at gambling. Of 1 name the corpus puts on that line, 0.0% are categorised at all, and — of THOSE are right. That is a fact about how many independent businesses there are rather than about the rules: nobody writes a rule for every forecourt in the country.
Accuracy is weakest at transport and fuel. 95.8% of the answers it does give there are right. What is left anywhere on this table is a brand that trades in two industries: Costco sells fuel and groceries, Harcourts is a real-estate agency and a pub, La Trobe is a university and a mortgage lender. Where a word in the name settles which — INSURANCE, ELECTRICITY — the rules use it; where nothing settles it, the name is recognised and deliberately not categorised, which costs coverage and is why that column is printed beside this one.
Under all of it is one number: four out of five real Australian venue names are not recognised at all. Everything else on this page rests on that being said out loud.
The names it must not answer for
151 bank names and bank brands, where the right answer is no answer — a payment to a bank does not say whether it was a mortgage, a card, a fee or the person moving their own money. None of them was categorised. 2 of them are in the rules with no category against them, on purpose, so that no broader rule can guess and so the file can say the name was looked at.
The long tail
39,548 real Australian venue trading names from three states' liquor and fuel registers. There is no right answer to compare against, so this is what it says rather than whether it is right:
| Band | Names | Share |
|---|---|---|
| named | 1,984 | 5.0% |
| kind | 5,111 | 12.9% |
| unknown | 32,417 | 82.0% |
5.0% of real Australian venue names have their third party named. A further 12.9% are categorised from a word for a kind of business sitting inside a name this has never seen, which puts the money on the right line and is not merchant recognition and is not sold as it. The rest say unknown.
What is not measured at all
5 of the 23 categories have no independent corpus. Silence here is not a pass.
| Category | Why there is no list to measure it against |
|---|---|
| Salary or wages | An employer is any of two and a half million registered businesses. The only complete list is the business register, and a household is paid by one row of it. |
| Other income | A dividend, a refund, a private sale. Nobody publishes a register of the people who send a household money. |
| Buy now pay later | The providers are in the Consumer Data Right’s non-bank lending register and their names do not say the product — "Zip", "humm" — so the register settles that they are credit providers and not which kind. They are measured as a commitment rather than split out, because splitting them would be this repository deciding the answer the corpus declined to give. |
| Transfer | Not a payee at all. A transfer is recognised from the words a bank writes for its own rails, so the only corpus would be bank statement text. |
| Bank fees and interest | Not a payee either. A bank names its own fees, so the wording belongs to the bank rather than to a company a register could list. |
A reason against each rather than a list, because a list invites the reader to assume nobody looked. Somebody did, for every one of them, and the reason is a different reason each time: a register that does not exist, a register that exists and blocks fetchers, and a payee that is not an entity at all. Saying so is the only honest thing available.
How to check any of this
npm run audit:enrich prints every table on this page and compares each figure against the record committed in src/enrich.js, and exits non-zero if any of them has moved. The test suite runs the same comparison, so a change to the merchant rules that moves a number goes red without anybody having to remember to run an audit.