How to Price Pool Service With an AI-Built Pricing Sheet

Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Price Pool Service With an AI-Built Pricing Sheet.
Coding Liquids tutorial cover featuring Sagnik Bhattacharya for How to Price Pool Service With an AI-Built Pricing Sheet.

Price each weekly stop as the sum of four costs: your time on site by pool size and equipment, the chemicals that pool uses, the driving it adds to your route, and a share of overhead, then divide by one minus your target margin. AI can build the sheet; you supply the costs and check the sums.

A weekly pool route is priced stop by stop, and the stops are not alike. A small plunge pool with a cartridge filter and no trees is a different job from a large pool with a spa, a salt system and an oak overhead. The sheet below prices each pool from its own profile, so two customers on the same street can get different prices for good reasons. The figures are illustrative, built around one technician with 60 weekly customers.

Follow me on Instagram@sagnikteaches

Measure the water first: volume, spa and fountain

Chemicals, filter work and stop time all scale with the water, so volume comes first. For a rectangular pool, multiply length by width by average depth, in feet, then by 7.5, because a cubic foot of water is about 7.5 gallons. A round pool is diameter times diameter times average depth times 5.9; an oval is length times width times average depth times 5.9. The 5.9 comes from 7.48 times π ÷ 4, the share of a square that a circle fills. If you work in litres, measure in metres, multiply the three figures and then multiply by 1,000.

Connect on LinkedInSagnik Bhattacharya
PoolAverage depthWorkingVolume
Rectangle, 32 × 16 ft, 3.5 to 8 ft deep5.75 ft32 × 16 × 5.75 × 7.522,080 gallons
Round, 18 ft across4.5 ft18 × 18 × 4.5 × 5.98,602 gallons
Oval, 28 × 14 ft5.0 ft28 × 14 × 5 × 5.911,564 gallons
Rectangle, 10 × 5 m, 1.75 m average1.75 m10 × 5 × 1.75 × 1,00087,500 litres

Average depth is where errors creep in. A pool that slopes evenly from 3.5 to 8 feet averages 5.75, but a pool with a long shallow shelf and a short deep end averages much less. Take three depth readings on the first visit instead of reading the marker at the deep end. A pool you believe holds 15,000 gallons and that really holds 20,000 has a third more chemical cost than your sheet says.

Subscribe on YouTube@sagnikteaches

Count every body of water as its own line. A spa adds ten minutes and a little chemical cost each week, and a fountain adds a few minutes. Skimmer, the pool service software, bills by serviced location, and its pricing page (as of November 2026) says one location can include several pools, spas or fountains, so a pool with a spa counts once on that software bill. Your price should not copy that logic. The spa is still ten minutes of your time every week.

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

Stop minutes: a base plus what each piece of equipment adds

Time a base stop on a plain pool: skimming, brushing, emptying baskets, testing the water, dosing and logging it. Then time what each extra adds. Periodic jobs are averaged over their cycle, so a cartridge clean that takes 30 minutes every eight weeks adds 3.75 minutes to every stop. Illustrative figures:

ItemMinutes per stop
Base stop, pool up to 15,000 gallons20
Size, per 1,000 gallons above 15,0001
Spa10
Water feature4
Robot cleaner, in and out2
Salt system check3
Heavy debris from overhead trees8
Cartridge filter care (30 minutes every 8 weeks)3.75
Sand filter backwash (10 minutes every 4 weeks)2.5

Time ten stops of each profile with a phone stopwatch before you trust any of these, and re-time after a season, because what you add in minutes for trees in autumn is not what you add in July.

Chemicals from your invoices, not from a dosing chart

A dosing chart tells you what a pool needs; your invoices tell you what it costs. Take one quarter of chemical purchases and divide by the gallon-visits you serviced. Say you spent $5,460 across 40 pools that average 15,000 gallons, over 13 weekly visits each. That is $10.50 a pool-visit, or $0.70 per 1,000 gallons per visit. The sheet multiplies that by the pool's volume.

Keep a separate figure for each sanitiser type you service. Salt-system pools make their chlorine from salt, so their chemical spend differs from pools dosed with liquid chlorine or tablets; test them against your invoices instead of assuming. Spas get their own line ($2.00 a visit here). Apply a season factor, such as 1.3 for summer, 1.0 for spring and autumn and 0.6 for winter, which average 0.975 across the year. To log what each visit used, which is also how you check these figures later, a pool service report template shows what a visit record should carry.

Driving: price the minutes a stop adds to your route

A drive minute costs labour plus the van. With a technician at $19.00 an hour plus 15% payroll burden ($21.85, or $0.364 a minute) and $0.30 a minute for fuel, tyres and wear, a minute of driving costs $0.664. A minute on site costs $0.364 plus about 3.6 cents of kit wear, which rounds to $0.40.

