ServiceTitan's Dispatch Pro already routes technicians by predicted job value, priority, and drive time. What it optimizes is, in ServiceTitan's own words, predicted job value of the assigned technician minus drive cost, equals total revenue. That is a revenue formula, not a margin formula. It does not know a technician is 20 minutes from triggering overtime, and it does not know that sending them to this call bumps a higher-margin install off tomorrow's schedule. An AI Routing agent reads the same dispatch board, adds labor cost, overtime exposure, and downstream schedule impact to the ranking, and shows the dispatcher the margin-aware pick next to the revenue-ranked one. The dispatcher still makes every call. The agent just makes the tradeoff visible before the click, not after the payroll run.
A dispatch board can look full and profitable all day and still bleed margin nobody notices until the biweekly payroll run shows more overtime than expected, or the fractional CFO's job-costing report shows a normally-strong install job came in thin because the lead technician was pulled for two emergency calls that week. The board did its job: every slot got filled, every call got answered. The board just was not built to ask whether filling that slot with that technician was the profitable choice.
This is not a knock on ServiceTitan's dispatch tooling, which is genuinely good at what it is built to do. It is a specific, provable gap in what the formula counts.
Why does a "good" dispatch day sometimes turn into a bad margin week?
The mechanism is the same in almost every shop that runs into this. A P1 no-heat or no-AC call comes in mid-afternoon. Two or three technicians could plausibly take it. The dispatch board, running on predicted revenue and drive time, correctly ranks the technician who will likely generate the highest ticket with the shortest drive as the top pick. The dispatcher assigns them. The call closes well. Revenue for the day looks right.
What the board did not weigh: that technician was 25 minutes from their overtime threshold, so the call added a time-and-a-half premium to labor cost that never shows up on the dispatch screen. Or that technician had a $4,200 install booked as the first job tomorrow morning that now gets pushed, or handed to a less experienced tech, because today ran long. Neither of those costs is visible on the board in the moment. Both of them are visible three weeks later in a P&L line the owner cannot trace back to a specific Tuesday.
Field service operations that run on unoptimized routing typically see drive time consume roughly 25 to 30 percent of a technician's workday, and a 15 to 20 percent reduction in that drive time can add one to two extra billable jobs per technician per day, according to MSI Data's 2026 Field Service Optimization guide. Drive time is real money. It is also only one input in the decision, and it is the one input every dispatch tool already optimizes for. Margin and overtime exposure are the inputs nobody's board is tracking in real time.
Does ServiceTitan's Dispatch Pro already solve this?
It solves a meaningfully related but different problem. According to ServiceTitan's own Dispatch Pro documentation, the algorithm applies a sequence of hard constraints, Dispatch Pro-enabled technicians, correct zone or business unit, matching job-type skills, availability within the arrival window, maximum drive-time range, and technician performance ranking, and among the technicians who pass those filters, it computes: predicted job value of assigned technician minus drive cost equals total revenue. It then simulates hundreds of scenarios across the day's board to find the setup predicted to generate the most revenue, learning from each technician's total sales, average ticket, sold memberships, and lead-generation rate over the trailing 30 days and 12 months.
That is a sophisticated, genuinely useful algorithm, and on ServiceTitan's own feature page it reports real results: customers using Dispatch Pro see drive time decrease by 6%, dispatcher efficiency roughly double, and average ticket size increase by 14%, alongside 1.5x revenue growth over a six-month measurement window, per ServiceTitan's Dispatch Pro feature page. None of that is in question. What is missing from the formula, by ServiceTitan's own description of it, is labor cost, overtime exposure, and the margin on the job the technician gets pulled away from.
What is the real difference between routing for revenue and routing for margin?
Revenue is the number on the invoice. Margin is what is left after every real cost of producing that invoice, including a cost most dispatch boards never see in the moment: the labor premium of the specific technician doing the specific job at that specific hour, and the schedule cost of what else that technician was supposed to be doing.
Two technicians can look identical on a revenue-ranked board and represent very different margin outcomes. A technician mid-shift with no overtime exposure and an open slot tomorrow costs the shop its normal labor rate. A technician close to their weekly overtime threshold, or already booked on a higher-margin job the next morning, costs more than the board shows, even if their predicted ticket value is marginally higher. ServiceTitan's own field service metrics guide puts a strong technician utilization benchmark at 60 to 80 percent of billable hours; every unplanned overtime hour or bumped install pulls a shop away from that benchmark in a way a revenue-only dispatch decision cannot see coming.
How does an AI Routing agent add margin and priority, without replacing the dispatch board?
The Routing agent in Top Builder AI does not compete with Dispatch Pro or replace ServiceTitan's dispatch board. It reads the same underlying data, the open board, technician shift and hours-worked status, job priority tier, estimated job value and drive time, plus two inputs that are not part of ServiceTitan's own formula: real-time overtime exposure per technician, and the margin of each technician's already-scheduled upcoming jobs.
How does the agent decide who goes where, in what order?
Priority. A P1 no-heat or no-AC emergency is a floor, not a tradeable input. It gets filled regardless of margin impact; the reputational and safety cost of an unanswered emergency outranks any margin calculation. Margin scoring applies within a priority tier, among the technicians who can legitimately fill a given P1, P2, or P3 slot in the required window.
Drive time. Kept exactly as Dispatch Pro already computes it, a real cost subtracted from predicted value.
Overtime exposure. A technician within roughly 30 minutes of a weekly or daily overtime threshold carries a real time-and-a-half labor premium on the assignment. The agent flags this explicitly rather than letting it hide inside a single revenue score.
Downstream schedule impact. If assigning this technician means bumping, delaying, or reassigning a higher-margin job already on their board, that cost is shown, not buried. A $6,000 install at strong margin tomorrow morning is a real number to weigh against a same-day emergency fill.
Worked example: a 12-tech HVAC and plumbing shop, one afternoon
All figures below are illustrative, built to demonstrate the tradeoff the formula misses. They are not a client result.
| Predicted job value | $420 |
| Drive cost | −$9 |
| Dispatch Pro revenue score | $411 (top rank) |
| Hours into shift | 7.5 of 8 (overtime in ~30 min) |
| Tomorrow 8am job on their board | $2,100 install, 52% margin |
| Predicted job value | $360 |
| Drive cost | −$14 |
| Dispatch Pro revenue score | $346 (second rank) |
| Hours into shift | 3.5 of 8 (no overtime exposure) |
| Next job on their board | $180 filter change, easily moved to tomorrow |
Comparison: manual dispatch vs. ServiceTitan Dispatch Pro vs. Top Builder AI Routing agent
| Capability | Manual | ServiceTitan Dispatch Pro | Top Builder AI Routing agent |
|---|---|---|---|
| Priority-tier aware (P1/P2/P3) | At dispatcher's judgment | Yes, via constraints | Yes, as a non-negotiable floor |
| Drive-time optimized | No | Yes — predicted value minus drive cost | Inherits the same drive-cost input |
| Overtime exposure factored in | At dispatcher's memory | Not in the documented formula | Flagged per technician, per assignment |
| Downstream schedule / margin impact | No | Not in the documented formula | Compares against the technician's next scheduled job margin |
| Replaces the dispatcher's final call | — | No — dispatcher assigns | No — proposes only, dispatcher assigns |
| Works alongside existing ServiceTitan board | — | — | Reads the same board; no separate system |
The short version: Dispatch Pro is a genuine upgrade over a manual board for revenue and drive time, ServiceTitan's own numbers on that are solid. What it does not claim to do, by its own documented formula, is weigh labor cost or downstream margin. That is the specific layer the Routing agent adds on top, never replacing the dispatcher's final decision.
How does dispatch and routing fit the rest of the back office?
Routing is one of eight agents in Top Builder AI's back-office stack. The overtime data the Routing agent surfaces at 2pm on a Tuesday is the same overtime data the Workforce agent uses to catch payroll cost before the check runs, and the same margin data the Financial agent uses in the job-costing and cash-position reports. A dispatch decision made in the moment is not supposed to be invisible until the biweekly payroll run or the month-end close, it is supposed to be one line in a system that already knows what a technician-hour and a job-margin point are worth.
The full back-office overview covers all eight agents and how Routing, Workforce, Financial, Inventory, Booking, Documents, Pricebook, and Collections work together on the same live ServiceTitan and QuickBooks data.
What will the agent never do without my approval?
- No automatic assignment. The agent proposes a recommendation with reasoning attached; the dispatcher assigns every job.
- No overriding a manual placement. If a dispatcher assigns a technician for a reason the agent cannot see, a same-day complaint, a customer relationship, a personal circumstance, that decision stands.
- No fabricated figures. Every predicted value, drive cost, overtime premium, and margin number comes from deterministic, tested code reading live ServiceTitan and payroll data. The language model explains the tradeoff; it does not calculate or invent one.
- Priority never gets traded for margin. A P1 emergency is filled regardless of what the margin math says.
See what your dispatch board is optimizing for
If you have never checked whether your highest-revenue dispatch picks are also your highest-margin ones, that gap is exactly what the Routing agent surfaces first. Book a 30-minute fit call and we will walk through a real week of your board.
Book a fit call →