What did you actually buy?
Your statement answers with a merchant name. Moa answers with the items — from the amount, the merchant, and your own habits. So you can read last month, see what actually got more expensive, and hold a goal counted in coffees.
A charge screen from the Moa app.
What your bank sends. What Moa returns.
A descriptor, an amount, a timestamp, and a category code. Every other app stops here.
Items, prices, and how sure we are. No photo of a receipt was involved.
Three questions a category cannot answer.
Item detail is not the offer. It is what makes these answerable at all.
What was that $47.20 on the 14th?
Three weeks later, nobody can reconstruct a dinner from a merchant name. Moa returns the dishes, the prices, and how sure it is — so a charge you cannot place becomes an evening you remember.
A basket is a proposal until you confirm it. The chip says which it is.
A descriptor is the whole of what your bank sends. An app that shows you categories is not withholding the items — it does not have them.
Am I paying more than I was?
Not the country’s inflation — yours. Moa reprices the things you actually buy, in the counts you actually buy them, at the prices they carried then and now.
The same basket cost $218.11 at March prices and $237.36 at August prices.
Your basket at March prices against the same basket today. The rate wears ≈ because dated menu prices are evidence, not receipts.
A personal index needs items and unit prices. No national index is about one person, and a category total cannot tell a price rise from a second visit.
Can I hold myself to fifteen coffees?
A budget in dollars is a number you argue with. A budget in things is a count you can see: eleven of fifteen, four left, and an evening line that says what today added.
Two coffees today, both at Pine St. Eleven this month.
No running total, on purpose. A live figure of what you have spent makes people spend more, so Moa counts the things instead.
Counting things requires knowing the things. A spending cap can only be measured after the fact; a count can be checked before the next one.
Four roads to an item, and the wall across each.
There are four ways the industry gets item-level detail to a person. Each needs something from someone else. These are mechanisms, not verdicts — every row is checkable.
How it works
Import a statement
Bring in your bank's own statement file. You choose what comes in.
Moa proposes what was inside each charge
Ranked baskets with a confidence on each — and a plain refusal when nothing fits well enough.
One tap confirms, and it gets sharper
Your corrections build a personal prior. It learns your usual order, not the average customer’s.
Arithmetic before AI
Tax reversal, tip decomposition, and exact-sum search over real menu prices are done with exact integer arithmetic. What you have confirmed before weighs which basket is likelier. A language model reads receipts and what you type — it is never asked to do the math.
Only one basket on this menu sums exactly. When several do, your own confirmations weigh which is likelier — nothing guesses at the addition.
Too many item combinations fit this amount. Moa will not pick one for you.
- Category · groceries
- Total · exact$147.83
- Items · unknown
Honest about uncertainty
Every answer is a probability distribution, not a single confident guess. When thousands of item combinations fit a charge — a big grocery run, say — the app tells you exactly that, along with the items it can still vouch for, instead of inventing a receipt.
A dashed outline always means a stated absence. It is the same mark everywhere in the app, and it is the one we are proudest of.
It learns from you, one tap at a time
Confirm or correct a single prediction and every future inference at that merchant gets sharper. Your corrections build a personal prior — the app learns your usual order, not the average customer’s.
Two other baskets sit within a point of it. Nothing to go on but the menu.
Your usual order now leads at this merchant, and at the one across the street.
Private by architecture
Pseudonymized by architecture
Your identity is replaced with an opaque pseudonym before any inference runs. The engine never receives your name, email, or account number.
Prompts carry no identifiers
Model prompts carry the merchant, the amount, and candidate items. They never carry who you are.
No vendor that trains on your data
We work only with model vendors under terms that forbid training on submitted data. A tier whose terms cannot be verified is disqualified.
And we say “pseudonymized,” not “anonymous,” because purchase histories are identifying by nature and we would rather be precise than reassuring.
Read the full privacy policyThe sceptical ones first
How can it know without a receipt?
From the amount, the merchant, the time, public menu and price data, and your own past confirmations. Tax is reversed and tips decomposed with exact integer arithmetic, leaving a subtotal to explain; a search finds the baskets that sum to it exactly. Your own past confirmations then weigh which of those baskets is likelier for you.
Do you see my bank password?
No. Moa never asks for one — a statement file is a file you already have, exported by your bank and handed over by you. The transactions themselves are kept on our server under your pseudonym, which is what lets your history survive a reinstall — what is never stored beside them is your name, your email or a bank credential.
What happens when it is wrong?
One tap corrects it. The correction is stored with that transaction under your pseudonym, and the next inference at that merchant is sharper — your own confirmations are what make your future predictions better.