1. Paste your items
2. What it found
Every item, safest raise first
| Item | New price | Can lose | Stops paying at elasticity | Profit change |
|---|
Findings
| Rule | Level | Detail |
|---|
Prefer a CLI, or want a CI check?
Same logic, zero dependencies, one command — reads a file or stdin:
node cli.mjs analyze items.csv --increase 8 cat items.csv | node cli.mjs analyze - --increase 5 --elasticity 1.5 node cli.mjs analyze items.csv --increase 8 --json --fail-on warn
Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: How much volume can you lose after a price increase?
What's recognised
| Input | Handling |
|---|
Costs stay flat, items do not affect each other, and demand follows units × (1 + increase)^-elasticity. Fixed overhead is not modelled.
Common questions
Will this tell me how many customers I will lose?
No. How customers react is the one number nobody can read off past sales. The tool shows how many units you can lose before the raise stops paying, and the elasticity at which that happens, so you can judge whether your customers are that sensitive.
What is elasticity here?
The percentage fall in units sold for each 1% rise in price. 1.0 means a 5% raise loses about 5% of units. Commodity goods with many substitutes are often above 1; specialised services with loyal clients are often below it. 1.0 is a placeholder, not a benchmark.
How do I get the numbers?
Export items from your POS, store or price list: price, what each unit costs you to supply (materials, labour, fees that scale with a sale), and units sold over a recent period. Fixed overhead is left out on purpose, because it does not change when units change.
Does it account for competitors or other items?
No. Each item stands alone and costs stay flat. If a raise on one item pushes customers to another item or a rival, that is outside this arithmetic: test on a few items first.
Is my data uploaded anywhere?
No. The browser page runs on the text in your own browser and never sends it anywhere. The CLI reads a local file or stdin and makes no network call.