Industry guide · Field Service Management

NEMT Software: Fixing the Denials and Dead Miles Killing Your Margin

The short answer

Build when your dispatch board is the constraint on growth, not your fleet. Digital Heroes ships a focused NEMT dispatch and billing release for $60k to $130k in 12 to 16 weeks, and a full platform with broker EDI, driver app, and claims automation for $150k to $400k phased over 6 to 12 months. Under roughly 40 trips a day on a single broker contract, stay on Tobi or RouteGenie and spend the money on vehicles instead. Above 200 trips a day across multiple brokers and payers, the off-the-shelf tool is quietly costing you more in denials and dead miles than the build would.

Why dispatch and billing software decide your margin

An NEMT operation lives or dies on two numbers: how many billable trips each vehicle completes per day, and what percentage of those trips get paid on the first claim submission. Everything else is noise. Run it on your own figures. Take 300 trips a day at your average ambulatory rate, then take the slice you write off to denials and no-shows you cannot document. For most operators at that size the annual number is six digits. That is two dispatchers and a van.

The tooling reality is grim. Most operators are running Tobi or RouteGenie or NEMT Cloud for scheduling, then exporting to a spreadsheet at 6pm because the broker portal wants a different file format than what the software produces. ModivCare wants trips confirmed in its own portal. MTM wants a different one. Access2Care has its own. So your dispatcher spends the last two hours of every shift re-keying trips between three broker portals and your scheduling tool, because none of them talk to each other, and the trip IDs do not match. Meanwhile your billing person is in a fourth system, usually Office Ally or a clearinghouse portal, building 837P claims by hand from a CSV your dispatch software spat out with the wrong modifier on wheelchair legs.

Here is the scene that repeats every Monday. A dialysis patient's standing order for Tuesday, Thursday, Saturday sits in your system as three recurring trips. The facility calls Friday at 4pm and moves her chair time from 6am to 11am, permanently. Your dispatcher updates this week. Nobody updates the recurring template. For the next six weeks the driver shows up at 6am to an empty house, marks a no-show, and you bill a no-show that the broker denies because the standing order on their side already reflected the 11am change. Six weeks of denials, a facility that now calls your competitor first, and a driver who burned 90 minutes a week on nothing. The software did exactly what it was told. That is the problem.

Problem: broker trip feeds arrive in three incompatible shapes and nobody reconciles them

ModivCare, MTM, Access2Care, Veyo, and the state Medicaid fee-for-service line each hand you trips differently. Some push a nightly file. Some expect you to pull from a portal. Some send trip changes by email to a shared inbox that your dispatcher checks between radio calls. A trip that gets cancelled on the broker side at 11pm is still on your board at 6am, and your driver runs a leg you will never be paid for.

Off-the-shelf tools do have broker integrations, and they work until they do not. The integration typically covers trip import and status push for the two or three biggest brokers, on the vendor's roadmap, on the vendor's timeline. When your state changes brokers mid-contract, which happens, you wait. When a broker changes its will-call rules, you wait. You are one of thousands of tenants, and your subscription does not move a roadmap.

A custom build treats every broker as a normalized adapter into one canonical trip record. Each adapter handles that broker's quirks: file drop, API poll, portal scrape, whatever is available. The canonical record carries broker trip ID, your internal leg ID, member ID, level of service, authorization number, and the reconciliation state. Then you run a reconciliation job every 15 minutes that diffs the broker's current picture against your board and surfaces exceptions to a queue: trip cancelled on their side but still assigned here, level of service downgraded from wheelchair to ambulatory, mileage mismatch on the return leg. Your dispatcher works a short exception list instead of eyeballing four portals. This one flow is usually where the build pays for itself, because every unreconciled trip is either an unpaid mile or a denial you will fight in 45 days.

Problem: routing that ignores what actually happens in an NEMT vehicle

