TL;DR: A residential plumbing company in Dallas-Fort Worth had 22 techs covering a 60+ mile service area. Dispatchers routed jobs based on "who's available" rather than who's closest or best qualified. Techs wasted 90+ minutes daily in unnecessary driving. We built an agent that tracks real-time location, matches skills to job requirements, factors traffic, and recommends optimal assignments. Drive time dropped 28 minutes per tech per day. Job completion increased 18%. The senior tech called the owner to say he actually had time for lunch.
Passing Each Other on the Highway
Mike runs a residential plumbing company in the Dallas-Fort Worth metroplex. 34 employees. 22 field technicians. Service area spanning Tarrant, Dallas, Collin, and Denton counties. Over 60 miles across.
The dispatch situation was chaos that looked like order.
Two dispatchers, both experienced, both doing their best. Jobs came in. They'd check the board, see who was available or finishing up soon, and assign the next job.
Simple enough. Except it wasn't working.
A tech would finish a job in Plano and get dispatched to Fort Worth. Meanwhile, another tech finishing in Irving got sent to McKinney. They'd literally pass each other on the highway, each driving 45 minutes to a job the other one could have reached in 15.
"I spend more time driving than fixing pipes," one of the senior techs told Mike. That wasn't quite true mathematically. But it felt true. And when your best people feel like they're wasting their day in traffic, you've got a problem.
The Math Nobody Was Tracking
Mike had a vague sense that routing could be better. He didn't know how much better until we measured it.
90+ minutes per day in unnecessary drive time. Per tech. That's across the whole team, obviously some worse than others, but the average was brutal.
25% of dispatches were suboptimal. Not disasters—the job still got done—but a different tech could have gotten there faster.
$4,200 per month in excess fuel costs. Gas adds up when you're driving in circles.
15% fewer jobs completed than the team actually had capacity for. They weren't slow. They were stuck in traffic.
The dispatchers weren't incompetent. They were working with incomplete information. They could see who was available. They couldn't see where everyone was in real time. They couldn't calculate drive times accounting for current traffic. They couldn't remember which techs had which certifications.
For more on how to calculate what inefficiencies like this actually cost, we've built a framework.
The Skill Matching Problem
Here's what made this harder than simple distance optimization.
Not every tech could do every job.
Tankless water heaters? Only 5 techs trained on those. Send the wrong person and they'd have to call for backup or reschedule the customer.
Commercial jobs? Specific insurance requirements. Only certain techs qualified.
Gas line work? Separate certification. 8 techs had it, 14 didn't.
Water heater installations vs. drain cleaning vs. leak detection—different equipment needed, different skill sets.
The dispatchers knew most of this. They had a mental map of who could do what. But under pressure, with phones ringing and jobs stacking up, they'd sometimes send whoever was available and deal with the mismatch later.
"Later" usually meant an unhappy customer, a wasted trip, or a tech standing in someone's garage calling the office saying "I can't do this job."

What We Built
The scheduling agent has five stages.
Stage 1: Job Intake
New job enters the system. Agent captures: location, job type, urgency level, specific skill requirements (tankless? gas line? commercial?), equipment needed, customer history.
This happens automatically when the job is booked. No manual tagging required—the agent infers requirements from job type and notes.
Stage 2: Fleet Status
Real-time picture of every tech. GPS location (updated continuously). Current job status and estimated completion time. Skills and certifications on file. Equipment currently on their truck.
The agent knows that Tech 7 is finishing a water heater install in Frisco, has tankless certification, carries the right tools, and will be available in approximately 18 minutes.
Stage 3: Optimization Engine
This is where the math happens.
Calculates ETAs from every available tech to the new job location. Factors real-time traffic via Google Maps API. Matches required skills to tech certifications. Considers truck inventory.
Ranks all viable options by: time to arrival, skill match quality, current workload balance, and customer priority.
For a breakdown of what agents actually do versus regular automation, we've explained the difference here.
Stage 4: Recommendation
Presents the top 3 options to the dispatcher with reasoning.
"Option 1: Rodriguez (14 min ETA, tankless certified, light day). Option 2: Chen (18 min ETA, tankless certified, moderate day). Option 3: Williams (31 min ETA, tankless certified, but currently closest to afternoon cluster in Denton)."
One click to dispatch. Or the dispatcher can pick an alternative.
Stage 5: Execution
Assignment goes to the tech's mobile app. Provides turn-by-turn routing. Updates the customer with accurate ETA. Logs everything for later analysis.
The Human Checkpoint
Dispatchers don't lose control. They gain clarity.
Every recommendation comes with reasoning. The dispatcher can accept the top option, pick an alternative, or override entirely with their own choice.
When they override, the system asks why. Not to second-guess—to learn. If dispatchers consistently override for reasons the agent missed (like "Rodriguez doesn't do well with that customer"), that feedback improves future recommendations.
The agent handles the calculations. The dispatcher handles the judgment calls.
What Made This Hard
Real-time data integration was finicky. Getting GPS updates, job status changes, and new bookings to sync in near-real-time required careful API work. Delays of even a few minutes made recommendations stale.
Traffic patterns needed learning. Google Maps API provides good estimates, but Dallas traffic has quirks. The 635/75 interchange at 4 PM is worse than the API predicts. We built in adjustment factors based on historical actual vs. estimated drive times.
Dispatcher trust took time. The first two weeks, dispatchers checked every recommendation against their own judgment. They found the agent was right about 85% of the time. After that, they started trusting it. By week four, they were frustrated when they had to override because the system didn't know something it should have.

The Numbers
Before:
90+ minutes wasted drive time per tech per day
25% of dispatches suboptimal
$4,200/month in excess fuel
15% fewer jobs completed than capacity allowed
After:
28-minute improvement per tech per day
6% suboptimal dispatch rate
$3,100/month fuel savings
18% more jobs completed with same team
The call that made it real:
Mike's senior tech, a guy who'd been there 11 years and complained about everything, called him two weeks after launch.
"I don't know what you did. But I actually had time for lunch today."
That's what efficiency feels like when it's real. Not a dashboard metric. A person getting their lunch break back.
The Pattern
If you've got a field service team covering a wide area, you probably have dispatch inefficiency. The question is how much.
The symptoms:
Techs complain about drive time
Jobs take longer than they should (travel eating into work hours)
You've had skill mismatch problems (wrong tech for the job)
Dispatchers are doing mental math that doesn't scale
The core issue: Human dispatchers route based on "who's available." Systems can route based on "who should go."
Next Steps
Want to see 25 agent architectures across different industries? Download Unstuck—it includes this one plus blueprints for lead gen, invoicing, collections, and more.
Think dispatch might be your bottleneck? Book a Bottleneck Audit. 30 minutes, no pitch. We'll map your current routing and estimate how much efficiency you're leaving on the table.
by SP, CEO - Connect on LinkedIn
for the AdAI Ed. Team


