Personal Price Memory
Compare your own purchases by unit price, package size and price history.
Try an example: Try an example
How it works
Track your own purchase history by product and currency, normalize units and compare pack changes, shops and unit-price trends.
- Products are grouped by trimmed case-insensitive name, compatible unit and three-letter currency code. Currency is never converted; older project rows without a code use EUR.
- Same-date entries retain input order. History points represent entered purchases, not observations on unrecorded dates. The browser chart can switch product groups; the default API chart shows the first group. Dates use a true time axis; connecting lines are visual guides, not interpolated observations. These are personal reference prices, not a market-wide best price.
Part of Ledgerly
-
Ledgerly Household finance & life-admin desk
Budgets, bills, subscriptions, loans, contracts and deadlines on one private desk.
How to use Personal Price Memory
Record what you paid, compare unit prices across pack sizes and shops, and spot shrinkflation in your own purchase history.
What it is for
The price of coffee did not change, but the bag got smaller. A shelf label says "special offer", but is it cheaper than what you paid last month? Supermarkets make such comparisons hard on purpose. This tool keeps your own purchase history in one table, converts every entry to a price per kilogram, litre or item, and shows for each product the latest, lowest, highest and median unit price, the change since the previous purchase and how the pack size moved.
It only knows what you enter. It is a personal reference, not a market-wide price comparison, and it never converts between currencies.
Worked example
The default has two coffee purchases: 500 g for 6.00 EUR at Shop A on 2026-10-01, and 450 g for 6.00 EUR at Shop B on 2026-11-01. The price on the shelf stayed the same, but the result shows Latest unit price 13.3333 EUR/kg against 12 EUR/kg before: a Unit price change of +11.111 % and a Pack size change of −10 %. That is shrinkflation in two numbers.
A longer history with an oat drink and rice:
| Product | Shop | Date | Pack | Price |
|---|---|---|---|---|
| Oat drink | Market | 2026-08-02 | 1 l | 1.49 |
| Oat drink | Market | 2026-09-06 | 1 l | 1.59 |
| Oat drink | Discounter | 2026-10-04 | 750 ml | 1.29 |
| Rice | Market | 2026-10-04 | 1 kg | 2.19 |
Result: "2 product/currency groups across 4 purchases." For the oat drink the cheapest-looking pack is the most expensive: 1.29 for 750 ml is 1.72 EUR/l, against 1.59 for the litre in September. The tool reports latest 1.72, lowest 1.49, highest 1.72, median 1.59, a unit price change of +8.176 %, a pack size change of −25 % and a total of 4.37 EUR spent. Rice has only one purchase, so change values stay empty.
How to read the result
- Product trend draws the unit price of one product over a true time axis; pick another product above the chart. Lines between points only guide the eye; there is no data between your purchases.
- The line under the chart summarises latest, lowest and highest unit price and the number of purchases.
- The Products table has one row per product, unit and currency: latest, lowest, highest and median unit price, Unit price change (%) and Pack size change (%) compared with the previous purchase, Latest purchase, Total spent and Latest shop.
- Export the table as CSV, or the whole result as JSON, SVG or a print or PDF view.
Tips and common mistakes
- Write product names consistently. "Oat drink" and "oat drink " are grouped, but "Oat milk" is a separate product.
- Units are converted within a family: grams and kilograms, millilitres and litres. Items stay items, so do not mix "6 eggs" with "360 g".
- Enter the price you actually paid for the pack, after any discount at the till.
- Use the three-letter currency code. EUR and CHF purchases of the same product end up in separate groups.
- The change columns compare the latest purchase with the one before it, not with the first. Look at lowest and median for the long view.
- Import a CSV from a spreadsheet or receipt app via Import CSV: Purchases; the CSV template shows the columns.
FAQ
What is shrinkflation and how do I spot it here?
A smaller pack at the same or similar price. A negative Pack size change together with a positive Unit price change shows it.
Does the tool look up current prices?
No. All values come from your own entries; no shop data is fetched.
Why are two entries of the same product shown as two groups?
Either the units are incompatible, such as items and grams, or the currency differs. Both are kept apart on purpose.
Is my purchase list stored?
You can save it as a project on this device, or export it as JSON or CSV.
Guide last updated:
For scripts and AI agents
- JSON API:
POST https://ledgerlypricememory.usefulweb.app/api/v1/calculate(same calculation as this page) - Interface description: OpenAPI 3.1 · AI guide: llms.txt
- MCP server (Streamable HTTP):
https://ledgerlypricememory.usefulweb.app/mcp· tool nameledgerly_price_memory
Example request
curl -s -X POST https://ledgerlypricememory.usefulweb.app/api/v1/calculate \
-H 'content-type: application/json' \
-d '{}'