Gritting Contracts: Price Winter Call-Outs and Plan Night Runs With AI

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Gritting Contracts: Price Winter Call-Outs and Plan Night Runs With AI.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for Gritting Contracts: Price Winter Call-Outs and Plan Night Runs With AI.

Split your costs into a fixed seasonal block (spreader, insurance, forecast, on-call pay) and a per-run block (labour, fuel, salt). Charge a standby fee covering the first and a per-run rate covering the second plus margin, then order each night run by the sites' ready-by times and the hopper's load, not by distance.

A pure per-run price loses money in a mild winter. A flat seasonal fee loses in a hard one. And neither works if the trigger and the liability wording are vague. AI helps with the sums, the clause drafts and the route order. It cannot forecast, so the decision to treat always rests on a forecast service and a rule you wrote in advance. All figures below are illustrative inputs for working through the method, not market prices.

Follow me on Instagram@sagnikteaches

Why a mild winter breaks a per-run price

Most of what a gritting firm spends does not depend on how many nights it treats. The spreader is bought, the insurance renewed and the forecast service paid for whether the winter is mild or savage, and a driver who is on call for 120 nights costs money on the nights when nothing happens. Only labour on the night, vehicle running costs and salt rise with each run. A price per run quietly assumes you know how many runs there will be, and nobody does.

Connect on LinkedInSagnik Bhattacharya

Take a small grounds-maintenance firm with one spreader vehicle and a single night route of 14 commercial sites: depots, a care home, a supermarket and some small car parks, 31,000 square metres in all. The route takes about 5.5 hours. The next sections cost one run, then test three ways of charging across a mild winter (20 treated nights), an average one (40) and a hard one (65). Those run counts are scenarios for stress-testing the price, not forecasts.

Subscribe on YouTube@sagnikteaches

What one night run really costs

Start with the variable cost of the route, then the fixed cost of the season. Every input here is an assumption for the worked example, so replace each with your own payroll, fuel and salt invoices.

Variable cost per runWorkingAmount
Driver, loaded cost5.5 hours at $32$176
Vehicle and spreader running cost5.5 hours at $24 (fuel, wear)$132
Salt31,000 m² at 15 g/m² is 465 kg, at $130 a tonne$60
Total per runabout $26 for each of the 14 sites$368
Fixed cost per seasonAmount
Spreader depreciation and servicing$1,800
Extra insurance cover$1,200
Forecast service$900
Salt storage and handling$600
On-call allowance, 120 nights at $20$2,400
Logbook and admin$700
Total fixed$7,600

The salt line deserves care, because published guidance disagrees. One supplier guide recommends 10 to 15 grams per square metre if only ice is the problem and 20 to 30 if snow is likely. Another gives 10 to 15 for dry frost or ice, 20 to 40 for wet frost or ice and 40 to 60 for snow on roads, calls its figures at best a guide for properly calibrated spreaders, and adds that pedestrian spreaders use significantly more. The same route therefore costs very different amounts in salt, as the next table shows at the example's $130 a tonne.

Spread rateSalt for 31,000 m²Salt cost per run
10 g/m²310 kg$40
15 g/m²465 kg$60
20 g/m²620 kg$81
30 g/m²930 kg$121

Price on the rate you will really spread, and write that rate into the contract and the log, because it is both a cost and a piece of evidence. Put these tables into a spreadsheet and ask an assistant to add the formulas: salt cost equals area times rate, divided by a million, times the price per tonne, and total per run equals labour plus vehicle plus salt. Then check one result by hand before you trust the sheet. For general help with sheet formulas, see Google Sheets AI prompts.

The Complete Excel Course with AI Integration thumbnail

The Complete Excel Course with AI Integration

From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.

By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner

Buy now

Three ways to charge, tested on three winters

Model A charges per run only: $50 per site visit. Model B charges a standby fee of $630 per site for the season plus $34 for each run. Model C charges a flat $2,000 per site for the season, covers up to 45 runs, and bills any extra run at $50. The prices are set so that each model earns about a 20% margin in the average winter, and the table shows what happens in the other two. Margin is profit divided by revenue.

WinterYour total costA: per run onlyB: standby plus per runC: flat season fee
Mild, 20 runs$14,960-$960 (-6.9%)$3,380 (18.4%)$13,040 (46.6%)
Average, 40 runs$22,320$5,680 (20.3%)$5,540 (19.9%)$5,680 (20.3%)
Hard, 65 runs$31,520$13,980 (30.7%)$8,240 (20.7%)$10,480 (25.0%)

