Book the estimate visit against travel time and territory, so the calendar fills in geographic order instead of scattering trucks across the map.
Bring your stack to a call and we will scope it against how your business actually runs.
Book a callA booking tool that shows open slots will cheerfully put a 9am estimate on the north edge of the service area and a 10am estimate forty minutes south. The slots were open, so the software said yes. The technician spends the morning driving, arrives late to the second appointment, and the third gets pushed. By mid-afternoon the office is making apology calls for a day that was broken before it started - and the booking tool will do exactly the same thing tomorrow.
The cost is not abstract. Windshield time is the single largest hidden expense in a home services business and it is almost never measured. A technician doing four estimates a day with scattered routing may spend more of the day driving than estimating, which means the business is paying wages and fuel to produce fewer priced jobs than the same person could produce with the same hours and better geography. Add the no-show rate - homeowners who booked a free estimate three weeks out and forgot, or who were never really going to be home - and a meaningful share of every week's capacity is spent on nothing.
There is a second failure underneath the first. The estimate visit gets booked before anyone has checked whether it needs to happen at all. A roof replacement needs eyes on site. A straight water heater swap often does not, if the homeowner can send three photos and the data plate. Businesses that book every inquiry into a truck visit are rationing their scarcest resource by whoever asked first rather than by whoever actually needs it. This build makes the calendar respect geography, makes the homeowner confirm they will be there, and filters out the visits that a photo could have replaced.
One pipeline, Estimate Visits. The stages are built around the two things that actually go wrong: the visit not being needed, and the homeowner not being there.
This is where the build earns its keep. Do not use one shared calendar.
BO runs the booking conversation and the confirmation chase. BO does not decide whether a visit is needed on complex work, and does not touch pricing.
One homeowner wanting a roof assessed, from inquiry to a priced job - and the route that stayed intact around them.
Eight workflows. The territory matcher must be built first - everything downstream reads the field it writes.
Trigger: opportunity created in Estimate Visits, or tag estimate-visit applied.
Conditions: requires job_ZIP code. If it is empty, BO asks for it before anything else runs.
Exit: territory written and the next workflow started, or escalation raised for an edge ZIP code.
Trigger: visit_required set to Undecided.
Conditions: exit if the homeowner has already asked explicitly for someone to come out.
Exit: photos sufficient and review booked, or path switched to a visit, or opt-out.
Trigger: opportunity reaches Territory Matched with visit_required set to either Yes value.
Conditions: only pull availability from the calendar matching territory. This is the rule the whole build rests on - never query a shared calendar here.
Exit: appointment booked, escalation raised, or opt-out.
Trigger: opportunity moves to Visit Booked.
Exit: access captured, or appointment canceled or rescheduled.
Trigger: appointment exists on a territory calendar.
Conditions: all sends respect quiet hours of 8am to 9pm local. Exit on cancellation, reschedule or opt-out.
Exit: confirmed, released, rescheduled, canceled or opt-out.
Trigger A: 7am daily, per estimator with appointments today.
Trigger B: estimator marks an appointment complete, or taps an On My Way action.
Exit: end of day, or no further appointments.
Trigger: inbound reply R, or any message matching reschedule, move, change, cannot make, postpone.
Exit: rebooked, escalated to a human, or canceled.
Trigger: Visit Outcome form submitted with visit_outcome of Customer not home or No access.
Exit: rebooked, canceled, or opt-out.
The day stops being a map with pins scattered across it. Because each territory calendar only opens on its own days, every booking taken on a Tuesday is already a South job, and the route is roughly right before anyone thinks about it. The 30-minute buffer after each slot is the travel allowance, so the calendar can no longer sell a window the business cannot physically reach.
Capacity that was going to no-shows comes back. The active re-confirmation turns a passive reminder into a yes or a released slot, and a released slot is offered to someone who is waiting instead of being driven to. Equally important, the no-show is now a stage with a count attached, so the business finds out that - for example - unconfirmed Friday afternoons are where its losses live, rather than carrying a vague sense that people are unreliable.
The remote assessment path changes the shape of the week. Jobs that only ever needed three photos and a data plate stop consuming a two-hour window plus travel, which frees the estimator for the work where being on site actually changes the price. And because access notes and decision-maker presence are captured before the visit, the estimator stops losing appointments to locked gates and to homeowners who cannot authorize anything.
Effort scales with the number of territories, the number of estimators, and whether an existing calendar system has to stay in play. Book a call at bookings.appbo.io to scope it against the real service area.
Every build on this page is something we configure, test and hand over with the SOPs your team needs to run it.
Book a call