Generic routing optimizes for distance and time windows. NEMT does not work that way. A wheelchair pickup at a private residence with three porch steps takes 14 minutes, not 4. A bariatric transfer needs two attendants and a specific vehicle. A dialysis return leg is a will-call, meaning the clinic calls when the patient is off the chair, which could be 40 minutes after the scheduled time. A patient with a documented aggression history needs a specific driver. A member with an oxygen requirement cannot ride with certain configurations.

Tobi and RouteGenie will let you tag vehicles and set service durations, and that is useful at 60 trips a day. At 300 trips a day across four counties, the tags stop carrying the constraints. Your best dispatcher, the one who has been there nine years, holds the real routing model in her head: she knows the Riverside dialysis center runs 25 minutes late on Tuesdays, that Mrs. Alvarez's building has a service elevator that is faster than the main lobby, that driver 14 should never be assigned to the memory care facility. None of that is in the software. When she takes vacation, your on-time performance drops and you find out from a broker scorecard rather than from your own dashboard.

The custom build encodes those constraints as data instead of folklore. Per-address load times learned from your own GPS and driver app timestamps, not estimated. Per-facility will-call lag distributions computed from your history, so the optimizer schedules the dialysis return against a realistic window instead of a fictional one. Per-member equipment, attendant, and driver-exclusion rules that the assignment engine treats as hard constraints. Then the optimizer runs continuously, not once at 5am, and proposes reassignments to the dispatcher as a suggestion with a reason attached: "move leg 4412 to unit 22, unit 9 is 18 minutes behind and will miss the 2:15 appointment." The dispatcher stays in control. The software carries the memory.

Problem: will-calls and no-shows are where the money leaks and nobody can prove anything

A no-show costs you a dry run and usually gets denied unless you can prove the driver was there, waited the contractually required time, and attempted contact. Most operators can prove none of this cleanly. The driver marks "no show" in an app, and 45 days later the broker denies it and you have nothing but that tap.

The off-the-shelf driver apps capture arrival timestamps and sometimes a signature. What they rarely produce is an evidence package that survives a broker audit. And they almost never enforce the specific wait rule in your specific contract, which might be 10 minutes for ModivCare and 15 for the state line.

A custom driver app enforces the rule per contract at the moment of truth. Geofenced arrival with GPS accuracy recorded, a wait timer the driver cannot short-circuit, forced call attempt logged through a Twilio number so you have a call record with duration, a timestamped photo of the residence door, and an automatic exception to dispatch at minute 7 so a live human can try the member or the facility before the driver rolls. When the denial arrives, your appeal packet builds itself from records already captured. In the builds we have shipped, that turns no-show denials from an automatic write-off into a recovery line, and the same instrumentation kills the dry runs you would have driven anyway.

Problem: claims go out with the wrong modifier and come back 45 days later

The 837P for NEMT is unforgiving. A0130 for wheelchair, A0120 for ambulatory mileage, S0215 depending on payer, and the modifier pairs that encode origin and destination: RH, RN, RD, and the rest. Get the origin/destination modifier wrong on a nursing-facility-to-hospital leg and you get a denial that looks identical to fifteen other denial types. Your biller finds out in six weeks and reworks it by hand.

General billing tools and even NEMT-specific ones let you map codes, but the mapping is static. They do not know that this particular broker started rejecting a modifier combination three weeks ago. Your biller learns by pattern recognition and a sticky note on the monitor.

What a custom build does: claims are validated before submission against rules derived from your own remittance history. Every 835 that comes back is parsed and stored with the claim's full attribute set, so the system learns which combinations of payer, level of service, origin type, destination type, and modifier actually paid. New claims get scored against that history, and anything below threshold routes to a pre-submission review queue with the specific reason: "this payer denied 11 of the last 12 claims with this modifier pair on facility-to-facility legs." This is where AI does real work, and not as a chatbot. Two places specifically. First, document extraction: physician certification statements and PCS forms arrive as faxes and phone photos, and an extraction model pulls the signature date, diagnosis, and certification period, then flags certifications expiring inside 30 days so you are not running trips against a lapsed PCS you cannot bill. Second, denial classification: the free-text remark on a denial gets classified into an actionable bucket and routed, so your biller works appeals by category instead of reading 200 EOB lines. Both are narrow, checkable, and reversible. Neither should ever auto-submit a claim.