Model A swings from a loss to a 30.7% margin, and the loss comes in exactly the winter when you did the least work. Model B holds between 18.4% and 20.7% whatever the weather, because the standby fee pays for the fixed block and the per-run rate pays for the variable block. Model C looks wonderful in a mild winter, but that $13,040 is money customers feel they overpaid, and it comes back at renewal as a demand for a discount. The next table is the customer's side of the same three winters, as a bill per site.

WinterA: per run onlyB: standby plus per runC: flat season fee
Mild, 20 runs$1,000$1,310$2,000
Average, 40 runs$2,000$1,990$2,000
Hard, 65 runs$3,250$2,840$3,000

Model B costs the customer more than A whenever fewer than about 39 runs happen (630 divided by the $16 difference between $50 and $34 is 39.4), and less in a hard winter. That is the honest trade: the customer pays a little more in a mild winter and is protected from a big bill in a harsh one, and you get a steady margin. Explain the standby fee in plain words: "It reserves a loaded spreader and a driver for your site on every night from 1 November to 31 March, and it is charged whether or not a treatment is needed." Some customers who budget annually prefer a flat fee, and Model C can work if you cap the included runs and keep a price for the extras, as here.

To build the comparison, give the assistant your inputs and ask for formulas, not just answers.

Build a table for three charging models for a gritting route of 14
sites. Inputs: variable cost per run $368; fixed cost per season
$7,600. Model A: $50 per site per run. Model B: $630 per site per
season plus $34 per site per run. Model C: $2,000 per site per season
including 45 runs, then $50 per site per extra run. Show revenue,
cost, profit and margin for 20, 40 and 65 treated nights, then the
customer's bill per site. Use spreadsheet formulas and my numbers
exactly. List every assumption.

Check one cell by hand before relying on the rest. For Model B in the mild winter, revenue is 14 sites times ($630 plus 20 runs at $34), which is 14 times $1,310, or $18,340. If your sheet says anything else, the formula is wrong, and an assistant that confidently reports a nearby number is more dangerous than one that fails. Snow-removal firms face the same fixed-versus-variable problem, and pricing snow removal per push or by season looks at it from the plough side. Gritting differs because each visit costs roughly the same and the trigger rule decides how many visits there are.

Write the trigger so nobody argues at six in the morning

The trigger is the rule that turns a forecast into a treatment, and it decides how many runs you do, so your price depends on it. Write it with six parts: which forecast, for which place, over which hours, at what temperature, with what moisture, and who decides by when. Air temperature alone is the wrong measure, because a road or car-park surface can be colder than the air above it on a clear, still night and can freeze while the air reads above 0°C (32°F). That is why professional road-weather forecasts quote surface temperature for a named location. One salt supplier's guide goes further, advising treatment the evening before whenever temperatures are forecast to fall to 4°C or below, because the ground is often colder than the air.

Trigger ruleEffect on runsWhere it bites
Forecast surface at or below +1°C, with moisture forecast or presentMore runs, fewer surprisesHigher cost, and clients may query nights that stayed dry
Forecast surface at or below 0°C, with moistureFewer runsA night forecast at +0.5°C that frosts anyway becomes an argument
Any frost or ice warning in the forecastRuns follow warnings, which is easy to evidenceWarnings can be broad, so you may treat more than you need

Whichever model you choose, your run count rests on a trigger. If the contract's rule is looser than the one you priced, the extra runs are either unpaid (flat fee) or a surprise on the customer's invoice (per run). Settle the rule first, then price it. Here is a clause to adapt, with the choices in square brackets.

Treatment trigger. We will treat the areas in Schedule 1 on any
night when the forecast issued by [named forecast service] by 15:00
for [named location] predicts a road-surface temperature of [0°C]
or below at any time between 18:00 and 08:00, and either
precipitation is forecast or the surface is forecast to be damp.
We will start so that the areas are treated by [time]. On a night
when no treatment is triggered we will not attend, and the standby
fee remains due. The client may request a reactive treatment at the
rate in Schedule 2. Treatment reduces the risk of ice and does not
guarantee a surface free of ice.

Add a line for very cold nights. One supplier guide says rock salt works down to around minus 8°C, so the contract should say that on nights forecast below a stated figure you may use a different product or a higher rate, charged as an extra. And keep the evidence: save the forecast as a screenshot or PDF at the time of the decision, with the time visible, and attach it to the monthly invoice.

The classic mistake (illustrated here with an invented case) is a trigger written as "when ice is forecast", with no source, place or time. A site manager rings at 05:40 to say the car park is glazed. The firm's own forecast showed +1.2°C and it treated nothing. Without a defined rule both sides are partly right, and the argument costs more than a treatment would have. Ask an assistant to turn your six parts into a clause, then have a solicitor review it, because the wording is where a dispute starts. A winter snow contract template covers wider terms in snow removal contract template: draft seasonal terms with AI.