The route average hides the stops that cost more. On a route where stops average 7 minutes apart, a new customer 14 minutes from the nearest stop adds 7 minutes, which costs $4.65 a visit and about $6.64 on the price, or $28.78 a month. A customer 25 minutes out adds 18 minutes, which is $11.95 a visit, $17.08 on the price and $74 a month. Build that into the monthly price, put the customer on a waiting list until a neighbour signs up, or decline. Route software and stop density goes into how to find the neighbours.

Overhead and software, spread over stops

List the monthly overhead that is not job-specific: liability and vehicle insurance, marketing, accountancy and bank fees, phone, replacement of poles, vacuums and test kits, training, and the time you spend on invoices and customer messages. In this example it comes to $1,950. Divide by stops, not customers: 60 customers at 4.33 stops a month is 260 stops, so overhead is $7.50 a stop.

Route software goes in as its own line. Skimmer's pricing page lists $2.00 per serviced location a month, from $98, for 50 to 1,000 pools, so 60 customers is $120, or $0.46 a stop; below 50 pools it lists $1.00 a location from $49. GorillaDesk's pricing page is per route instead, with the first route from $49 a month on its Basic plan. Both pages change, so read the current one when you build the sheet. Together that makes $7.96 of overhead and software on every stop. Comparing Skimmer, GorillaDesk and Jobber helps if you are still choosing.

The slip to avoid is dividing the $1,950 by customers instead of stops, which gives $32.50 a stop instead of $7.50 and prices every pool about $36 a stop too high, roughly $155 a month. A sheet that errs high loses customers instead of margin, so check in both directions.

The worked stop: a large pool, a spa and an oak tree

The profile: a 22,080-gallon rectangular pool with a spa, a variable-speed pump, a cartridge filter, a salt system, a robot cleaner and an oak overhead. The nearest stop on the route is 14 minutes away. The minutes add up like this:

ItemMinutes
Base stop20.00
Size: 7.08 thousand gallons above 15,0007.08
Spa10.00
Robot cleaner2.00
Salt system3.00
Heavy debris8.00
Cartridge filter care3.75
Total53.83

The cost stack follows, and the price is the cost divided by 0.70:

Cost lineWorkingAmount
Time on site53.83 min × $0.40$21.54
Driving14 min × $0.664$9.30
Chemicals22.08 × $0.70 = $15.46, plus $2.00 for the spa$17.46
Overhead and software$7.50 + $0.46$7.96
Cost per stop$56.26
Price per stop at a 30% margin$56.26 ÷ 0.70$80.37

Over 4.33 stops a month that is $348, which you quote as $350 a month with chemicals included. At $350 the margin is 30.3%, and the pool earns $90 of revenue for each hour on site.

Compare a plain 12,000-gallon pool with a sand filter, liquid chlorine, no trees and a 6-minute drive. Minutes are 22.5, so time on site is $9.00, driving $3.99, chemicals $8.40 and overhead $7.96. Cost is $29.35 and the price $41.93 a stop, which is $181.69 a month, or $180. The same route sells a $180 pool and a $350 pool, and a flat $250 for everyone would overcharge one and leave almost no margin on the other.

The Customers tab, filled in for four pools

The sheet's job is to turn a pool's profile into a price in seconds, so the Customers tab holds one row per pool. Here are four rows, including the large pool from above:

PoolProfileDrive minutesVolumeStop minutesCost a stopMonthly price
1Rectangle 32 × 16 ft, 3.5 to 8 ft deep; spa, robot, salt system, oak overhead; cartridge filter1422,080 gal53.83$56.26$350
2Oval 28 × 14 ft, 5 ft average; sand filter, no extras511,564 gal22.50$28.38$175
3Round 18 ft across, 4.5 ft average; water feature; cartridge filter98,602 gal27.75$31.07$190
4Rectangle 40 × 20 ft, 4 to 9 ft deep; spa, robot, salt system; cartridge filter, no trees639,000 gal62.75$66.36$410

One route sells pools from $175 to $410 a month, each at about a 30% margin. Pool 4 is the instructive row. It has no trees and a short drive, but it holds the most water, so it takes the most time and chemicals. A price list with only "pool" and "pool with spa" would put it on the same line as Pool 1 and lose money on it.

Chemicals included or billed, and the cap that protects you

