Work out what one cleaner-hour costs you, multiply it by the labour hours a home needs for its size and condition, add travel and supplies, then divide by one minus your target margin. Hourly, per-room and flat-rate quotes are three ways of showing that one number. ChatGPT can build the calculator; you give it your rates and check its sums.
Many pricing guides stop at a formula such as rooms times a rate, or hours times an hourly rate. A formula does not tell you whether the result covers your costs, and it does not show where one quoting style quietly loses money. The calculator here runs all three styles on the same homes, so you can see where they agree, where they drift apart and why. Every figure is illustrative; swap in your own.
What the finished calculator says about four homes
Here is the end result first. Four homes go through one engine, which prices each from hours, from a per-room card and from flat-rate bands. Each number is built up in the sections that follow.
| Home | Labour-hours | Engine price | Card price | Card margin | Flat band | Band margin |
|---|---|---|---|---|---|---|
| A: 2 bed, 1 bath, 850 sq ft | 2.95 | $115 | $112 | 29.1% | $115 | 30.9% |
| B: 3 bed, 2 bath, 1,800 sq ft, dog | 4.55 | $170 | $167 | 29.5% | $170 | 30.8% |
| C: 3 bed, 2 bath, 2,800 sq ft, large rooms | 5.16 | $190 | $158 | 16.4% | $190 | 30.5% |
| D: as B, but cluttered | 5.77 | $210 | $167 | 12.2% | $170 | 13.7% |
Homes A and B are where the three views agree. Home C has bigger rooms than the card assumes, so the card gives up about 14 points of margin; the flat band survives only because it has a second band for larger homes. Home D is cluttered, which neither the card nor the band knows about, so both fall to around 13%. The fix for both is a pair of selectors, size and condition, applied as multipliers to the room times.
The cost of one cleaner-hour
Everything rests on one number, and it is not the cleaner's wage. For a team that pays $17.00 an hour:
| Input | Illustrative value | Where it comes from |
|---|---|---|
| Loaded labour | $19.38 an hour | $17.00 wage × 1.14 payroll burden |
| Overhead | $4.50 per labour-hour | $1,800 a month ÷ 400 labour-hours |
| Cost per cleaner-hour | $23.88 | $19.38 + $4.50 |
| Price per cleaner-hour at a 30% margin | $34.11 | $23.88 ÷ 0.70 |
| Travel and supplies per visit | $9.00 cost, $12.86 on the price | $9.00 ÷ 0.70 |
A labour-hour is one cleaner for one hour, so two cleaners for two hours is four labour-hours. Overhead covers insurance, quoting and admin time, software, phone and marketing, divided by the labour-hours you actually work on jobs in a month. The margin is profit as a share of the price, not a markup on cost.
Pricing from the wage alone is the most expensive shortcut in this trade. At a 30% margin, $17.00 becomes $24.29 an hour, against the $34.11 the real cost needs. On a 4.55-hour visit that gap is about $45, and it recurs every visit.

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 nowRoom times, size and condition: the engine's table
Cleaners think in rooms, and kitchens and bathrooms take far more time than their floor area suggests, so the engine is built from room times rather than square feet. Floor area comes in through a size factor. Time the first ten homes you clean room by room, using a start and stop on your phone, and average each type. Illustrative results:
| Room type | Labour-hours |
|---|---|
| Kitchen | 0.80 |
| Full bathroom | 0.60 |
| Half bathroom | 0.30 |
| Bedroom | 0.30 |
| Living room | 0.45 |
| Dining room | 0.25 |
| Hallway or stairs, per level | 0.25 |
| Entry or utility room | 0.20 |
| Base time per visit (walk-through, set-up, final check) | 0.25 |
Three adjustments sit on top. Size multiplies the non-bathroom rooms: small 0.8, standard 1.0, large 1.3. Condition multiplies every room but not the base time: light 0.9, standard 1.0, cluttered or heavy 1.3. Pets add 0.25 labour-hours a visit for hair. These multipliers are starting points, and your own timings should replace them within a month of data.
Pricing the three-bedroom, two-bathroom house with a dog
Home B is the working example: 1,800 square feet, standard size and condition, one dog. The engine adds up the rooms:
| Line | Working | Labour-hours |
|---|---|---|
| Kitchen | 1 × 0.80 | 0.80 |
| Bathrooms | 2 × 0.60 | 1.20 |
| Bedrooms | 3 × 0.30 | 0.90 |
| Living room | 1 × 0.45 | 0.45 |
| Dining room | 1 × 0.25 | 0.25 |
| Hallway | 1 × 0.25 | 0.25 |
| Entry | 1 × 0.20 | 0.20 |
| Base time | 0.25 | |
| Pets | 0.25 | |
| Total | 4.55 |
Cost is 4.55 × $23.88 = $108.65 for labour and overhead, plus $9.00 for travel and supplies, which is $117.65. At a 30% margin the price is $117.65 ÷ 0.70 = $168.08, and you quote $170. That gives a margin of 30.8%.
The hourly view reaches the same figure: 4.55 hours × $34.11 is $155.22, plus the $12.86 visit charge, which is $168.08. Tell the customer what they are buying rather than the cleaner-hours: two cleaners for about two hours and fifteen minutes.
Turning the engine into a rate card and flat-rate bands
Most customers want a number before they want an explanation. A per-room card is the engine with the arithmetic done in advance: each room's hours times $34.11, with the base time and the visit charge rolled into a visit fee of $21.39 (0.25 × $34.11 + $12.86). Rounded to whole dollars:
| Item | Card price |
|---|---|
| Kitchen | $27 |
| Full bathroom | $20 |
| Bedroom | $10 |
| Living room | $15 |
| Dining room | $9 |
| Hallway or stairs, per level | $9 |
| Entry or utility room | $7 |
| Visit fee | $21 |
| Pets | $9 |
Home B on the card is $27 + $40 + $30 + $15 + $9 + $9 + $7 + $21 + $9 = $167, within a dollar or two of the engine's $168. Flat-rate bands come from running typical homes through the engine and rounding: 1 to 2 bedrooms, one bathroom, up to 1,000 square feet is $115; 3 bedrooms, two bathrooms, up to 2,200 square feet is $170; the same layout from 2,201 to 3,000 square feet is $190. Publish them as "from" prices, because the band is an average and the engine decides the final quote.
Why the card and the band drift on large and cluttered homes
Home C has the same bedrooms and bathrooms as Home B, but its rooms are bigger. The engine applies the large-room factor of 1.3 to everything except the bathrooms and prices it at $189, quoted as $190. The card knows nothing about room size, so it comes to $158 and the margin falls to 16.4%. The same card plus a size selector fixes it: the non-bathroom rooms on the card add up to $97, so a 30% uplift is $29, and $158 + $29 = $187.
Home D is Home B with a cluttered family. Cleaners know this home takes longer, and the engine confirms it at 5.77 hours and $210. A flat $170 leaves a 13.7% margin, and the card is no better. Add the condition selector to the card and the sum works again: the rooms on the card come to $137 (the $97 above plus $40 for two bathrooms), a 30% condition uplift adds $41, and $167 + $41 = $208.
The lesson is that a card or a band is only as good as the questions that choose it. Ask about size and condition before you give a number, and let the engine overrule the card when the answers say so. If you are drafting the customer-facing estimate, quoting by home size with AI shows how to write it up, and the per-room carpet calculator uses the same trick of spreading a fixed visit cost across rooms.
The first visit and the deep clean cost more
A first visit takes longer than the visits that follow, because nobody has been maintaining the home. Say your timings show 1.5 times the hours. Home B's first visit is 4.55 × 1.5 = 6.83 labour-hours, which costs $171.98 and needs $245 on the price. A deep clean is a different job again: twice the maintenance hours, plus an oven at 0.75 and a fridge at 0.5.
| Visit type | Labour-hours | Cost | Price at 30% |
|---|---|---|---|
| Recurring visit | 4.55 | $117.65 | $170 |
| First visit of a recurring plan (1.5 times) | 6.83 | $171.98 | $245 |
| One-off deep clean (2 times, plus oven and fridge) | 10.35 | $256.16 | $365 |
Charge the first visit at the recurring price and you are paid $170 for a job that costs $171.98. The margin is minus 1.2%. The giveaway is $75 a client, and with 50 new clients a year it is $3,750 that you will not see as a line anywhere. Two ways to recover it: a separate first-clean price of $245, or $25 extra on each of the first three visits for customers who baulk at a single high price. Calibrate the 1.5 and 2.0 from your own log, not from these placeholders. Time ten first visits against the recurring visits that follow, and the ratio is yours.
If you are trying to keep customers after that first visit, how AI can help a cleaning company rebook regular clients covers the follow-up, and a cancellation policy protects the slots you have priced.
Extras priced from the same hours
Extras are where regular jobs turn into good ones, and where guessing costs most. Each extra is its own labour-hours, priced at $34.11 an hour with no visit fee, because the cleaner is already in the house. Time them like rooms:
| Extra | Labour-hours | Calculated | Card price |
|---|---|---|---|
| Oven, inside | 0.75 | $25.59 | $26 |
| Fridge, inside | 0.50 | $17.06 | $17 |
| Inside windows, per window | 0.10 | $3.41 | $3.50 |
| Kitchen cupboards, inside | 0.30 | $10.23 | $10 |
| Laundry, one load washed and folded | 0.25 | $8.53 | $8.50 |
A customer who wants the oven, the fridge and twelve inside windows adds $26 + $17 + $42 = $85 to the visit, in 2.45 labour-hours. Off-the-cuff pricing goes wrong in a predictable direction: the quick items get underpriced because each one feels like a minute. Twelve windows at $2 each is $24, not $42, and that single guess gives away $18 of an $85 add-on. Extras that vary a lot, such as a heavily soiled oven, deserve a "from" price and a check on arrival.
Weekly, fortnightly or four-weekly: how frequency moves price
Visits that are close together find a cleaner home. Visits that are far apart find a dirtier one. That is a cost difference, and it should move the visit price in both directions. Suppose your timings give factors of 0.85 for weekly, 1.00 for fortnightly and 1.25 for four-weekly, applied to Home B's 4.55 hours:
| Frequency | Labour-hours | Cost | Visit price | Visits a month | Monthly revenue |
|---|---|---|---|---|---|
| Weekly | 3.87 | $101.36 | $145 | 4.33 | $628 |
| Fortnightly | 4.55 | $117.65 | $170 | 2.17 | $368 |
| Four-weekly | 5.69 | $144.82 | $205 | 1.08 | $222 |
The weekly visit is about 15% cheaper than the fortnightly one, a discount your timings support, and it brings in 1.7 times the monthly revenue. The four-weekly visit is about 21% dearer, because the home has had four weeks to recover. Some price lists do the opposite and offer "monthly" as a cheap entry tier, which is how you end up doing five-hour visits at a four-hour price. The factors here are placeholders; replace them once you have a month of logged visits at each frequency.
Overruns and the discount ceiling on a regular clean
Two checks before you publish a card. First, an overrun. If Home B takes 20% longer than the engine says, because the oven was worse than described, cost rises to $139.38 and the margin at $170 falls from 30.8% to 18.0%. That is survivable once and ruinous as a habit, which is why the logs from your first month matter more than the first version of the sheet.
Second, the discount ceiling. A regular client asks for 10% off. At $153 the margin is 23.1%, which most owners would accept for a reliable fortnightly booking. Set a floor first: at a 20% margin the lowest sustainable price for Home B is $117.65 ÷ 0.80 = $147.06, so the most you can give is 13.5% off $170. Decide that number before the conversation, and offer scope or frequency instead of a bigger discount.
Building it with ChatGPT: routes, prompt and faults
You have three routes, in rising order of convenience. The first is plain chat: paste the prompt below, take the layout and formulas, and type them into a sheet. The second is ChatGPT for Excel and Google Sheets, an add-in that works inside the spreadsheet; OpenAI's help article lists which plans include it and how much use each allows, so check it against yours. Let it work on a copy of the file, and review every formula, calculation and changed cell it touches. The third is ChatGPT Work, on Plus and above, which can create and edit spreadsheet files; its help article says file creation is still rolling out and depends on your plan, workspace and file type. Check the finished file's formulas before relying on it. For more on formulas in general, writing Excel formulas with ChatGPT goes through real examples.
Keep your rates and rules in a ChatGPT Project rather than a custom GPT: OpenAI stopped new custom GPT creation in late September 2026, and existing GPTs are scheduled to stop running on 11 December 2026. Put the inputs and the "never invent a number" rule in the Project's instructions, and each new chat starts from your costs.
Build a house cleaning price calculator for Excel or Google Sheets.
Tabs: Inputs, Rooms, Quote. Plain formulas only; no AI functions in cells.
Inputs: wage 17.00; payroll burden 14%; overhead per labour-hour 4.50;
travel and supplies per visit 9.00; target margin 30% (profit divided by
price, NOT markup on cost); first-visit factor 1.5; deep-clean factor 2.0.
Rooms (labour-hours): Kitchen 0.80; Bathroom 0.60; Half bath 0.30; Bedroom
0.30; Living room 0.45; Dining room 0.25; Hallway 0.25; Entry 0.20; Base 0.25.
Selectors: size (Small 0.8, Standard 1.0, Large 1.3) applies to every room
except bathrooms; condition (Light 0.9, Standard 1.0, Heavy 1.3) applies to
every room but not base time; pets add 0.25.
Quote: one line per room type (count), size, condition, pets Y/N, visit type
(Recurring, First, Deep). Output: labour-hours, cost, price at target margin
rounded to the nearest 5, hourly view (cleaner-hours x price per hour plus
visit charge), margin at the rounded price, and margin if the job runs 20% longer.
Use INDEX and MATCH with exact match. List every formula. Then give me three
test homes with the answers worked out by hand.
An illustrative excerpt from a first answer follows; these formulas carry the logic, so read each one:
Inputs!B8 Cost per labour-hour =B2*(1+B3)+B4
Quote!E5 Hours for a line =B5*INDEX(Rooms!B:B,MATCH(A5,Rooms!A:A,0))*IF(OR(A5="Bathroom",A5="Half bath"),1,INDEX(Inputs!B$12:B$14,MATCH(C5,Inputs!A$12:A$14,0)))*INDEX(Inputs!B$16:B$18,MATCH(D5,Inputs!A$16:A$18,0))
Quote!B16 Labour-hours =(SUM(E5:E12)+Rooms!B10+IF(B13="Y",Inputs!B6,0))*IF(B14="First",Inputs!B9,IF(B14="Deep",Inputs!B10,1))
Quote!B17 Cost =B16*Inputs!B8+Inputs!B5
Quote!B18 Price =MROUND(B17/(1-Inputs!B7),5)
Quote!B19 Margin =(B18-B17)/B18
Quote!B20 Margin if longer =(B18-(B16*(1+Inputs!B11)*Inputs!B8+Inputs!B5))/B18
Five faults are worth hunting for in any first draft. The wage is used as the cost, with no burden or overhead. The price is cost times one plus the margin, which is a markup. The size or condition factor is applied to the base time or to bathrooms. A lookup uses approximate match, which silently picks the wrong room type when the list is not sorted. And the first-visit factor is applied to the price instead of to the hours, which scales the travel charge as well. Enter the three test homes and compare each result with Homes A, B and C above: $115, $170 and $190.
Turning an enquiry into inputs without letting ChatGPT guess
A second use is cheaper than the build. Customers write messages like "3 bed 2 bath, about 1800, we have a dog, last pro clean maybe a year ago, kids' stuff everywhere". An assistant can turn that into calculator inputs if you fence it in:
Turn this enquiry into inputs for my calculator: bedrooms, bathrooms,
square feet, pets, size (Small/Standard/Large), condition (Light/Standard/
Heavy), first visit (Y/N). Use only what the customer says. If something is a
judgement, write [CHECK] instead of choosing. List questions to ask them.
Behind that sits a short list of questions that the engine needs answered before it can quote at all:
- Bedrooms, full bathrooms and half bathrooms.
- Approximate square feet, or a rough floor plan.
- Stairs and number of levels.
- Pets, and whether anyone has allergies.
- When the home was last professionally cleaned.
- Two photos: the kitchen and the main bathroom.
- Extras wanted, and how often the customer wants visits.
A good reply gives bedrooms 3, bathrooms 2, area 1,800 (approximate), pets yes and first visit yes, and marks size and condition as [CHECK] with two questions: could the customer send photos of the kitchen and main bathroom, and are the bedrooms average size? The failure to watch is a confident guess. "Stuff everywhere" and "a year ago" read as heavy condition, and Home B becomes Home D at $210. A standard-condition quote of $170 is $40 lower. Neither is right without a look at the home, so ask for the photos or check at the door, and set the condition factor yourself.
Back-testing the engine on your last six jobs
Before you change a single price, run the jobs you have already done through the engine and compare. It takes twenty minutes and it is the quickest way to learn where your current prices leak. A back-test of six past jobs (illustrative) looks like this:
| Past job | Engine price | Charged | Gap | Margin at the charged price |
|---|---|---|---|---|
| Studio flat, 1 bath | $95 | $70 | -26% | 5.3% |
| 2 bed, 1 bath flat | $115 | $100 | -13% | 20.6% |
| 3 bed, 2 bath, dog | $170 | $170 | 0% | 30.8% |
| 4 bed, 3 bath, large rooms | $235 | $230 | -2% | 28.9% |
| 3 bed, 1.5 bath terrace, small rooms | $120 | $150 | +25% | 45.1% |
| 3 bed, 2 bath, cluttered, dog | $210 | $170 | -19% | 13.7% |
The six jobs brought in $890 against an engine total of $945, a blended margin of 26.3% on a cost of $655.89, short of the 30% target even though the terrace earned 45%. The pattern is the useful part. The studio and the flat are underpriced because small homes still carry the base time and the travel. The cluttered house is underpriced because the flat price ignored condition. The terrace is overpriced, which may mean you are about to lose it at the next price rise, so decide whether to hold it as a loyal client or bring it nearer $120.
The studio line also gives you a minimum visit price, since a studio is about the smallest job you take: $95. Set a floor of $95 and the studio's 26% shortfall disappears; the flat needs its own look. Do the same exercise every quarter with the latest ten jobs, and when engine and charged prices stop disagreeing, you can trust the sheet more than your instincts.
House cleaning pricing questions
Should I charge for house cleaning by the hour or a flat rate?
Customers find a flat rate easier to accept, and it protects you from slow cleaning being rewarded. Set the flat prices from your hourly engine, with size and condition bands, and keep hourly pricing for first visits and homes you cannot judge in advance. Either way the price should come from your hours and costs.
How much more should a first clean cost?
Time your first ten first visits against the recurring visits that follow, and use that ratio. In the worked example the first visit takes 1.5 times the hours, which moves a $170 visit to $245. Spread the $75 uplift over the first three visits if a single higher price puts customers off.
Do I price per cleaner or per team?
Track cost per cleaner-hour internally, because that is what you pay for. Customers see a price per visit. Quote it as the visit price, with the team and the time stated, such as two cleaners for about two hours fifteen minutes, so they can see what they are buying.
Can ChatGPT work out the price from a customer's message?
It can turn the message into calculator inputs and flag what is missing, which saves typing. It should not decide the condition of the home or do the arithmetic. Ask for two photos or check at the door, set the condition factor yourself, and let the spreadsheet produce the number.
Further reads
- Cleaning Company Price Increase Letter: Draft and Segment With AI — Raise prices on regular clients without losing them.
- How to Get House Cleaning Clients: A Local Plan Built With AI — Find the customers once your price card is ready.
- House Cleaning Business Flyer: Test ChatGPT Copy, Then Design in Canva — Put your from-prices on a flyer worth keeping.
- Maid Service Scheduling Software: Can AI Handle Teams and Keys? — Scheduling teams, keys and recurring visits.
- Cleaning Business SOP: Write Procedures and Checklists With AI — Write the checklists behind your room times.
- Price Commercial Cleaning Jobs: A Margin Calculator Built With AI — The same cost model applied to office contracts.
- AI for Cleaning Services: End-of-Tenancy Quotes and Photo Checklists — Quote a move-out clean room by room from one property form, then capture photo evidence and issue landlord and agent reports without retyping.
- Cleaning Business Marketing Ideas: A Month of Posts With ChatGPT — A filled-in ChatGPT brief, a 16-post calendar, honest before-and-after rules, offers that fit your capacity and a way to read the month.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: OpenAI help articles on ChatGPT for Excel and Google Sheets, on creating and editing documents, spreadsheets and presentations with ChatGPT Work, and on custom GPT retirement and migration.