Order the night run: ready-by times, hopper size and the stop limit

A night route has three constraints: when each site must be ready, how much salt the hopper holds, and a map tool that tops out at about ten locations. Sorting by distance alone ignores the first, and a chat assistant's first answer may well do exactly that. Give it the real constraints instead.

Order these 14 sites for one night run starting from the depot at
02:30. Hopper holds 600 kg. Sort by ready-by time first, then shorten
the drive within each time band. For spread rates of 15, 20 and 30
g/m2 show cumulative salt used after each site and say where a
reload is needed. Flag any site at risk of missing its ready-by time.

1  Bakery loading yard     2,000 m2  ready by 04:30
2  Distribution depot      4,800 m2  ready by 05:30
3  Warehouse B             2,600 m2  ready by 05:45
4  Care home car park      1,200 m2  ready by 06:00
5  Supermarket             6,500 m2  ready by 06:00
6  Leisure centre          1,700 m2  ready by 06:15
7  Primary school          2,000 m2  ready by 06:30
8  Garage forecourt        1,500 m2  ready by 06:30
9  Retail unit row         1,400 m2  ready by 07:00
10 Sheltered housing         900 m2  ready by 07:00
11 Medical centre          1,800 m2  ready by 07:30
12 Office park             3,400 m2  ready by 07:30
13 Workshop yard             600 m2  ready by 08:00
14 Church hall car park      600 m2  ready by 08:00

Here is a typical first answer (illustrative): the assistant starts at the workshop yard nearest the depot, runs the shortest loop, puts the care home 13th at about 07:10, ends at the bakery, and says "one load of salt will cover the route". Three things are wrong. The bakery's 04:30 deadline is missed by hours. The care home, with staff arriving at 06:00, is treated an hour late. And "one load" is true only at the lowest spread rate. The corrected order is simply the ready-by order in the list, and the assistant should be told so and asked to redo the hopper sums. The cumulative figures, which you can check with a calculator, come out like this.

Spread rateSalt for 31,000 m²Against a 600 kg hopper
15 g/m²465 kgOne load, with 135 kg spare
20 g/m²620 kg20 kg short: top up after the office park (596 kg used), or carry two bags in the cab
30 g/m²930 kgTwo loads: reload after the leisure centre (564 kg used, only 36 kg left, and the school needs 60)

That table is the reason a 14-site route cannot be priced at one salt figure: a colder night adds a reload and the time that goes with it. On the 30 g/m² night the reload trip is an extra 25 minutes or so, which is why the route's 5.5 hours is an average rather than a promise. Build the reload point into the driver's order card for each rate band, so nobody decides it at 04:00 with cold hands.

Next, the map limit. Google Maps lets you add up to nine stops after the starting point, final destination included, so ten locations in all. A 14-site night then needs two saved routes: the depot and sites 1 to 8, then sites 9 to 14 starting from the last stop of the first route and ending back at the depot. For a route that rarely changes, save both links once and print the order card. Re-run the AI ordering only when a site is added or a ready-by time changes. The wider topic of route order for crews is covered in putting priority sites first on a snow-clearing route and in AI route planning for small fleets.

The run log that protects you later

A log is what you can show after something goes wrong. For any site and date it should answer: was treatment triggered, when did you arrive, what was the surface like, what did you spread and how much, when did you leave, and who did it. Fill it in on the phone at the site, not in the cab afterwards, and add one wide photo of the treated surface with the time stamp visible. Here are two rows from a night's log (illustrative).

SiteTrigger evidenceArrivedSurface on arrivalRate and saltLeftDriver, photo
Distribution depotForecast saved 14:58, surface -1.8°C, damp03:12Wet, frost forming15 g/m², 72 kg03:41AB, D-02
Care home car parkForecast saved 14:58, surface -1.4°C, damp05:07Thin frost on bays15 g/m², 18 kg05:21AB, C-01

Ask an assistant to design the form, with dropdowns for surface condition and spread rate and large buttons, then test it on a phone in the dark with gloves on before the season. A form nobody can use at 03:00 produces a log full of gaps. Be clear with yourself about what the log proves. It shows you applied your own rule, when, and at what rate. It does not prove the surface was safe ten minutes after you left, which is why the contract says treatment reduces risk and does not guarantee a surface. How long to keep the records is a question for your insurer, and the safe habit is to delete nothing at the end of a season.

Contract wording a solicitor should check