Customers like a single monthly number, and all-in pricing delivers it, but you carry any rise in chemical prices or a wet summer. The alternative is a service-only price plus chemicals at cost plus a handling margin. For the large pool, service-only is ($21.54 + $9.30 + $7.96) ÷ 0.70 = $55.43 a stop, or $240 a month. Chemicals cost you $75.64 a month, and at cost plus 25% they come to about $94.55. The total is about $335 against $350 all-in. The difference is the margin: cost plus 25% is a 20% margin on chemicals, not 30%.

A middle route is an all-in price with a cap. Include chemicals up to 130% of expected use, here about $98 a month, and bill anything above that at cost plus handling. Put the cap in the contract, since a green month after a storm is exactly when the cap earns its place. A pool service contract template drafted with AI covers where that wording belongs.

A level monthly price across uneven seasons

A flat monthly price means your margin moves with the weather. At $350 a month, the large pool looks like this:

SeasonChemical factorChemicals a visitCost a stopMargin at $350 a month
Summer1.3$22.09$60.8924.6%
Spring and autumn1.0$17.46$56.2630.3%
Winter0.6$11.27$50.0738.0%

The spa line stays at $2.00 in every season. A level price is simple for customers and pays for itself over the year, but summer runs thin and winter runs fat, so keep the winter surplus as a buffer rather than treating it as profit. The alternative is to set a price per season, which is fairer to your costs and harder to sell. Whichever you choose, check the annual average against your target: here the factors average 0.975, so the year lands a little above 30%.

A stormy week and a full route day: two margin tests

Two checks before you publish prices. First, a stormy week. If on-site minutes run 20% over, because storms left debris on every pool, cost per stop rises to $60.57 and the margin at $350 a month falls from 30.3% to 25.0%. That is survivable for a week and a problem for a season.

Second, the route day. A technician works 12 stops: three like the large pool and nine like the plain one. On-site time is 364 minutes, driving about 84 minutes at 7 minutes a stop, and 30 minutes loading at the yard, which is 7.97 hours on the clock. Revenue per day at the monthly prices is $616. Cost is $437, covering on-site and drive time, the yard half-hour, chemicals and overhead, and the margin is 29.1%. Revenue per clock hour is $77.34. If your own route day does not come out near your target, either a profile is mispriced or your drive minutes are higher than you think, and both are fixable. Do not price commercial pools or apartment complexes with this sheet until you have checked the inspection and logging rules that apply to them.

New stops and the green pool

A pool that arrives green needs a recovery clean before weekly service can start. A typical recovery might take 3.5 hours on site, $120 of chemicals and the usual 14-minute drive. Cost is about $213: $84 for 210 minutes on site, $9 of driving and $120 of chemicals. At a 30% margin that is $304.76, which you quote as a $305 one-off recovery clean.

Skip the one-off, treat the pool as a normal stop and the first month goes wrong. Revenue is $350. Costs are the recovery clean ($213.33) plus about 3.33 normal stops at $56.26 ($187.53), which is $400.86, a loss of about $51 and a margin of minus 14.5%. A customer who wants the pool turned around quickly is also a customer who needs to know the one-off exists, so put it on the price card and in the proposal before the first visit.

Running your current customers through the sheet

Before you change any price, run the customers you already have through the sheet and compare. Suppose these four are what you charge today:

PoolYou charge nowSheet priceGapMargin at today's price
1$300$350-14%18.7%
2$190$175+9%35.3%
3$190$1900%29.1%
4$350$410-15%17.8%

The pattern is the finding. The two big pools carry the thinnest margins and the plain oval with no extras carries the fattest, the reverse of what a near-flat price list suggests. Moving the big pools towards the sheet price over a season or two is a better first step than raising everyone by the same percentage. Leave Pool 3 alone, and hold Pool 2 unless you are about to lose it, because it already earns more than your target. Use the sheet on new stops from day one, since a new customer has no old price to defend.

Prompting for the route sheet and checking its formulas

Any assistant that writes spreadsheet formulas will do. In Google Sheets, Gemini can build tables, formulas and whole sheets on an eligible Workspace or Google AI plan, and like any assistant it can get a formula wrong, so test what it builds. The add-in options for Excel and Sheets are compared in the carpet cleaning calculator tutorial, and prompting inside Google Sheets has more examples. Hand the assistant the structure and your numbers, and keep the arithmetic in plain formulas:

Build a pool service pricing sheet for Excel or Google Sheets.
Tabs: Inputs, Equipment, Customers. Plain formulas only; no AI functions in cells.

