What your grocery receipt actually knows about you

You throw away a detailed record of your own spending every week. Here is what is printed on it.

There is probably one in your coat pocket right now. Folded twice, slightly furry at the edges, printed on thermal paper that will be blank by March. You will find it in a few weeks, glance at the total, and throw it out.

That piece of paper is the most detailed record of your spending that anyone gives you for free. It is more granular than your bank statement, more honest than your memory, and more specific than any budgeting app's guess about what you bought. And almost everybody bins it.

What is actually printed on it

Look at a grocery receipt as data rather than as litter, and it is a surprisingly complete little record. A typical one carries:

  • The store, often the specific branch, not just the chain.
  • The date and time, down to the minute.
  • Every line item: a description, a quantity, a unit price and a line total.
  • Weight-based items priced per kilogram, with the actual weight.
  • Discounts, itemised: the promotion applied to that specific product on that specific day.
  • Tax flags per item, which is a surprisingly good proxy for whether something counted as a staple.
  • The subtotal, tax and total.

Stack fifty-two of those up and you have a year of your household's consumption, itemised. Nobody has to estimate anything. It is not a survey or a projection. It is what happened.

Three questions only your own receipts can answer

1. Where did the month actually go?

Most people can name their rent to the dollar and their groceries to the nearest hundred, with a shrug attached. That shrug is the problem. "About four hundred a month" covers a lot of ground, and it covers it in both directions.

Line items turn the shrug into a breakdown. Not "groceries: $412", but how much of that was staples, how much was household goods that happened to be in the same trip, and how much was the snacks that got added at the till. Those are three completely different spending decisions, and your bank sees them as one number.

2. What has this thing cost me, over time?

Here is the question that changed how we thought about this. Not "what does milk cost", which you can look up. But what have I paid for milk, every time I bought it, for the last six months?

That series only exists in your receipts. It is specific to the sizes you buy, the brands you like and the shops you actually go to. It includes the weeks you caught a promotion and the weeks you did not. It is your price, not a national average, and it is the only one that affects your budget.

3. What quietly changed price?

Prices rarely announce themselves. A staple goes up thirty cents, then twenty, then fifteen, spread across four months, and you never notice because you never had the previous figure to compare against. You just have a vague feeling that the same trolley costs more than it used to.

A price series makes the drift visible. Sometimes the useful discovery is not that something got expensive, but that something you assumed was expensive never moved at all, and that the increase was somewhere else entirely.

Why your banking app can't do this

Your bank sees one line: a merchant name and a total. GROCERY STORE $84.12. That is the whole picture, as far as your statement is concerned.

Which means every budgeting tool built on bank feeds, and that is most of them, is doing category assignment on a single opaque number. It can tell you that you spent $84.12 at a grocery store. It cannot tell you that $31 of it was a bag of rice you buy every six weeks, or that the same bag cost $2.40 less in June.

The gap between "you spent $84.12 on groceries" and "you spent $16.40 on the rice you buy every six weeks, up from $14 in the spring" is the whole game.

This gets worse the further your shopping sits from a big-chain, single-language, well-catalogued basket. If you shop at independent South Asian grocers, where the receipt says TOOR DAL 1KG and the categoriser has never heard of toor dal, the generic tools file most of your trolley under "Other" and shrug. Again with the shrug.

The awkward part: it's on paper

If receipt data is this useful, why doesn't everyone use it? Because getting it off the paper is genuinely hard.

Receipts are printed in cramped monospaced type on thermal paper that fades. They get folded, crumpled and photographed at an angle in bad kitchen light. Descriptions are truncated into abbreviations that vary by store. The same product might be MLK 2% 1L in one shop and MILK2PC1LT in another. Quantities live in different columns depending on who printed the thing. Weight-priced items follow their own conventions entirely.

Reading that reliably means more than optical character recognition. It means working out which of these lines is even an item, which number is a unit price and which is a line total, and whether TOOR DAL 1KG this week is the same product as TOORDAL 1 KG six weeks ago, because if it isn't matched, there is no price history.

It also means being careful about what you don't keep. The bottom of a receipt is often a small pile of payment data: card digits, an authorization code, a terminal ID. None of that is needed to know what a bag of rice cost, and it should never survive the trip into storage. We strip it before anything is saved, using plain deterministic pattern-matching rather than trusting a model to police its own output. That is the sort of thing we would rather over-explain than under-do. The privacy policy has the full list.

Start with the pocket

You do not need a system, a spreadsheet or a new financial philosophy. You need to stop throwing away the paper.

Photograph the next receipt before it goes in the bin. Then the one after that. Within a month or so you will have something no budgeting app can hand you: your own numbers, itemised, in your own shops.

That is the whole idea behind what we're building. NearbyStore reads the receipt, keeps the line items, and turns them into a monthly picture and a price record for the things you buy again and again. It is free while we're in beta, and it runs in your browser.

Try the beta All posts