This is a list of topics, not legal advice. A seasonal contract should cover: the sites and areas covered (a schedule with a plan or photo), the trigger clause above, the treatment window, the spread rate and product, the standby and per-run charges and when each falls due, what is excluded (snow clearance beyond a stated depth, areas blocked by parked vehicles, surfaces you were not shown), what the client must do (keep access clear and report hazards), a no-guarantee statement, record keeping, insurance, and how either side ends the contract. Ask an assistant for heads of terms from your inputs, then expect to correct it.

Draft heads of terms for a seasonal gritting contract for a
commercial car park. Use these facts only: standby fee $630 for 1
November to 31 March; $34 per treatment; trigger as in the clause
below; treatment ready-by time 06:00; maximum 45 treatments covered
by the standby fee, then $50 each. Mark anything you assumed with
[ASSUMED]. Do not promise outcomes.

A first draft (illustrative) can include lines like "We guarantee all surfaces will be ice-free", "We will attend within two hours of any request, day or night", and "Treatments are unlimited for the standby fee". Each one needs changing. Replace the guarantee with a duty to take reasonable care to treat to the stated trigger and rate. Change "two hours" to a response window you can actually staff, or delete it. Fix "unlimited" to match the cap in your model, because unlimited treatments for a flat fee is how a hard winter turns into a loss. Then add what the draft left out, which can be the client's duty to keep access clear. Send the result to a solicitor, and ask your insurer to confirm the wording matches your cover, since an obligation your policy does not cover is a risk you are carrying yourself.

Check the numbers after the first cold spell

After the first six treatments, reconcile what you planned against what the log says. Planned salt was 465 kg a run, so 2,790 kg for six runs. Suppose the log shows 3,720 kg. That is 20 grams per square metre on average (3,720,000 grams divided by 186,000 square metres), not the 15 you priced. Five extra grams across 31,000 square metres is 155 kg a run, which is $20 at $130 a tonne, and about $806 over 40 runs, nearly as much as the $900 forecast service. The cause might be spreader calibration, site areas measured too small from a map, or a driver playing safe on cold nights. Whichever it is, you can only fix it because the log recorded the rate.

Time is the bigger lever. If the run takes 6.5 hours instead of 5.5, the extra hour costs $56 (driver $32 plus vehicle $24), which is $2,240 over 40 runs and far more than the salt drift. Arrival and departure times in the log show which sites eat the time, and the culprit may be one awkward site with a gate or a long loop. Either fix the order, charge that site a higher visit rate at renewal, or drop it. Then adjust the standby fee or per-run rate for next year from real numbers, not the assumptions you started with.

Ask an assistant to do the monthly summary for clients, pasting in only the log rows for that client: number of treatments, dates, rate and salt used, with the forecast screenshots attached. Check its totals against the sheet, because summarising is where invented numbers creep in. Keep the split clear. AI is good for the cost model, the clause drafts, the order card and the summaries. It is not the forecast, it does not decide whether to treat, and it does not sign the contract. Those stay with a forecast service, a written rule and a solicitor. If your winter work also includes ploughing or off-season grounds work, winter work for landscapers is a useful companion.

Questions gritting firms ask about rates, guarantees and logs

How much salt should I allow per square metre in the price?

Supplier guides differ. One recommends 10 to 15 grams per square metre for ice alone and 20 to 30 when snow is likely, while another gives 10 to 15 for dry frost, 20 to 40 for wet frost or ice and 40 to 60 for snow. Use your supplier's current guide, your spreader's calibration and the client's brief, price at the top of the band you plan to use, and log what you actually spread.

Should I guarantee that a site will be ice-free?

No. Treatment reduces the risk but cannot remove it, because rain, refreezing and traffic can undo it, and one supplier guide puts the working limit of rock salt at around minus 8°C. Write the contract as a service performed to a stated trigger and rate, not a guarantee of a surface, and have a solicitor and your insurer read the wording before you use it.

How long should I keep gritting logs?

Ask your insurer, because the answer depends on your cover and on how long claims can be brought where you work. Keep the logs, forecasts and photos at least that long, in a cloud folder with a backup, and delete nothing just because the season has ended. Treat the log as part of the product you sell, not as paperwork.

Can AI tell me when to grit?

No. A language model cannot see tomorrow's weather. Use a road-weather forecast service for the decision and as your evidence, and use AI for the sums, the clause drafts and the route order. If a tool claims to predict icing, ask which forecast data it uses and who is liable when it is wrong.

Further reads

Sources: published guides from rock-salt suppliers on spread rates and effective temperatures; Google Maps help on multi-stop routes. The cost model and winter scenarios are illustrative arithmetic on assumed inputs, not market data.

Want your winter prices tested before the first frost?

On a 1:1 call we'll run your own costs through a fixed-plus-per-run model, check the trigger and log wording, and set up a night-run sheet your drivers can follow.

Book a 1:1 call with me