Service Business Scheduling Template
Two documents and four sheets, including the capacity model built from how long jobs actually take rather than from the estimate.
Free download · No account needed
Capacity Model by week
Northgate Mechanical Services Ltd. Four technicians, five days, eight paid hours. Both durations below come out of the same booking register, 1,050 jobs over twelve months.
| Hours in the week | Value | Where it comes from |
|---|---|---|
| Paid hours | 160.00 | 4 technicians x 5 days x 8 hours |
| Admin, parts collection, vehicle checks | 15.00 | 0.75 per technician per day, off the timesheets |
| Available for travel and on-site work | 145.00 | 160.00 less 15.00 |
| Capacity | Hours per job | Plus travel | Jobs the week holds |
|---|---|---|---|
| What the calendar computes, from the estimate | 2.5114 | 0.55 | 47.36 |
| What the week delivers, from the median actual | 3.2705 | 0.55 | 37.95 |
| Currently booked | 44 | ||
| Gap between the two readings | 9.41 jobs |
| The same week, measured twice | On-site | Travel | Admin | Total | Of 160 |
|---|---|---|---|---|---|
| What the calendar shows | 110.50 | 24.20 | 15.00 | 149.70 | 93.6% |
| What the week consumes | 143.90 | 24.20 | 15.00 | 183.10 | 114.4% |
| Over | 23.10 | 6.05 jobs |
The travel row is 24.20 hours, which is 15.1 percent of the paid week and is missing from the calendar's own arithmetic entirely. It is not commuting: travel from job site to job site during the workday counts as hours worked, so it is paid, it is not on-site, and a capacity model without it overstates the week by roughly a day and a half of technician time.
Overrun Analysis
Jobs per week times the difference between the median actual and the estimate. Sorted by contribution, which is not the same order as by frequency.
| Job type | Per week | Estimate | Median actual | Overrun hours | Share |
|---|---|---|---|---|---|
| Bathroom install | 2 | 16.0 | 21.5 | 11.0 | 32.9% |
| Boiler repair | 9 | 2.0 | 3.1 | 9.9 | 29.6% |
| Leak call-out | 14 | 1.0 | 1.4 | 5.6 | 16.8% |
| Boiler service | 12 | 1.5 | 1.8 | 3.6 | 10.8% |
| Boiler replacement | 2 | 8.0 | 9.4 | 2.8 | 8.4% |
| Radiator swap | 5 | 2.5 | 2.6 | 0.5 | 1.5% |
| Total | 44 | 110.5 | 143.9 | 33.4 | 100.0% |
| Where it concentrates | Value |
|---|---|
| Job types carrying more than a quarter of the overrun each | Bathroom install and boiler repair |
| Jobs those two account for | 11 of 44, or 25.0% |
| Overrun those two account for | 20.9 of 33.4, or 62.6% |
| Most frequent recorded cause, boiler repair | Diagnosis time before the fault is known, 104 of 186 jobs |
| Second cause, boiler repair | Part not on the van, 51 of 186 jobs |
| Most frequent recorded cause, bathroom install | First fix runs into day two, 17 of 24 jobs |
| Re-estimate only those two | Before | After |
|---|---|---|
| Estimated hours per job | 2.5114 | 2.9864 |
| Capacity the calendar computes | 47.36 | 41.00 |
| Capacity the week delivers | 37.95 | 37.95 |
| Gap between the two readings | 9.41 jobs | 3.05 jobs |
Editing two rows in a table closes 67.6 percent of the gap. Note the third row: the real capacity does not move, because re-estimating changes the plan and not the work. That is the test for whether a capacity model has been built correctly, and the reason the booking duration and the customer-facing estimate are kept as two separate fields rather than forced to agree.
Utilization Tracking and the queue
The week reconciled against real timesheets, then the 23.10 hours converted into what they cost and how long they take to show up.
| Technician | Paid | On-site | Travel | Admin | Utilization | Over 40 |
|---|---|---|---|---|---|---|
| R. Aluko | 40 | 36.75 | 7.15 | 3.75 | 91.9% | 7.65 |
| K. Boateng | 40 | 34.20 | 8.25 | 3.75 | 85.5% | 6.20 |
| S. Marchetti | 40 | 35.40 | 5.50 | 3.75 | 88.5% | 4.65 |
| D. Priestley | 40 | 37.55 | 3.30 | 3.75 | 93.9% | 4.60 |
| Total | 160 | 143.90 | 24.20 | 15.00 | 89.9% | 23.10 |
| What the 23.10 hours cost | Arithmetic | Value |
|---|---|---|
| Straight time rate | 38 | |
| Overtime rate, one and one half times the regular rate | 57 | |
| Premium per week | 23.10 x 19 | 438.90 |
| Premium per quarter | 438.90 x 13 | 5,705.70 |
| Premium per year, 48 working weeks | 438.90 x 48 | 21,067.20 |
| Overrun hours a year | 23.10 x 48 | 1,108.80 |
| As a share of one technician's paid year | 1,108.80 / 1,920 | 57.8% |
| The queue, at 6.05 jobs of debt a week | Backlog in jobs | Working days late |
|---|---|---|
| After week 1 | 6.05 | 0.80 |
| After week 2 | 12.09 | 1.59 |
| After week 4 | 24.19 | 3.19 |
| After week 8 | 48.37 | 6.37 |
| After week 13 | 78.60 | 10.36 |
| Advertised lead time | 3 working days |
Utilization of 89.9 percent reads as excellent and is the reason nobody looks further. It is 89.9 percent because the week ran 23.10 hours of overtime, not because the schedule fits. The number that matters is on the row above it: 183.10 hours consumed against 160 paid. Nobody experiences the right-hand column as a backlog either. They experience it as a Tuesday where three customers get moved, and it feels like an unlucky Tuesday rather than the fourteenth consecutive one.
Every scheduling template for a service business is a grid of slots. Some of them colour-code the technician and a few total the hours at the bottom. All of them fill the grid from the duration the job was estimated at, because that is the only duration a booking system holds at the moment of booking. That single assumption is what makes a full calendar and a deliverable week two different things.
Northgate Mechanical is an invented four-technician plumbing and heating business with 160 paid hours a week and 1,050 jobs in twelve months of records. Its calendar computes room for 47.36 jobs. The week delivers 37.95. It is booking 44, which sits between the two, and that is exactly why nobody can see the problem: the calendar reads 93.6 percent full while the week consumes 114.4 percent of the hours that exist. Both readings are correct, and both come out of the same register.
The 23.10 hour difference is not a busy week. It is 438.90 of overtime premium and 6.05 jobs of backlog, every week, which reaches ten working days by the end of a quarter against an advertised lead time of three. It is also concentrated rather than general. Two job types out of six, eleven of the forty-four jobs, carry 62.6 percent of the overrun, so re-estimating just those two closes two thirds of the gap by editing two rows in a table.
What's in the pack
Capacity Model by week
Paid hours less daily non-productive time, then two per-job durations from the same register with travel added to both. Returns the capacity the calendar computes, the capacity the week delivers, and the gap in jobs.
Booking Register
Every job carrying the duration it was booked at and the duration it took, with a variance column and the reason where there is one. This is the input the medians come from, so it is the one sheet that has to be kept.
Overrun Analysis
Jobs per week times the gap between median actual and estimate, per job type, sorted by contribution rather than frequency. Includes the recorded causes for the worst two with counts against the register.
Utilization Tracking
On-site over paid hours per technician, reported next to the number it hides, which is total hours consumed against hours paid at straight time. Reconciles line by line to the capacity model.
Scheduling Policy
Five booking rules derived from the model, including the week's real closing number, why travel is booked rather than absorbed, and why two end-of-day slots stay empty on purpose.
Rescheduling Procedure
The trigger, the order of preference, and the four fields every move records. Splits causes into inside the business and outside it, which is the field most schedulers leave blank and the one that fixes things.
How to use it
- 1
Open in River, or download it
Take the blank Word and CSV files with no account, or install the pack in River and hand it your job history and your staff hours.
- 2
Derive both durations from the same register
The estimate the job was booked at and the median actual it took. Use the median rather than the mean, because a handful of very long jobs will otherwise move it.
- 3
Put travel inside the per-job figure
Travel between sites during the workday is paid time that is not on-site time. Leaving it out is the second largest reason a calendar over-books.
- 4
Report both capacities and the gap
Never a single blended number. The whole finding is the difference between what the calendar offers and what the week delivers, with what is currently booked shown against both.
Frequently asked questions
Is this template free?
Yes. Two documents and four sheets download as Word and CSV files with no signup and no credit card. Edit with AI is the optional path where the agent derives your medians from your own job history. The rest of the library is at the template index.
What format are the downloaded files?
Word documents (.docx) for the Scheduling Policy and Rescheduling Procedure, and CSV (.csv) for the Capacity Model, Booking Register, Utilization Tracking and Overrun Analysis. They open natively in Word, Pages, Google Docs, Excel, Numbers and Sheets.
We have never recorded actual job durations. Can we still use it?
Start with four weeks of the Booking Register and nothing else. Four weeks of one job type is enough for a usable median on the frequent ones, and the infrequent ones stay flagged rather than estimated. The pack keeps a job type on its previous figure below twenty completions.
Why not just add a buffer to every estimate?
Because the overrun is not spread evenly. Here two job types out of six carry 62.6 percent of it from a quarter of the jobs, so a flat buffer overprices the four that are fine and still underprices the two that are not. Editing two rows closes 67.6 percent of the gap.
Should travel time really be in the model?
Yes, and it is paid time. Travel from job site to job site during the workday must be counted as hours worked. At Northgate it is 24.20 hours a week, which is 15.1 percent of the paid week and absent from the calendar's own arithmetic.
Is high utilization not what we want?
Not on its own. Northgate reads 89.9 percent, which looks excellent, and it reads that way because the week ran 23.10 hours of overtime at one and one half times the regular rate. The honest number is hours consumed against hours paid, which is 114.4 percent.
Where does this sit next to quoting?
Alongside it, reading the same register from the other end. The contractor job estimate template uses actual cost to fix pricing. This one uses actual duration to fix the calendar, and what a delayed client does to a start date is the onboarding tracker. An appointment-based practice runs a related overbooking problem from the demand side, covered in the clinic scheduling pack.
Find out how many jobs your week actually holds
Download the blank pack as Word and CSV files, or open it in River and have it derive both capacities from your own job history.
Edit with AI