Inputs: technician wage 19.00; payroll burden 15%; kit wear per on-site minute
0.036; vehicle cost per drive minute 0.30; monthly overhead 1950; monthly route
software 120; stops per month 260; chemical cost per 1,000 gallons per visit
0.70; spa chemicals per visit 2.00; target margin 30% (profit divided by price,
NOT markup on cost); base stop minutes 20; size adjustment 1 minute per 1,000
gallons above 15,000; chemical season factor 1.0; weeks per month 52/12.
Equipment (minutes per stop): spa 10; water feature 4; robot 2; salt system 3;
heavy debris 8; cartridge filter 3.75; sand filter 2.5.
Customers: one row per pool, customer ID in column A, then shape (Rectangle, Round, Oval), length or diameter,
width, shallow depth, deep depth (feet), spa, water feature, robot, salt, debris
(Y/N), filter type, drive minutes from the nearest stop.
Per row: volume in gallons (rectangle x 7.5; round and oval x 5.9); stop minutes;
chemicals; cost per stop; price per stop at target margin; monthly price rounded
to the nearest 5; margin at the rounded price; a flag if margin is under 27%.
Use INDEX and MATCH. List every formula. Then give me two test pools with the
answers worked out by hand.

An illustrative first answer gets the tab layout right. The formulas worth reading line by line are these:

Inputs!B16  Labour cost per minute    =B2*(1+B3)/60
Inputs!B17  Overhead per stop         =(B6+B7)/B8
Customers!N2  Volume (gallons)        =C2*IF(B2="Round",C2,D2)*((E2+F2)/2)*IF(B2="Rectangle",7.5,5.9)
Customers!O2  Stop minutes            =Inputs!$B$12+MAX(0,N2/1000-15)*Inputs!$B$13+IF(G2="Y",Equipment!$B$2,0)+IF(H2="Y",Equipment!$B$3,0)+IF(I2="Y",Equipment!$B$4,0)+IF(J2="Y",Equipment!$B$5,0)+IF(K2="Y",Equipment!$B$6,0)+INDEX(Equipment!$B$7:$B$8,MATCH(L2,Equipment!$A$7:$A$8,0))
Customers!P2  Chemicals per visit     =N2/1000*Inputs!$B$9*Inputs!$B$14+IF(G2="Y",Inputs!$B$10,0)
Customers!Q2  Cost per stop           =O2*(Inputs!$B$16+Inputs!$B$4)+M2*(Inputs!$B$16+Inputs!$B$5)+P2+Inputs!$B$17
Customers!R2  Price per stop          =Q2/(1-Inputs!$B$11)
Customers!S2  Monthly price           =MROUND(R2*Inputs!$B$15,5)
Customers!T2  Margin at that price    =(S2/Inputs!$B$15-Q2)/(S2/Inputs!$B$15)

The usual faults come in five kinds. The volume formula mixes units, such as 7.5 applied to a measurement in metres. Average depth is the deep end only, or the sum of the two depths instead of their average. The price formula marks cost up by the margin percentage instead of dividing by one minus it. Drive cost uses the route average instead of the customer's own drive minutes. And overhead is divided by customers instead of stops, which prices every pool about $36 a stop too high. Enter the two test pools and compare each result with the assistant's hand-worked answer and with the figures above: 22,080 gallons, $350 a month for the large pool and $180 for the plain one.

Keep the sheet as the master. Once it behaves, load the monthly prices into your route software and let the software hold the customer list, while the sheet decides what each new pool should cost.

Pool service pricing questions

How do I work out how many gallons a pool holds?

For a rectangle, multiply length by width by average depth in feet, then by 7.5. For a round pool, diameter times diameter times average depth times 5.9, and an oval is length times width times average depth times 5.9. In metres, multiply the three measurements and then by 1,000 to get litres. Take several depth readings, because the average is where errors hide.

Should chemicals be included in a weekly pool service price?

Either works if the price comes from your costs. All-in pricing is simpler to sell, but it leaves you carrying chemical cost swings. Billing chemicals separately protects you and exposes the customer to variation. A middle route includes chemicals up to a cap, about 130% of expected use, and bills anything above it at cost plus handling.

How should I price a customer who is far from my route?

Price the minutes the stop adds to your route, not the route average. In the worked example, a customer 18 minutes further out than average adds about $12 of cost per visit, roughly $74 a month on the price. Build that into the monthly price, wait for neighbours to sign up, or decline the stop.

Should the monthly price change with the seasons?

You can level it across the year or charge seasonal prices. Levelling is simpler for customers, but your margin swings: in the example it falls to about 25% in summer and rises to 38% in winter. Check the annual average against your target and keep a cash buffer for the summer months.

Further reads

Sources: Skimmer and GorillaDesk pricing pages (November 2026); Google Docs Editors Help on Gemini in Google Sheets.

Want a pricing sheet that fits your route?

On a 1:1 call we can go through your pools, chemical invoices and drive times, decide which parts of the pricing sheet an AI assistant should build, and set up checks you can run yourself.

Book a 1:1 call with me