River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

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 weekValueWhere it comes from
Paid hours160.004 technicians x 5 days x 8 hours
Admin, parts collection, vehicle checks15.000.75 per technician per day, off the timesheets
Available for travel and on-site work145.00160.00 less 15.00
CapacityHours per jobPlus travelJobs the week holds
What the calendar computes, from the estimate2.51140.5547.36
What the week delivers, from the median actual3.27050.5537.95
Currently booked44
Gap between the two readings9.41 jobs
The same week, measured twiceOn-siteTravelAdminTotalOf 160
What the calendar shows110.5024.2015.00149.7093.6%
What the week consumes143.9024.2015.00183.10114.4%
Over23.106.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 typePer weekEstimateMedian actualOverrun hoursShare
Bathroom install216.021.511.032.9%
Boiler repair92.03.19.929.6%
Leak call-out141.01.45.616.8%
Boiler service121.51.83.610.8%
Boiler replacement28.09.42.88.4%
Radiator swap52.52.60.51.5%
Total44110.5143.933.4100.0%
Where it concentratesValue
Job types carrying more than a quarter of the overrun eachBathroom install and boiler repair
Jobs those two account for11 of 44, or 25.0%
Overrun those two account for20.9 of 33.4, or 62.6%
Most frequent recorded cause, boiler repairDiagnosis time before the fault is known, 104 of 186 jobs
Second cause, boiler repairPart not on the van, 51 of 186 jobs
Most frequent recorded cause, bathroom installFirst fix runs into day two, 17 of 24 jobs
Re-estimate only those twoBeforeAfter
Estimated hours per job2.51142.9864
Capacity the calendar computes47.3641.00
Capacity the week delivers37.9537.95
Gap between the two readings9.41 jobs3.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.

TechnicianPaidOn-siteTravelAdminUtilizationOver 40
R. Aluko4036.757.153.7591.9%7.65
K. Boateng4034.208.253.7585.5%6.20
S. Marchetti4035.405.503.7588.5%4.65
D. Priestley4037.553.303.7593.9%4.60
Total160143.9024.2015.0089.9%23.10
What the 23.10 hours costArithmeticValue
Straight time rate38
Overtime rate, one and one half times the regular rate57
Premium per week23.10 x 19438.90
Premium per quarter438.90 x 135,705.70
Premium per year, 48 working weeks438.90 x 4821,067.20
Overrun hours a year23.10 x 481,108.80
As a share of one technician's paid year1,108.80 / 1,92057.8%
The queue, at 6.05 jobs of debt a weekBacklog in jobsWorking days late
After week 16.050.80
After week 212.091.59
After week 424.193.19
After week 848.376.37
After week 1378.6010.36
Advertised lead time3 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

01

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.

02

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.

03

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.

04

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.

05

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.

06

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. 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. 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. 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. 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