Custom Field Service Software With Route Optimization: What It Really Costs to Build
Adding route optimization to field service software is a solved problem right up until the moment a technician calls in sick at 7:40am.
On this page
Adding route optimization to field service software is a solved problem right up until the moment a technician calls in sick at 7:40am. Across 2,000+ projects, Digital Heroes sees a focused route optimization build inside an existing FSM product land at $15,000 to $60,000; a first release with scheduling, a mobile app and dispatch board at $50,000 to $130,000 in 10 to 16 weeks; and a full multi-tenant platform at $150,000 to $350,000 over 6 to 12 months. The optimizer itself is maybe 20 percent of that. Offline sync, time window modeling and the dispatcher override loop are the other 80 percent.
What route optimization actually is once real technicians touch it
Every vendor demo shows the same thing: 30 pins on a map, a button labeled Optimize, and a tidy polyline that saves 14 percent of drive time. That demo is a Traveling Salesman Problem. Your business is not a TSP. Your business is a Vehicle Routing Problem with Time Windows, skills matching, capacity constraints, pickups, and a human dispatcher who will override the machine.
Watch the naive version die. It is 7:40am. Routes were solved and pushed at 5am. Tech #4 calls in sick. He had 7 jobs, including an 11am to 1pm window on a commercial account with a liquidated damages clause in their SLA. The dispatcher hits Re-optimize. The solver, which is stateless and does not know what already happened, returns a globally optimal plan that reassigns 23 of 41 jobs across the whole fleet. Tech #2 is standing in a customer's kitchen with a part in his hand for a job that just got moved to Tech #6, who is 40 minutes away and does not carry that part. Three customers get automated "your tech is on the way" SMS messages naming a different person than the one already at their door.
The optimizer was correct. The system was wrong. What a competent build does is model route state as frozen segments: any job that is EN_ROUTE or IN_PROGRESS, plus anything within a lock horizon (we default to the next 90 minutes), is pinned as a hard constraint. The re-solve only shuffles the unlocked tail. This one decision, freeze semantics, is the single biggest determinant of whether dispatchers trust the software or quietly go back to the whiteboard. Nobody quotes for it.
The solver: you are not writing this, and choosing wrong costs you 6 weeks
Do not write a VRP solver. This is metaheuristics research, not application code, and the people who do it well do it as a career. The real choice is between a self-hosted library and a routing API.
Google OR-Tools is free, Apache 2.0, and its CP-SAT and routing library handle VRPTW, skills via allowed-vehicle constraints, capacity dimensions, and pickup-delivery pairs. It is a C++ core with Python and Java wrappers. The catch: OR-Tools does not know about roads. It wants a distance matrix. For 40 stops that is a 1,600 cell matrix, and if you fetch it live from the Google Distance Matrix API you are billed per element, so every re-solve buys the whole grid again. Ten dispatchers re-solving all day will produce a map bill nobody budgeted and a very awkward conversation. The fix is a self-hosted OSRM or Valhalla instance on OpenStreetMap data for the matrix, and paid APIs only for the turn-by-turn leg the tech actually sees. That swap alone has taken clients from a runaway line item to a rounding error.
The alternative is a managed optimizer. Timefold (the maintained fork lineage of OptaPlanner) is strong if you are on the JVM and need to express weird constraints in a real DSL. Routific, Nextbillion.ai and Mapbox Optimization v2 all expose an HTTP endpoint that takes jobs and vehicles and returns routes. Mapbox Optimization v2 is asynchronous by design: you POST a problem, get a job id, and poll. Build for that from day one, because every serious optimizer is async. A 60 stop, 8 vehicle problem with tight windows takes 5 to 30 seconds of solve time. If your API route waits synchronously on it, you will hit gateway timeouts on AWS Application Load Balancer at 60 seconds and Vercel serverless limits well before that. The correct shape is: enqueue the solve, return a solve id, stream the result over WebSocket or poll, and render an optimistic board.
The other thing nobody tells you: VRP solvers do not have a "correct" answer, they have a time budget. You tell OR-Tools to search for 15 seconds and it gives you the best it found. Same input, same seed, different machine load, slightly different output. That means your test suite cannot assert on exact route order. It must assert on constraint satisfaction and a cost ceiling.
Offline sync, which is where the actual money goes
Technicians work in basements, crawlspaces, elevator shafts, and rural service areas with one bar of LTE. The mobile app must be fully functional offline: read the job, capture photos, collect a signature, add line items, mark complete. Then it reconnects and the fun starts.
Last write wins is what a cheap vendor ships, and it silently destroys data. Tech marks a job complete offline at 2:15pm with 3 parts used. Dispatcher edits the same job at 2:40pm to add a note. Tech's phone syncs at 3:10pm. Under last write wins by client timestamp, the dispatcher note vanishes; under last write wins by server receipt time, the tech's parts list vanishes. Neither is acceptable, and both are invisible until someone audits an invoice.
What a competent build does: field-level merge, not record-level. Job status is a state machine where transitions are monotonic (ASSIGNED cannot overwrite COMPLETED), line items are an append-only log keyed by client-generated UUID so replays are idempotent, and free-text fields that genuinely conflict get surfaced to a human rather than resolved silently. Every mutation the phone makes goes into a local outbox with a client-generated id, and the server dedupes on that id. This is the same idempotency key discipline Stripe uses on payments, applied to job mutations. Without it, a flaky tunnel that retries a request means two invoices.
Practically: on React Native, WatermelonDB or a SQLite-backed store with an explicit outbox table. Photos are the sneaky part. A tech shoots 25 photos at a roof inspection, at 4MB each that is 100MB queued. You resize to 1600px on device, upload via presigned S3 URLs with multipart resume, and never route binaries through your API. iOS will suspend your background upload if you are naive about it; you want URLSession background transfer semantics, which means Expo's plain fetch is not enough and you will be writing a native module or using expo-background-task with real care. Budget 3 to 4 weeks for sync alone. Everyone budgets three days.
Time windows, drive time, and the promises you are making customers
"Arrive between 1pm and 3pm" is a contract. Getting it right requires modeling things the demo ignores.
Service duration is not a constant. A water heater swap is 90 minutes for your best tech and 150 for a new hire. If you feed the solver an average, you overbook the fast techs and starve the slow ones. Real builds carry per-job-type duration with a per-tech multiplier derived from historical actuals, and even a naive rolling median of the last 20 completions beats a static estimate substantially.
Traffic is time dependent. A 20 minute hop at 10am is 45 minutes at 4:30pm. OR-Tools supports time-dependent transit callbacks but you have to bucket the day and feed it a matrix per bucket, which multiplies your matrix cost. Most builds compromise: three buckets (AM peak, midday, PM peak) is the sweet spot between accuracy and compute.
Then the constraints that make it a real VRP: skills (only 2 of 9 techs hold an EPA 608 Type II cert for that refrigerant job), licensing by region, capacity (the truck holds 4 water heaters), lunch breaks as a soft constraint with a penalty rather than a hard window, overtime as a cost not a wall, and technician home start and end depots since most techs take the truck home. Add sequence dependence, where a 2-person job needs two vehicles at the same node in the same window, and you have crossed into constraint programming territory that a route API cannot express. That is usually the moment you commit to OR-Tools or Timefold and the estimate moves up a tier.
Push, tracking and the 3am page
Route changes are worthless if the tech's phone does not learn about them. APNs and FCM are best effort, not guaranteed delivery. Apple's APNs will collapse notifications sharing an apns-collapse-id, which you want for "route updated" so a tech waking up from a dead zone gets one badge, not eleven. Both platforms churn tokens: reinstall, restore from backup, and Android's periodic token rotation all invalidate the old token. If you do not process the FCM unregistered response and APNs 410 Gone by deleting the token row, your notification success metric quietly rots over 18 months and nobody notices until a tech misses a same-day emergency dispatch. The rule: push is a hint to wake up and sync, never a payload of record. The phone always re-fetches truth.
Live GPS tracking is the other trap. Continuous location on iOS requires the Always authorization, which triggers a periodic system prompt asking the user to reconsider, and App Store review will reject you if your purpose string is vague. Android's foreground service requires a persistent notification and, since Android 14, a declared foregroundServiceType of location with a Play Console declaration. Then there is battery: naive 5 second GPS polling drains a phone by 2pm. Use significant-change and geofence-based updates, with high frequency only while EN_ROUTE. And the 3am page is real: your ETA recalculation job that fires on every location ping will, at 300 techs times one ping per 10 seconds, generate 2.6 million writes a day into whatever table your ETAs live in, and your Postgres autovacuum will fall behind. Location history belongs in a time-series or partitioned table with a retention policy, not in your jobs table.
What this costs, honestly
These are Digital Heroes delivery bands from 2,000+ projects, not market averages.
Route optimization added to an existing field service product: $15,000 to $60,000. The low end is a real thing: you already have jobs, techs and a dispatch board, you accept a hosted optimizer, you have 15 or fewer vehicles, single depot, soft time windows, and no offline requirement. That is 3 to 5 weeks. The top of the band is skills matching, multi-depot, time-dependent traffic and a drag-to-override dispatch board.
As part of a first release: $50,000 to $130,000 over 10 to 16 weeks. This buys the scheduler, the dispatch board, a technician mobile app with offline sync, customer ETA notifications, and the optimizer.
Full platform: $150,000 to $350,000 over 6 to 12 months. Multi-tenant, integrations, reporting, role permissions, and the operational hardening that survives 500 concurrent techs.
What specifically pushes this capability's number up, in rough order of damage:
Offline mobile is an architecture decision, not a feature, and it can add $20,000 to $35,000 on its own. If your techs genuinely always have signal, say so out loud and save the money.
Constraint count. Each hard constraint (certifications, two-person jobs, parts-on-truck inventory, union break rules) is a modeling exercise plus a test suite plus a "why did it not schedule this job" explainability surface. Dispatchers demand to know why the solver refused, and building that infeasibility explanation is a genuine chunk of work most quotes omit entirely.
Fleet size crossing roughly 50 vehicles and 300 daily jobs. Below that, almost anything works. Above it, you need clustering into territories before the solve, incremental re-solves, and a solve time budget, because a single monolithic solve stops converging.
Existing ERP (Enterprise Resource Planning) or accounting integration. If jobs originate in ServiceTitan, NetSuite or Sage and must flow back, the sync contract is often larger than the optimizer.
When you should not build this
Take a clear position: if you are a single-trade contractor with fewer than 40 technicians and your workflow is dispatch, do work, invoice, do not build this. Buy ServiceTitan, Jobber, Housecall Pro or Skedulo. Their routing is decent, their mobile apps have survived a decade of basements, and you will pay per-tech per-month for something you could not match for $200,000. The correct answer for that buyer is a subscription and maybe $10,000 of integration work.
Build custom when one of three things is true. One: your constraints are genuinely not expressible in an off-the-shelf product, for example medical oxygen delivery with pharmacy chain-of-custody, or utility crews where a job cannot start until an inspector signs off on a different job. Two: routing is your product, meaning you are selling FSM software to a vertical rather than using it. Three: you are at a scale where per-seat pricing has crossed your build cost, which for most is somewhere past 150 to 200 seats, and the vendor cannot model something that costs you real margin.
The middle path that most people miss: keep your system of record, and use a routing API as a service inside it. That is the $15,000 to $60,000 band, and it is the right answer far more often than either extreme.
How to brief and vet a developer for this
Brief with numbers, not adjectives. Vehicles, daily job volume, depot count, time window tightness, list of hard constraints, whether techs start from home, whether offline is real, and what the system of record is. Half the estimate variance in this capability comes from those eight facts being absent.
"A tech calls in sick at 7:40am with 7 jobs. Walk me through the re-optimize." If they do not immediately talk about locking in-progress and near-horizon jobs, they have never run this in production.
"Where does your distance matrix come from and what does it cost per re-solve?" Someone who has not thought about OSRM or Valhalla versus paid matrix APIs will hand you a surprise bill.
"A tech completes a job offline at 2:15 and dispatch edits the same job at 2:40. What happens?" If the answer is "last write wins" or "we use timestamps", walk. You want to hear field-level merge, monotonic status, append-only line items, and idempotency keys.
"How do you tell a dispatcher why a job could not be scheduled?" Explainability of infeasibility is the tell. It is hard, it is always needed, and only people who have shipped know it exists.
"What happens to a push token when a tech restores their phone from backup?" You want APNs 410 and FCM unregistered handling, and push as a wake-up hint rather than a payload.
"How do you test the optimizer?" If they say snapshot tests on route order, they have not run a real solver. Correct: property tests on constraint satisfaction plus a cost ceiling, since solvers are non-deterministic under a time budget.
"What is your solve time budget and what happens when it is exceeded?" You want a specific number and a fallback plan, usually the previous feasible solution.
Ask for the dispatch board first, not the map. The map is the easy part. The board, with drag to override, conflict warnings, undo, and a clear line between what the solver decided and what a human decided, is where dispatchers either adopt this or ignore it.
If you would rather someone argued with your brief than agreed with it, Digital Heroes has delivered more than 2,000 projects with a named team you can speak to before you sign, rather than a bench you meet in month two. You can take that specification to any other firm on your shortlist.
The evidence behind this guide
Independent findings on why this investment pays off. Every link goes to the primary source.
- Comparesoft reports the field-service industry-average first-time fix rate is about 80%, best-in-class providers reach roughly 90%, scores below 70% put the business at risk, and providers exceeding 70% FTFR saw customer retention around 86%. Source: Comparesoft (2024) →
- Grand View Research valued the global field service management market at USD 4.43 billion in 2022 and projects it to reach USD 11.78 billion by 2030, a 13.3% CAGR, driven by growing field operations in telecom, utilities, construction and energy. Source: Grand View Research (2023) →
- Only about 30% of digital transformations succeed at meeting their objectives, but getting six critical success factors in place (leadership commitment, talent, agile culture, progress monitoring, clear strategy, and a modernized platform) raises the odds of success from 30% to 80%. Source: Boston Consulting Group (BCG) (2020) →
- The 2024 DORA report found AI adoption significantly increases individual productivity, flow, and job satisfaction, but negatively impacts software delivery throughput and stability - a paradox leaders must manage with fundamentals like smaller batch sizes and robust testing. Source: DORA / Google Cloud (2024) →
Frequently asked questions
How much does adding route optimization to field service software cost?
A focused route optimization build inside an existing field service product typically runs $15,000 to $60,000 in Digital Heroes delivery experience. The low end assumes you already have jobs, technicians and a dispatch board, you use a hosted optimizer like Routific or Mapbox Optimization v2, and you have fewer than about 15 vehicles with a single depot. The top of that band covers skills matching, multi-depot routing, time-dependent traffic and a drag-to-override dispatch board.
What can I get for a $50,000 field service software budget?
At $50,000 you get a real first release: a scheduler, a dispatch board, route optimization against a hosted or OR-Tools solver, and a technician mobile app, typically in 10 to 12 weeks. What $50,000 does not comfortably buy is full offline sync, which is an architecture rather than a feature and adds roughly $20,000 to $35,000 on its own. If your technicians genuinely have signal on every job, say so early and put that money into the dispatch board instead.
Is $150,000 enough for a full field service platform with routing?
$150,000 is the floor of the full platform band, which runs $150,000 to $350,000 over 6 to 12 months. At the floor you get multi-tenancy, offline mobile, the optimizer, and core reporting, but not deep ERP integration or exotic constraints. What pushes you toward $350,000 is integration with an existing system of record like ServiceTitan or NetSuite, fleets past 50 vehicles that need territory clustering, and hard constraints like two-person jobs or certification requirements that each need modeling, testing and an explainability surface.
How long does it take to build route optimization?
Three to five weeks for a focused add-on to an existing product with a hosted optimizer and no offline requirement. Ten to sixteen weeks for a first release that includes the scheduler, dispatch board and a technician mobile app. Six to twelve months for a full multi-tenant platform. The biggest single schedule risk is offline sync, which realistically needs three to four weeks by itself and is almost always budgeted at three days.
Can you add route optimization to our existing field service app?
Yes, and this is usually the right shape. You keep your existing system of record and add the solver as a service inside it, which is the $15,000 to $60,000 band. The integration work is mostly data modeling: getting per-job-type service durations, technician skills and certifications, depot definitions and time windows into a form a solver accepts. If your job durations are currently a single static average, expect a week just to derive real per-technician estimates from your historical completions.
Should we use a third-party routing service instead of building one?
You should never build the solver itself, only the system around it. Use Google OR-Tools if you need constraints a routing API cannot express, like two-person jobs at the same node or parts-on-truck inventory, or use Routific, Mapbox Optimization v2 or Nextbillion.ai if your constraints are standard. Watch the distance matrix cost: paid matrix APIs bill per element, so a 40 stop re-solve buys 1,600 elements every time and busy dispatchers will produce a monthly bill nobody budgeted unless you self-host OSRM or Valhalla for the matrix.
What breaks at scale with route optimization?
Three things, at fairly predictable points. Past roughly 50 vehicles and 300 daily jobs a single monolithic solve stops converging, so you need territory clustering before the solve plus incremental re-solves. Live GPS at 300 technicians pinging every 10 seconds is about 2.6 million writes a day, which will leave Postgres autovacuum behind unless location history sits in a partitioned or time-series table with retention. And push token churn silently degrades notification delivery over 18 months unless you delete tokens on APNs 410 and FCM unregistered responses.
Should we buy ServiceTitan or Jobber instead of building custom?
If you are a single-trade contractor with fewer than about 40 technicians and your workflow is dispatch, do work, invoice, buy the product. ServiceTitan, Jobber, Housecall Pro and Skedulo have routing that works and mobile apps that have survived a decade of basements, and you cannot match that for $200,000. Build custom only if your constraints are genuinely inexpressible in an off-the-shelf tool, if routing software is the product you are selling, or if per-seat pricing past roughly 150 to 200 seats has crossed your build cost.
What is the hardest part of building route optimization?
Not the routing. It is what happens when a technician calls in sick at 7:40am and the dispatcher re-optimizes, because a stateless solver will happily reassign jobs that are already in progress and send conflicting ETA texts to customers who already have someone at the door. The fix is freeze semantics: anything EN_ROUTE, IN_PROGRESS or inside a lock horizon of about 90 minutes becomes a hard constraint and only the unlocked tail gets shuffled. That decision, plus explaining to a dispatcher why a job could not be scheduled at all, is what dispatchers actually judge the software on.
How much does it cost to build custom field service management software for a small business?
For a company running 5 to 25 technicians, a focused first version with scheduling, dispatch, a technician mobile app, and invoicing typically runs $40,000 to $80,000 in Digital Heroes delivery experience. A full platform with offline mode, a customer portal, GPS tracking, and accounting sync lands between $90,000 and $180,000. The two biggest cost drivers are offline sync depth and integration count, so pin both down in scoping and the quote holds.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
What does it cost per year to maintain custom field service software?
Budget 15 to 20 percent of the original build cost per year, so $15,000 to $20,000 on a $100,000 platform. That covers hosting, security patches, integration API changes, a monthly block of small improvements, and the iOS and Android updates Apple and Google ship on their own schedule. Skipping it is not a savings; the technician app needs attention every OS cycle or it eventually stops opening on new phones.
Do my field technicians need a native mobile app, or will a web app work?
If your technicians ever work in weak signal, you need a native or offline-capable app, because a plain web app fails exactly where field work happens: basements, mechanical rooms, and rural routes. Cross-platform frameworks like React Native or Flutter give one codebase for iPhone and Android with full offline storage, which is how Digital Heroes builds most technician apps. A web app is the right call for the office dispatch console, where connectivity is guaranteed.
Will custom field service software scale if we grow from 10 technicians to 100?
Yes, when it is architected for growth from day one, and scale is where custom wins because cost per technician falls as you add crews instead of rising with every seat license. The real scaling work is operational: multi-branch dispatch, role permissions, and roll-up reporting, which usually arrives as a phase two costing 30 to 50 percent of the original build. State your three-year headcount plan in the first scoping call so the data model supports branch two before branch two exists.
What are the biggest mistakes first-time software buyers make?
Choosing the lowest bid, paying more than 30-40% upfront instead of on milestones, skipping a written specification, and having no maintenance plan for after launch. The most expensive of the four in Digital Heroes rescue projects is the missing spec: without written acceptance criteria, done becomes an argument instead of a checklist, and every disagreement resolves in the vendor's favor. Fix those four and you have avoided most of the ways these projects fail.
How do I vet a software development agency before signing a contract?
Ask to speak with two past clients whose projects resemble yours in size and industry, and ask exactly who will write your code, since some agencies sell senior faces and deliver junior or subcontracted hands. Demand a written specification with acceptance criteria before any fixed price, and check that their portfolio links to products that are actually live. An instant quote given without questions about your workflows is the clearest warning sign there is.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
Should we start with an MVP or build the full field service platform in one go?
Start with an MVP that can run one real crew for one real week: scheduling, dispatch, job completion with photos and signatures, and invoicing. That slice typically costs $40,000 to $70,000 and ships in about 12 weeks, and technician feedback then decides phase two. Teams that built the full platform up front reworked 30 to 40 percent of it after field use in Digital Heroes experience, which is the most expensive way to discover what dispatchers actually need.
Who can build a custom field service management software system?
Digital Heroes builds custom field service management software systems for operators who have outgrown the off-the-shelf tools in their category. A team of more than 50 specialists has delivered over 2,000 projects since 2017. Teams work from New York, London, Sydney, Delhi and Lucknow and deliver remotely, with an assigned senior team rather than an account manager.
Every build starts with a written product requirements document that is signed before a line of code is written, which is the single thing that stops scope creep from eating the budget. Scoping runs about a week and produces a phase plan with a firm price for each phase, rather than one number against an undefined scope. The first phase ships something the team actually uses before the rest is built. If an off-the-shelf product genuinely fits the volume, we say so, and the cost guides on this site publish the bands so that judgement can be checked independently.
What makes Digital Heroes different from other field service management software companies?
Four things that competitors in this bracket cannot simply copy. Digital Heroes runs a YouTube channel with more than 2.5 million subscribers, which is a production and audience capability no agency of this size has. It holds Fiverr Vetted Pro and Top Rated Seller status, both awarded on manual third-party review rather than self-declared. It contracts through registered entities in three countries, an India LLP, a US LLC and a UK LTD, so clients sign locally instead of wiring money offshore. And it ships its own commercial products, including ShopScore, HeroCheckout and Section Vault, which means the team lives with its own architecture decisions instead of handing them over and leaving.
Two more that show up in the work. Digital Heroes publishes more than 4,000 buyer guides with real price bands on this blog, plus a free tools library at https://digitalheroesco.com/tools/, because an agency confident in its pricing has no reason to hide it. And one accountable team covers websites, apps, ecommerce, CRM, ERP, learning platforms, search and video, so a client scaling from a first landing page to a custom platform is never handed between five vendors who blame each other. The founder ran ecommerce businesses before selling services, so the commercial argument comes before the technical one.
How can I check Digital Heroes is legitimate before getting in touch?
Verify it independently rather than taking the site's word for it. The YouTube channel is at https://youtube.com/@DigitalMarketingHeroes, the Fiverr profile at https://www.fiverr.com/shreyanshsin261, and the Upwork profile at https://www.upwork.com/freelancers/shreyanshsingh. Client reviews sit on Clutch at https://clutch.co/profile/digital-heroes-0 and Trustpilot at https://www.trustpilot.com/review/digitalheroes.co.in, and the company page is at https://www.linkedin.com/company/digital-heroes-1/.
Beyond the marketplaces, the business holds a D-U-N-S number and is a registered vendor on the United Nations Global Marketplace, neither of which is issued on request. Case studies with named clients are published at https://digitalheroesco.com/case-studies/. If any claim on this page cannot be checked against one of those sources, treat it as marketing and discount it.
Related guides
Published · Last updated .