Problem: after-hours booking and facility calls eat a dispatcher you cannot afford

Discharge calls come at 7pm. Facilities call to add tomorrow's trips at 6:30am. Members call to confirm pickups all day. Most operators either pay for overnight dispatch coverage or lose the trip to whoever answers.

A voice agent on the intake line, backed by your actual trip data, handles the confirmable cases: member calls to confirm tomorrow's pickup, gets the real time and vehicle ETA. Facility scheduler calls to add a discharge, and the agent captures member ID, level of service, pickup facility, destination, and mobility requirements, then creates a pending trip that a human confirms at 6am. Anything ambiguous, anything involving a schedule change to an existing trip, anything where the member sounds distressed, escalates to a live person immediately. The rule is simple: the agent can create and read, it cannot cancel or modify. That boundary is what makes it safe to run overnight. Facility scheduler portals matter just as much, because the highest-volume facilities want to self-serve at 5am and every trip they enter themselves is a trip your dispatcher did not re-key.

What this actually costs and how long it takes

Across 2,000-plus projects, Digital Heroes sees a focused first release land between $60k and $130k, shipping in 12 to 16 weeks. For NEMT that scope is typically: canonical trip model, one or two broker adapters with reconciliation, a dispatch board that replaces the spreadsheet, a driver app with geofenced arrival and the wait-timer evidence chain, and 837P generation with 835 posting. That is enough to stop the two biggest leaks.

Full platform work, meaning multi-broker EDI at scale, continuous optimization, facility portal, voice intake, claims scoring against your remittance history, and a real reporting layer, runs $150k to $400k phased over 6 to 12 months. Phase it. Never build all of it before any of it is in a driver's hands.

What drives price up in this category specifically: the number of distinct broker and payer integrations, because each one is its own adapter, its own quirks, its own test cycle, and portal-scrape adapters cost roughly double a clean API. HIPAA posture, meaning BAAs, audit logging on every PHI read, encryption at rest, and access controls that survive a real audit, adds real engineering time and is not optional. Offline tolerance in the driver app, because your vans go through rural dead zones and the app must queue signatures and timestamps and reconcile without duplicating trips. State-specific Medicaid rules if you run fee-for-service alongside broker work. And data migration from Tobi or RouteGenie, where the standing orders and recurring templates are the hard part, not the trip history.

Build versus buy, and where the line actually sits

Stay on the off-the-shelf tool if you are under roughly 40 trips a day, running one broker, in one county, with one dispatcher. Tobi and RouteGenie are competent products and they solve that operator's problem for a few hundred dollars a month. Buying vans beats buying software at that size, every time. Do not let anyone tell you otherwise.

Build when these show up together: you run more than 150 to 200 trips a day, you carry three or more broker or payer relationships, your denial rate is high enough that your biller cannot explain it in one sentence, you employ a human whose full-time job is moving data between two systems, and you have lost a contract or a facility relationship over on-time performance you could not measure. The clearest single signal: your operations manager has a spreadsheet that the software cannot replace, and that spreadsheet is what actually runs the business. That spreadsheet is a specification. It is telling you the vendor's model does not match yours, and no amount of configuration closes that gap.

The honest middle path most operators skip: keep the off-the-shelf tool for scheduling and build only the reconciliation and billing layer on top of it, reading through its API. That is often a $60k to $90k project that recovers more money than a full replacement and does not put your dispatch board at risk. Take it if it fits.

How to choose a developer for NEMT software

Ask them to explain the origin and destination modifier logic on an 837P without looking it up. If they cannot describe why a facility-to-facility leg codes differently than a residence-to-hospital leg, they have never shipped this and you will pay for their education. The domain data model is the whole game here: trip versus leg versus authorization versus claim are four different objects with four different lifecycles, and a developer who models a trip as one row will build you something that cannot handle a will-call return.

