1. Your sites
2. Storms you expect
Count storms (the same storm hits every site). A storm shallower than a site's trigger depth is not plowed there. Probabilities weight the three years for the expected figures.
3. Your costs and target
4. Contract terms
The comparison
What each snow year costs you to run
| Year | Plows | Hours | Cost to run (truck, fuel, blade, salt) |
|---|
Contract models on the whole route
| Model | Expected revenue | Low year /h | Normal /h | High year /h | Falls under target at | Loses money at |
|---|
The seasonal flat price
| Site | Your flat price | Hits target: low year | Hits target: normal | Hits target: high year | Loses money in a high year below | Walk-away price |
|---|
Storm counts and hours are your own estimates; real winters vary. A price here is a starting point for your contract, not a promise.
5. Audit past seasons by contract model
By contract model
| Model | Rows | Revenue | Hours | Gross per hour | Net per hour |
|---|
Site-seasons, worst first
| # | Site | Model | Revenue | Hours | Net per hour | Short of target |
|---|
Prefer a CLI?
Same logic, zero dependencies, one command:
node cli.mjs compare --sites sites.csv --normal 12,6,3 --target 35 node cli.mjs audit seasons.csv --target 35 --json
Get cli.mjs and engine.mjs — Node 18+, nothing to install, no network call. More: How to price a snow plow contract: per push vs seasonal.
What's recognised
| Input | Handling |
|---|
The answer is exact for the numbers you type. It does not know going rates, your local market, your contract terms, or how a winter will actually turn out.
Common questions
Is this a market rate or professional advice?
No. Every price, depth, storm count and cost in the answer is a number you typed. It does not look up what other contractors charge and gives no legal, tax, insurance or contract advice. It does the arithmetic on your own route so you can see what each contract model would pay you in a low, normal and high snow year.
Should I price a snow plow contract per push or seasonal?
It depends on how many storms the winter brings. A per-push price pays for every visit, so a heavy winter earns more. A seasonal flat price is fixed, so it pays best in a low-snow year and can lose money in a high one. The calculator shows effective hourly for each model in a low, normal and high year, the storm count where a model first falls under your target, and the flat price that loses money in a high year.
What is the walk-away price for a seasonal contract?
Normal-year cost to run the route plus the normal-year hours multiplied by your target hourly and a floor percent (75 percent by default). Below it the contract costs you more than it is worth to you, so you decline or switch to per-push or a capped or hybrid structure.
Does it upload my sites or past seasons?
No. The browser page works on the numbers and text you enter, in your own browser, and never sends them anywhere. The CLI reads a local file or stdin and makes no network call.