Build a recurring cleaning schedule that never double-books

Frequency patterns, why weekday sets break most scheduling software, how to budget buffer and drive time, and what to do when a client cancels.

Petru Amortoae · July 31, 2026 · 8 min read

A cleaning schedule is not a calendar with appointments on it. It is a machine that has to keep producing the same result every week while the inputs change: a cleaner calls in sick, a client goes to Florida for two weeks, a new job lands on the far side of town, and someone reschedules a Thursday to a Tuesday that is already full.

Most double bookings are not carelessness. They come from a small number of specific gaps, and each one has a fix.

Know which frequency pattern you are actually running

Residential cleaning runs on four patterns, and they behave differently.

Weekly. Same weekday, same slot, every week. The easiest to plan and the most profitable per hour, because the home barely gets dirty between visits.

Every two weeks. The default for most residential books. Note the wording: every two weeks, not twice a month. Those are different, and the difference costs money.

Every three or four weeks. Less common, still real. The home takes noticeably longer than a biweekly one, so price and schedule more time for it.

Monthly by date pattern. First Tuesday of the month, or the 15th. This is the one that quietly breaks things.

Here is why the distinction matters. Every four weeks produces 13 visits a year. Monthly produces 12. On a $150 visit that is a $150 a year difference per client, and across 60 monthly clients it is $9,000. It also changes capacity: 13 visits means one month a year has two visits for that client, and if your Tuesday is already full that second visit has nowhere to go.

Decide which one you sell, write it on the quote in those words, and set it up in your software the same way. Do not sell monthly and schedule every four weeks.

Weekday sets are one client, not three

Here is the pattern that breaks most cleaning software. A gym wants Monday, Wednesday and Friday. A medical office wants Tuesday and Thursday. A large home wants Monday and Thursday.

That is one client, one agreement, one price, and one thing to pause when they go quiet in August. Many scheduling tools cannot express it. They ask you to create three separate recurring jobs, which produces three problems immediately:

  • Three series to edit when the client moves from Monday to Tuesday, and if you forget one, you have a crew showing up on a day nobody is paying for.
  • Three places to pause. Pause two of the three and the third keeps generating visits, keeps assigning a cleaner, and keeps blocking a slot you could have sold.
  • Three lines to reconcile at invoice time on an account the client thinks of as one bill.

When you are evaluating scheduling software, this is the test to run in the trial. Create a Monday, Wednesday, Friday client. Then pause it. Then move it to Tuesday and Thursday. If any of those takes three operations, you will be doing that dance every week forever.

Commercial work makes this sharper, because a janitorial account is almost always a weekday set with a single monthly price attached to it, not a stack of individual jobs.

Budget the day in cleaner hours, not in job slots

A day is not five jobs. It is a number of cleaner hours, and only some of them are billable.

Take a two person team working 8am to 4pm. That is eight clock hours each, sixteen cleaner hours. Now subtract:

  • Morning load out and supply check: 20 minutes
  • Drive time between jobs: four transitions at 18 minutes each, 72 minutes
  • Lunch: 30 minutes
  • End of day restock and paperwork: 20 minutes

That is 142 clock minutes gone, roughly 2.4 hours per person, so 4.7 cleaner hours of the 16 are not billable. You have about 11.3 billable cleaner hours to sell that day, not 16. If you build the day assuming 16, your crew runs late from Tuesday onward and quality quietly drops on the last job of the day.

Add a buffer of 15 minutes per job on top. Homes run long for ordinary reasons: a dog, a delivery, a client who wants to chat, a bathroom that turns out to have been rented to a college student. Fifteen minutes per job absorbs most of it. Without buffer, one slow morning job pushes every arrival window for the rest of the day, and the person who pays for that is the cleaner who finishes at 6:20pm.

Cluster by geography, then by time

Drive time is the largest cost you are not invoicing. The way to shrink it is not faster driving, it is a day that never crosses the city twice.

Give each weekday a zone. Monday north, Tuesday central, Wednesday west, and so on. When a new client books, offer them the day their zone runs, not the day they ask for. Most people accept a day, and the ones who insist on a specific day tell you something useful about how much flexibility you will get from them later.