Ask what they have integrated with by name. ModivCare, MTM, Access2Care, a state Medicaid MMIS, a clearinghouse. Ask specifically what happens when a broker has no API and the answer is a portal. If they have not built and maintained a scrape adapter, they do not know that the real cost is the maintenance, not the build, and they will underquote you and then resent the project.

Push on HIPAA specifics, not the word. Will they sign a BAA. How do they log PHI access, and can they produce an access report for a single member across a date range. How is the driver app's local cache encrypted, and what happens when a driver's phone is lost. Vague reassurance here is disqualifying.

Get the code ownership and the exit in writing before the first invoice. You own the repository, the infrastructure runs in your cloud account, and there is a documented handover. Then ask the uncomfortable question: what happens if we want to move off you in year two. A developer who has a clean answer is one who expects the software to outlive the relationship, which is the correct expectation for a system your entire operation depends on.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. Salesforce's field-service research (State of Service / field service trends, survey of 5,500+ service professionals) found that 74% of mobile workers report increasing workloads and 47% say appointments don't go as planned due to customer miscommunication, unaccounted-for parts, or insufficient appointment lengths and travel times. (The separate claim that admin tasks consume ~30% of a technician's hours is NOT supported by the report - the seventh-edition data instead states technicians spend about 18% of working hours, ~7 hours/week, on admin, and only ~32% of time interacting with customers.). Source: Salesforce (2024) →
  2. ServiceTitan's KPI guide cites an average first-time fix rate near 80% (90% ideal) and describes strong technician-utilization rates as falling in the 60-80% band, with average travel time typically 30-60 minutes depending on service-area size. Source: ServiceTitan (2026) →
  3. In an RCT, text-message reminders (11.7% missed) were non-inferior to telephone reminders (10.2% missed; difference not significant, within the 2% non-inferiority margin) but far cheaper - total cost EUR 230 for SMS versus EUR 8,910 for telephone over 6 months - making SMS more cost-effective. Source: BMC Health Services Research / PubMed Central (Junod Perron et al.) (2013) →
  4. Gartner estimates RPA can eliminate up to 25,000 hours of avoidable rework caused by human errors in the finance function each year, equating to savings of roughly $878,000 for an organization with 40 full-time accounting staff (based on interviews with more than 150 corporate controllers and chief accounting officers). Source: Gartner (2019) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does custom NEMT software cost for a 40-vehicle operation running 300 trips a day?
A focused first release covering dispatch, a driver app, broker reconciliation, and 837P billing typically runs $60k to $130k and ships in 12 to 16 weeks. A full platform with multi-broker EDI, route optimization, facility portal, and claims scoring runs $150k to $400k phased over 6 to 12 months. At 300 trips a day the reconciliation and denial-prevention pieces usually pay back fastest, so phase those first.
Is custom NEMT software worth it versus just using Tobi or RouteGenie?
Below about 40 trips a day on a single broker contract, no. Tobi and RouteGenie handle that operator well for a few hundred dollars a month and your capital belongs in vehicles. Above 150 to 200 trips a day with three or more broker or payer relationships, the off-the-shelf model stops matching your operation and you start paying the gap in denials, dead miles, and re-keying labor.
Can we build on top of our existing NEMT software instead of replacing it?
Yes, and it is often the smarter first move. Keeping Tobi or RouteGenie for scheduling while building a reconciliation and billing layer that reads through its API is typically a $60k to $90k project. It recovers denial and dead-mile money without putting your live dispatch board at risk, and it tells you whether a full replacement is actually warranted.
How long does it take to migrate off Tobi or RouteGenie without disrupting dispatch?
Plan 12 to 16 weeks to a first release, then run parallel for two to four weeks before cutting over. The hard part of migration is not trip history, it is standing orders and recurring templates for dialysis and treatment patients, because those carry rules that live in the vendor's schema. Budget explicit time to validate every recurring order against the broker's current authorization before cutover.
Do we own the code if we hire an agency to build our NEMT platform?
You should own the repository outright, and the infrastructure should run in your own cloud account from day one, not the vendor's. Get this in the contract before the first invoice, along with a documented handover process. Any developer who hedges on ownership or hosts your PHI in their account is building leverage over you, not software for you.
Is custom NEMT dispatch software HIPAA compliant?
It can be, but compliance comes from how it is built, not from the word itself. Require a signed BAA, encryption at rest and in transit, audit logging on every PHI read so you can produce an access report for a single member across a date range, and an encrypted local cache in the driver app with remote wipe. Ask these as specific questions, because vague reassurance usually means it was not built in.
Can software actually reduce our NEMT claim denial rate?
Yes, mainly by validating claims before submission rather than fighting denials after. Parsing every 835 remittance back into a rules history lets the system flag a claim whose payer, level of service, origin type, and modifier combination has been denied repeatedly, before it goes out. The other half is evidence capture at the vehicle: geofenced arrival, an enforced wait timer, and logged call attempts turn no-show denials into winnable appeals.
Will AI help our NEMT operation or is it hype?
Two applications are genuinely useful and narrow. Document extraction pulls dates, diagnoses, and certification periods off faxed PCS forms and flags certifications expiring inside 30 days so you stop running unbillable trips. Denial classification buckets free-text EOB remarks so your biller works appeals by category instead of reading every line. A voice agent can also handle after-hours confirmations and new bookings, but it should be allowed to create and read only, never cancel or modify.
How do we integrate with ModivCare, MTM, and Access2Care in one system?
Each broker becomes its own adapter feeding one canonical trip record, because their formats, trip IDs, and change-notification methods do not match. Some offer file drops or APIs, others only a portal, and a portal-scrape adapter costs roughly double an API integration and carries ongoing maintenance. The value comes from the reconciliation job running every 15 minutes, diffing each broker's current picture against your board and surfacing only the exceptions.
What security and compliance does custom field service software need?
The baseline is encryption in transit and at rest, role-based access so a technician sees only their own jobs, remote wipe for lost phones, and audit logs on anything that touches money. Run payments through a processor like Stripe or Square so card data never touches your servers and the heaviest PCI burden stays with them. If your crews serve regulated sites such as healthcare or government facilities, say so in scoping, because access and documentation requirements shape the data model.
How long until a custom field service platform pays for itself compared to per-technician licenses?
For most shops the crossover lands between 18 and 36 months once upkeep is counted. A 25-technician company paying $300 per technician per month for licenses spends $90,000 a year, so a $120,000 custom build with $20,000 in annual maintenance breaks even around month 21, before counting saved dispatch hours and billing errors. Below about 10 technicians the math rarely works, and Jobber or Housecall Pro is the honest recommendation.
How long does it take to build a custom field service app with scheduling, dispatch, and a technician mobile app?
Plan on 12 to 16 weeks for a working first release covering scheduling, dispatch, and a technician mobile app, and 5 to 7 months for a full platform with offline mode and accounting sync. Across 2,000+ Digital Heroes projects, field service timelines slip in two predictable places: underscoped offline behavior and integration testing against QuickBooks or the payment processor. Both belong in week one of planning, not month four.
How much would it cost to build something like ServiceTitan just for my company?
A true ServiceTitan clone would cost millions and you do not need one, because companies that bring this request to Digital Heroes typically use 20 to 30 percent of its features. Building that slice, shaped to your exact dispatch board and technician day, runs $80,000 to $200,000 depending on offline requirements and integrations. The field service builds that succeed copy a workflow, not a product.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
How many people should be working on my software project?
Three to five for a typical focused build: a project lead, one or two engineers, a designer, and part-time QA, which is the standard shape across 2,000+ Digital Heroes projects. Larger platforms justify 6 to 10, but a ten-person team on a small first version usually signals bill padding rather than horsepower. What predicts success is whether a senior engineer is writing your code daily, not the headcount on the proposal.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?