In this post
This is the method, not the software. It works on a whiteboard and it works better in a system, but the order of the decisions is the same either way.
The order that works
Most schedules are built job by job, in the order the phone rang. That is why they criss-cross.
Build in this order instead:
- Fixed commitments first. Installs, commercial slots with site access constraints, anything with a real deadline.
- Recurring maintenance next, into the gaps, in geographic clusters.
- Repair and diagnostic work into what is left, assigned by area.
- Leave the gaps deliberately. Do not fill them because they look empty.
- Emergencies go into the gaps you left, not on top of booked customers.
The principle underneath: schedule the inflexible work first and let the flexible work fill in around it. Doing it the other way round means the flexible work is already locked when the inflexible work arrives.
A worked day
Six technicians, a suburban territory. Here is one technician's day built the wrong way, and the same day built the right way.
Booked in call order:
| Time | Job | Area |
|---|---|---|
| 8:00 | Ductwork modification | East |
| 10:00 | Furnace repair | West |
| 1:00 | Furnace repair | Southeast |
| 3:00 | Heat pump diagnostic | Far west |
The route crosses the territory four times. On a straight-line model of a fictional service area, that is 89 miles and about 2h 52m of driving.
The same four jobs, clustered:
| Time | Job | Area |
|---|---|---|
| 8:00 | Furnace repair | West |
| 10:00 | Heat pump diagnostic | Far west |
| 1:00 | Ductwork modification | East |
| 3:00 | Furnace repair | Southeast |
69.8 miles, about 2h 16m. Nineteen miles and thirty-six minutes back, from nothing but ordering.
That is an example calculation on sample data, using a simplified distance model with no real roads in it. It illustrates the mechanism. Your territory will produce a different number.
See this comparison live → The demo has exactly this day in it. Open Routes, pick the technician and compare.
Weekly rhythm
Friday afternoon: set next week. Fixed work in, maintenance clustered by area and by day, capacity checked per technician.
Each morning: adjust, do not rebuild. Overnight emergencies, sick calls, parts that did not arrive. If you are rebuilding the day every morning, the week was not scheduled properly.
Each afternoon: look at tomorrow. Confirm anything that needs confirming and fill gaps from the standby list.
Monthly: look backward. Estimated against actual duration by job type. Cancellation rate and reasons. Which technicians are consistently running over, and whether that is the technician or the estimate.
Geography: one rule
Give each technician a part of the map for the day, not the whole map.
This is the highest-leverage change available to most contractors and it costs nothing. It trades some flexibility (a customer in the east cannot be seen by whoever is free if the free technician is in the west) for a large reduction in driving.
The exception is emergencies, which should be assigned by whoever can actually get there and do the work, geography be damned. Emergency dispatch →
Match the technician to the work, deliberately
Not everyone should get everything.
- Senior technicians on diagnostics and anything unfamiliar, the jobs where experience shortens the visit most.
- Install crews on installs, kept whole. Breaking up a crew to cover a service call costs more than it looks.
- Maintenance technicians on plan visits, in clusters. High volume, predictable duration, ideal for density.
- Apprentices paired, not solo, on work with a known shape.
A schedule that treats technicians as interchangeable blocks will send the wrong person somewhere expensive.
Capacity, honestly
Before you book a day, know what it can hold.
Available hours = technicians on shift × shift length
Travel allowance = expected trips × average trip time
Admin allowance = depot, paperwork, parts collection
Bookable hours = available − travel − admin − deliberate slack
Run it once for a normal week and you will have a realistic capacity figure, which is usually well below what the raw hours suggest, and that gap is exactly why schedules that look fine on Monday are in trouble by Wednesday.
Dispatch efficiency calculator → Does this arithmetic on your numbers.
Frequently asked questions
What should I schedule first, capacity or geography?
Capacity first, then geography. Fitting work to the hours and skills you actually have is what keeps the day achievable; routing is what makes it efficient. Doing it the other way round produces tidy routes nobody can finish.
How much drive time is acceptable?
Less than you are probably running, but the aim is not zero. Chasing perfect routing tends to break the more important constraint, which is whether the technician can finish the work in the hours available.
Should technicians be matched to job types?
Deliberately, yes. Sending the person who is fastest at a job type to that job type raises completed work per day, and it lowers callbacks, which is the cost that does not appear on the schedule.
How far ahead should the schedule be built?
Set the shape of the week weekly and adjust daily. A schedule built only in the morning is reactive; one built only weekly cannot absorb an emergency.
How do I know whether I have enough technicians?
Compare the hours you can actually sell against the hours of work in the pipeline, using billable hours rather than hours worked. The gap is the honest answer, and it is usually smaller than it feels during a busy week.
Related
Want this built into a system your dispatcher uses rather than a process they have to remember? Talk to BDEVY →
Dispatch and scheduling HVAC hvac technician scheduling scheduling hvac technicians hvac service scheduling