Two habits make this hold up:

  1. Book the first job of the day nearest to where the crew starts. A 7:50am departure into a 9am first job across town wastes the best hour of the day.
  2. Never let a single out of zone job sit alone. If you take a job 22 minutes outside the zone, either charge a travel surcharge that covers the round trip at your cleaner hourly rate, or hold it until you have a second job near it.

Do the arithmetic on the surcharge rather than guessing. A 22 minute detour each way is 44 minutes of a two person crew, which is 1.47 cleaner hours. At a $42 target that is $62. Charging $15 for it is charity, and doing it fifteen times a month is a $700 hole.

Route optimization helps once a day has five or more stops, because the difference between a good order and a bad one on six stops is regularly 30 to 50 minutes. Below four stops, your own knowledge of the city usually wins.

The five things that actually cause double bookings

One. A recurring series that does not understand exceptions. A client asks to skip one visit. If skipping means deleting the visit, the series may regenerate it. If skipping means editing the series, you have changed every future visit. You need a real exception: this one occurrence is cancelled, the rest of the pattern is untouched.

Two. Moving a visit without moving the assignment. The visit moves to Wednesday, the cleaner assignment stays on Tuesday, and now Tuesday looks free to whoever books next.

Three. Two people booking from two views. The owner books from the phone while the office manager books from the calendar, and nothing checks the other. The fix is a conflict check at the moment of assignment: same cleaner, overlapping window, refuse and say why.

Four. Time zones and daylight saving. If your software stores local times without a zone, the March and November shifts move visits by an hour. This shows up as mysterious 7am arrivals nobody scheduled.

Five. Held or pending jobs that do not hold anything. A quote in progress, a booking waiting on a deposit, or a job flagged "to confirm" should still occupy the slot on the calendar. If it does not, you will sell the slot twice and then decide which client to disappoint.

What to do when a client cancels

An empty slot is not neutral, it is a loss. If you pay hourly and cannot redeploy the crew, a cancelled 3.5 hour job costs you the $150 you did not bill plus the $63 to $73 you still pay the cleaners.

Have four things ready.

A written policy. 24 hours notice to cancel or reschedule without a fee, 50 percent of the visit price inside 24 hours, 100 percent for a lockout where the crew arrives and cannot get in. Put it in the terms the client agrees to when they book, not in an email you send after the argument.

A card on file. A cancellation policy you cannot collect on is a suggestion. Ask for the card at booking, tell them plainly what it is for, and charge it when the policy says so. Waive it once for a genuine emergency and say that you are waiving it, so the client knows it was real.

A fill list. Keep a standing list of clients who have said yes to short notice work: people who wanted every week but got every two, and one time clients who were flexible on date. One text to eight people fills a lot of Tuesday mornings.

A default backup use of the time. If the slot does not fill, it becomes the deep clean of the van, the supply run, the training hour for a new cleaner, or an inspection at an account you have not looked at in a while. Decide in advance so the crew does not go home at 11am and you do not lose the whole day.

For long absences, do not just skip. A biweekly client who skips two visits comes back to a home that is four weeks dirty, and your crew silently absorbs the extra hour. Either shift the schedule so the visits still land, or charge the returning visit at a higher rate that reflects what it actually is. Write that in the terms too.

The weekly rhythm that keeps it honest

Fifteen minutes, once a week, prevents most of the fires:

  • Look at next week's calendar for gaps a job could fill and for days over capacity in cleaner hours
  • Confirm every new client's first visit and every changed slot
  • Check which recurring series have no visit generated in the next 30 days, which usually means a paused series someone forgot to resume
  • Check entry access for tomorrow's jobs: codes, keys, and who has them

In BroomDesk, a recurring client is one record with the weekday set on it, so a Monday, Wednesday, Friday account pauses, moves and bills as one thing. Assignment checks for a conflicting visit before it saves, route optimization and drag and drop dispatch are on the Pro plan and above, and cleaners clock in from the field app so you can see what actually happened against what you planned. Whatever you run, the goal is the same: one calendar that tells the truth, buffer built into the day, and a written policy for the hour a client gives back to you at short notice.

Read next