Scheduling
How do I plan weekly crew runs from a list of jobs with due dates?
Sort the list by due-by date, lock in every job that must happen this week, then group the rest by area and fill each crew's days up to a fixed limit (for example 8 hours) counting job duration plus drive time between jobs and back to base. Send each customer the planned date and ask them to confirm, and only treat a run as final when its jobs are confirmed. Software helps when it stores each job's real duration from past visits and its due-by window, because then it can build the week, flag days that run over, and rebuild only the affected run when a customer moves.
- Due-by date decides the week. Area and drive time decide the day. Crew skills and size decide the crew.
- A day's limit includes drive time: first leg out, every leg between jobs, and the leg home or to the hotel.
- Use each site's last actual duration, not a guess, and add it to the job before planning.
- Planned and confirmed are two different statuses. Show them in two colours.
- When one job moves, replan that run only, not the whole week.
This page is about planned work with due dates, such as maintenance, cleaning and inspection runs. Same-day emergency dispatch is a different problem.
Facts checked as of November 2026. Sources at the end of the page.
Step by step
How weekly run planning works, step by step
Whether you plan in Excel or in software, the same seven steps turn a job list into runs. Each one needs a specific field on the job.
1. Give every job a due-by window
Each job needs an earliest date and a due-by date, not one fixed date. For recurring maintenance, the due-by comes from the interval. A UK kitchen extract system used 12 to 16 hours a day should be cleaned every 3 months under the TR19 guidance, and one used 6 to 12 hours every 6 months, so a site cleaned on 4 August is due by 4 November.
2. Store the real duration per site
Put the last actual on-site time on the site record (for example 3.5 hours for a 2-person crew) and use it as the planned duration next time. ServiceTitan's own help says every job type needs a default duration, and that a zero or blank duration makes its capacity algorithm overbook badly. Per-site durations are better than per-job-type ones, because two sites of the same type can differ by hours.
3. Lock the must-do jobs first
Take every job whose due-by date falls in the planning week, plus any with an access window the customer has fixed (a kitchen that is only free on Monday night, a site that needs a permit). These go on the board first. Everything else is filler that can move to next week.
4. Group by area, then by day
Cluster the locked jobs by postcode or zip area, then pull nearby filler jobs into the same run so the crew is not driving past work that is due next month. Check for other open jobs at the same site, so one visit covers both.
5. Fill each day to a limit that counts drive time
Add up drive from base to the first job, each job's duration, drive between jobs, and drive back to base or to the hotel. Stop when you hit the day limit (say 8 hours). This is the vehicle routing problem with time windows that routing engines solve: Google's OR-Tools guide models each location's time window as the requested time for a visit and uses a matrix of travel times between locations.
6. Match the crew
Check crew size (a duct clean may need 3, a filter swap 1), skills or tickets, and the van stock each job needs. A job that needs a skill nobody on that run has goes to another run, even if it is closer.
7. Ask the customer to confirm, then publish
Send each customer the planned date with a one-click confirm or request-change link. Mark the job Planned until they confirm, then Confirmed. Publish the week to the crews only once confirmations are in, and keep the unconfirmed jobs visibly different on the board.
Failure modes
Why it goes wrong
These are the problems buyers described on our sales calls, by trade and size.
Planning takes the whole day
A UK commercial kitchen extract cleaning company with 2-3 person crews running 3-4 job runs a week said planning took pretty much all day, because jobs come from client requests and client portal exports into Excel. Most of that time is re-checking drive times and due dates by hand.
One move breaks the whole week
The same company said that when a client asks to move a date, they have to look at the plan again and move everything around. A residential cleaning company said one cleaner cancelling meant recalibrating the entire schedule. Plans built by hand have no way to replan one run and leave the rest alone.
Confirmation back and forth
Planned dates go out by email, customers reply days later or not at all, and the planner cannot see which jobs on the board are firm. Without a Planned versus Confirmed status, a crew can drive to a closed kitchen.
Run sheets that do not learn
A New Zealand commercial landscaping company with about 15 maintenance staff, growing to about 30, ran its crews from Excel run sheets. When a new site was signed, someone had to find the run it fit into by hand. A run sheet cannot tell you that a new job's address sits two streets from Tuesday's run.
Time per person per day
A project-based technical labour provider with 35-40 technicians on rotating project schedules estimated about an hour a day or more of scheduling per person, kept in an Outlook master calendar shared by 3 part-time dispatchers.
Jobs at the same site not visible
A US commercial electrical contractor doing 30-40 visits a day said it could have sent one technician to two open jobs at the same site at the same time, but the scheduler did not show the second job. The fix is a same-site check during planning, not after.
Options
Ways to do it
Real approaches, as their own documentation describes them in November 2026. Test each with a real week of your own jobs.
| Approach | How it plans the week | Watch for |
|---|---|---|
| Spreadsheet plus Google Maps | A planner sorts by due date, groups by area and checks each leg in Maps | Hours of planner time per week, no confirmation status, every change is manual |
| Jobber route optimization | Optimizes the order of a day's visits on a map; the master route optimizer for recurring work is based on Google Maps | The master route optimizer can only be run twice a day, and visits must be anytime visits to be routed |
| ServiceTitan Dispatch Pro | Assigns jobs using predicted job value, priority, technician performance and estimated drive time, with a maximum drive time setting | Built around daily dispatch of reactive jobs; relies on accurate home zones and job type durations |
| Enterprise optimizers (Dynamics 365 RSO, Salesforce Field Service) | Dynamics schedules a booking inside its Time From Promised and Time To Promised window; Salesforce uses scheduling policies made of work rules and weighted service objectives such as ASAP and Minimize Travel | Heavy setup and licensing; in Dynamics, travel time cannot be the first objective, and in Salesforce, ASAP can add travel |
| Build your own on a routing engine | Google OR-Tools solves vehicle routing with time windows; the Google Route Optimization API supports soft time windows | You own the data feed, the confirmation flow and every edge case |
| Fieldproxy | Jobs carry due-by windows and per-site durations set up as fields; route planning builds runs, and the Dispatch agent assigns by distance and skills | Set up to your rules, so you need to write down your day limit, crew sizes and confirm process first |
Vendor facts come from each vendor's help center or docs, linked in Sources. Features change; confirm in a demo with your own job list.
Worked example
A worked example: 14 jobs, 2 crews, one week
Say you clean commercial kitchen extract systems from one base in the north of England. You have 2 crews of 2 and a third person who joins whichever run has a large site. On Wednesday you plan next week. The list has 14 jobs: 6 are due by next Friday, 5 are due the week after, and 3 are new sites with no history yet. Your day limit is 9 hours including all driving, and crews stay in a hotel when a run is more than 2 hours from base.
Step one locks the 6 jobs due next week. Three are in one city about 2 hours from base, so they become Crew A's Tuesday and Wednesday with a hotel night. Tuesday: 2 hours out, a 3.5 hour clean (the site's last actual time), 25 minutes across town, a 2.5 hour clean, 15 minutes to the hotel. That is 8 hours 40 minutes, inside the limit. Wednesday: 20 minutes to the third site, 4 hours on site with the third person, then 2 hours home. 6 hours 20 minutes, so you pull one of the jobs due the week after, which sits 30 minutes off the route home, into Wednesday afternoon.
The 3 new sites have no actual duration, so you plan them at a deliberately high estimate (say 4 hours) and put them at the end of a day, where an overrun eats the drive home and not a customer's slot. After the visit, the real time is saved on the site record for next quarter.
Each customer then gets the planned date with a confirm link. By Friday morning all but two have confirmed. One asks to move from Wednesday to the following Monday. Only Crew A's Wednesday is replanned: the filler job moves up, and nothing else on the week changes. The other unconfirmed job stays amber on the board, and the office calls before the crew sets off.
If your crews are paid by the hour, count the driving the way the law in your country does. In the US, travel from job site to job site during the workday must be counted as hours worked. In the UK, workers are entitled to 11 hours rest between working days, which limits how late a long run can finish before an early start the next morning.
Buying checklist
What to check before you buy
Good signs
- A job holds an earliest date and a due-by date, and recurring work creates the next due-by from the interval.
- Durations come from each site's last actual visit, not one number per job type.
- The day limit counts drive out, between jobs and back to base or a hotel.
- Crews of 2 or 3 are planned as one unit, with skills and crew size checked per job.
- Planned and Confirmed are separate statuses, shown in different colours.
- Moving one job replans that run and leaves the rest of the week alone.
- You can import your current job list from a spreadsheet to test it on a real week.
Red flags
- The optimizer only reorders one technician's day and cannot choose which day a job goes on.
- Durations are a single default, so a 6 hour site and a 1 hour site plan the same.
- Drive time is straight-line distance, not road time.
- Overnight runs and hotel stops are not supported, so long runs plan as impossible days.
- Customer confirmation happens outside the system, by email, with no status on the job.
Fieldproxy
Setting it up in Fieldproxy
Fieldproxy is set up around how you plan today, so the setup starts from your current run sheet. Settings marked e.g. are examples.
Jobs with due-by windows
Each job carries an earliest date and a due-by date. Recurring maintenance and contracts create the next visit and its due-by from the site's interval (e.g. every 3 months for a heavy-use kitchen). Your current spreadsheet of jobs is imported, so nobody re-keys the list.
Durations that learn
The technician app records check-in and check-out with GPS on each visit. The actual time is saved on the site (e.g. a Last visit duration field) and used as the planned duration for the next visit.
Building the runs
Route planning groups the week's jobs by area and day within your day limit (e.g. 9 hours including drive). The Dispatch agent (/agents/dispatch-agent) assigns the right crew by distance, skills and inventory. In the Command Center (/agents/command-center) you can ask in plain English, for example plan next week's runs for the jobs due by Friday, and every change comes with a confirm card and Undo.
Customer confirmation
Each customer gets the planned date by customer link, text or email. The Calling agent (/agents/calling-agent) can make outbound confirmation calls, and the Text agent (/agents/text-agent) answers replies against the real job. Jobs show as Planned until confirmed (e.g. amber versus green on the board).
Watching the week
The Watcher agent (/agents/watcher-agent) flags any job close to its due-by date that is still unplanned or unconfirmed, and any day that runs over its limit after a change.
Price
One price per company with unlimited users, so planners, crews and the third person who floats between runs all have logins. See /pricing for the plans.
Regional notes
Regional differences that change the plan
United States
Under federal rules, travel from job site to job site during the workday counts as hours worked, so a day limit that ignores driving understates paid hours and overtime.
United Kingdom
Workers who work more than 6 hours a day are entitled to one uninterrupted 20 minute rest break, and to 11 hours rest between working days. Build the break into the day limit and check late finishes against the next start.
Australia and New Zealand
Whether travel between sites is paid depends on the award or employment agreement your crews work under. Check yours before you set the day limit.
How switching works
How switching to Fieldproxy works
We move your data over and set the system up to the way you already work. Fieldproxy replaces the old tool; it does not run alongside it.
Send us a real week
Share your current run sheet or job list with due dates, crew sizes and your base or bases. We use it as the test data.We set up your rules
Due-by windows, per-site durations, your day limit, overnight rules, crew skills and your Planned and Confirmed statuses.We plan the same week side by side
You compare the runs Fieldproxy builds with the ones your planner built, before anything goes to a crew.Crews and customers go live
Crews get the Android or iOS app with their runs, customers get confirm links, and the spreadsheet is retired.
FAQ
Questions people ask
- Can software plan weekly crew runs automatically from a spreadsheet of jobs with due-by dates?
- Yes, if the import keeps the due-by date, the site address and a duration for each job. The plan is only as good as those three fields, so clean them before the first run.
- Can the scheduler use the last job duration, including drive time, to fill an 8-hour day?
- It should. Store the last actual on-site time per site, let the routing engine add road drive time between stops, and set the day limit to include the drive out and back.
- Can it account for travel from each technician's home and overnight hotel stays?
- Look for a start and end point per crew per day. A run that ends at a hotel should start there the next morning, instead of planning a drive home and back.
- Can the calendar show planned but unconfirmed jobs differently from confirmed ones?
- Use two statuses, Planned and Confirmed, with different colours on the board. Crews should only see a job as firm once the customer has confirmed it.
- Does the scheduler flag when the drive time between two jobs is too short?
- A good one warns when a leg plus the previous job's duration does not fit the gap, and when a day goes over its limit after a change. ServiceTitan, for example, has a maximum drive time between jobs setting.
- How do I slot a new job into a run that is already planned?
- Check its due-by date first, then look for the run that already passes closest to its address with room left in the day. If no run has room before the due-by date, it starts a new run or bumps a filler job to next week.
- What if a customer moves their date after the week is planned?
- Replan only the run that job was on. Pull the next filler job from that area into the gap and leave every other run alone.
Sources
Competitor details on this page come from the vendors' own pages and documentation, checked as of November 2026. Plans and prices change, so check the vendor's current page before you decide.
- BESA: kitchen extract system cleaning (TR19 intervals): https://www.thebesa.com/besa-blogs/kitchen-extract-system-cleaning
- Google OR-Tools: vehicle routing problem with time windows: https://developers.google.com/optimization/routing/vrptw
- Google Route Optimization API: time windows: https://developers.google.com/maps/documentation/route-optimization/concepts/time-windows
- Jobber Help Center: how to route: https://help.getjobber.com/en/articles/how-to-route/
- ServiceTitan Help: plan your team's capacity: https://help.servicetitan.com/docs/plan-your-team-s-capacity
- ServiceTitan Help: Dispatch Pro overview: https://help.servicetitan.com/docs/dispatch-pro-overview.md
- Microsoft Learn: optimization goals in Resource Scheduling Optimization: https://learn.microsoft.com/en-us/dynamics365/field-service/rso-optimization-goal
- Salesforce Trailhead: examine scheduling policies: https://trailhead.salesforce.com/content/learn/modules/field-service-lightning-scheduling-basics/examine-scheduling-policies
- 29 CFR 785.38: travel that is all in the day's work: https://www.law.cornell.edu/cfr/text/29/785.38
- GOV.UK: rest breaks at work: https://www.gov.uk/rest-breaks-work
Related
Keep reading
- Kitchen exhaust hood cleaning software guide
- Commercial landscaping maintenance software guide
- Prove a technician was on site
- Moving from spreadsheets to field service software
- What is the best field service software for a 5-10 person HVAC team?
- Cheaper ServiceTitan alternatives for small plumbing and HVAC companies, without payment processor lock-in