Problems & solutions · ERP

Transit Agency Operations Software Problems: The 7 That Cost Overtime and Grievances, and How to Avoid Them

Transit Agency Operations Software workflow illustration showing common problems and fixes.
The short answer

The most expensive failure in transit software is treating the collective bargaining agreement as a configuration detail and writing your work rules into code. The next contract cycle then arrives, the spread penalty changes, the guarantee is renegotiated, and the system that cost you $250,000 to $600,000 needs a paid change order before it can produce a legal assignment. In the meantime dispatch keeps carrying the rules by hand at 4am, which is where the daily premium leak lives: every held over operator paid at overtime when an eligible extraboard operator was available, and every offer made out of seniority order that turns into a grievance. Work rules have to be versioned, effective dated data from the first release, testable against last month's actual assignments before a new agreement takes effect.

Why does the labour agreement get treated as a detail instead of the specification?

Nearly every transit operations project is scoped from the visible artefacts: the runcut, the vehicle assignments, the daily board, the reports. Those are all real and they are all downstream. The document that actually determines what your operation costs each day is the collective bargaining agreement, and it is rarely read by anyone technical before a number is quoted.

This is specific to transit because the agreement is not policy, it is arithmetic. Spread time penalties, the guarantee, report and travel allowances, the rules on who may be held over and for how long, the sequence in which the extraboard is offered open work, and what happens when nobody accepts. Every one of those converts directly into money on a given morning, every one is negotiated locally, and every one changes on a contract cycle. A developer who has not read the work rules articles is quoting a scheduling application and will meet transit halfway through your budget.

The fix is procedural and it costs nothing. Send the agreement before you take quotes and require the questions back in writing. A team that has done this returns asking about spread penalty calculation, guarantee mechanics and the offer sequence for open work. Then require work rules to be held as versioned configuration with effective dates, and require the ability to run a proposed new agreement against last month's real assignments to see the cost difference before it takes effect. That single capability is worth more at the next negotiation than any dashboard.

What goes wrong when you migrate runcuts, seniority and leave balances?

The data that has to move is spread across systems that were never designed to agree. The runcut lives in your scheduling product. The seniority list lives in human resources (HR), usually in a spreadsheet maintained by one person, and it carries exceptions: operators who transferred divisions, operators who broke service and were reinstated, operators whose seniority date was adjusted by a settlement years ago. Leave balances live somewhere else again, often in payroll, and they reconcile to the day only at period end.

The migration failure is not technical, it is that these three sources disagree and nobody has ever been forced to resolve them. Load them as found and the pick engine will offer work to the wrong operator in the wrong order, which is the one error transit software cannot survive politically. Operators will trust the system exactly as far as the first seniority mistake.

Reconcile before you load, with the union in the room. Publish the seniority list the system will use, in order, and let it be challenged before go live rather than during a pick. Do the same with qualifications and licence expiry, since a system that offers work an operator is not qualified to hold creates a safety problem rather than an inconvenience. Treat leave balances as read from payroll rather than owned by the new system for the first year, because two systems computing the same balance differently is a dispute generator you do not need while everything else is new.

Why do the vehicle, farebox and payroll integrations break after launch?

Vehicle location, passenger counters and fareboxes are three different problems, from three different suppliers, on a moving vehicle. The failure modes are not the ones a developer sees in a lab: a bus sitting in a yard with no cellular coverage, a unit that logs on with the wrong operator identifier because the driver typed a digit wrong, a vehicle swapped mid day so the location feed reports the wrong run, a device that stops reporting after a battery disconnect during maintenance and comes back weeks later.

Payroll breaks differently and matters more. Agencies commonly run older payroll systems that need file based interfaces, and the interface works until a pay code changes, a new premium is added by the contract, or a period boundary lands awkwardly. When payroll export goes wrong, operators are paid incorrectly, and operator trust in the whole system is gone in one pay period regardless of how good dispatch has become.

Build the reconciliation before the integration is considered done. Payroll export needs a line by line reconciliation report your payroll team runs each period against their own totals, not a file that is assumed to be right. Vehicle feeds need an expected reporting interval per unit with alerting when a vehicle goes quiet, and a clear rule for what happens to adherence and delivered service data when the feed is absent. Never let a missing feed silently become an on time trip or a zero.

What happens when federal reporting definitions are not covered at capture?

Formula funding depends on data reported to the National Transit Database, and the definitions are specific. Revenue hours and revenue miles are not pull out to pull in. Deadhead is not revenue service. Passenger miles carry sampling requirements. A dropped trip changes the service actually delivered and should change the number.

If the system records assignments but not actual pull out, pull in and trips operated, then the federal figures are reconstructed afterwards from a scheduled runcut, an odometer report and a counter feed nobody fully trusts, adjusted by a person who understands the definitions. That reconstruction is where agencies quietly under report delivered service, and it is the point at which you can no longer defend your own numbers in a review. The reporting module is not the problem. The capture is.

Capture at source and treat the definitions as a reporting layer over a clean event log. Dispatch records the actual assignment, the actual pull out and pull in, and the trips actually operated, including dropped and short turned trips as operational events rather than as corrections. Revenue hours then become a derived value with a lineage back to individual trips, so when a reviewer asks how a figure was produced you show the trail rather than a spreadsheet. Do this in the first release. Retrofitting capture into a system that only recorded plans means rebuilding the core.

Should you build custom or configure what you already own?

If your problem is that your schedule is inefficient, buy Optibus and stop. It is genuinely strong at generating an efficient runcut and no custom build will beat it at that. If you operate under roughly 50 peak vehicles on fixed route only, with a simple bargaining unit or none, and no complementary paratransit obligation of any scale, a scheduling product plus a modest dispatch tool is the right spend and a custom build would consume capital that belongs in service hours.

Trapeze Group, Init and Clever Devices are all real products with real strengths, and Init and Clever Devices in particular know vehicle systems and passenger counting better than a bespoke team will. The gap in all of them is the same and it is structural: none can express your specific labour agreement, because that agreement is local and changes every cycle, so the plan the software produces still gets turned into reality by a human applying rules the software does not hold.

The pattern that works for most agencies is not replacement. Keep your scheduling product, import the runcut from it, and build the operations layer around it: eligibility ordered coverage, projected premium per option, reason coded deviations, clean capture of delivered service. That is the $90,000 to $180,000 first release over 12 to 18 weeks, and most of the recoverable daily premium leak is inside it. Build the pick engine, real time adherence and the operator portal afterwards, once dispatch is proven at 4am.

How do hidden costs get into the quote?

Bargaining units are first. Two unions means two rule sets, two picks and two sets of edge cases, and a quote written for one does not scale linearly to two. Say how many you have on the first call, including maintenance and supervisory units if they touch the same operator or work records.

On vehicle hardware, the hidden cost is not the integration, it is the field validation. Reading a location feed in a test environment takes days; proving it against real buses in real dead zones, with mid day vehicle swaps and mistyped operator logons, takes weeks and needs someone from operations riding along. Budget that as real cost. Paratransit is the third: complementary service under the Americans with Disabilities Act is a genuine scheduling optimisation problem, not a variation on fixed route, and folding it in mid project is where timelines double.

The fourth is the parallel run. Two to three weeks of running the new process alongside the old one is where the unwritten rules surface, and it needs supervisory time that nobody put in the plan. Name the bargaining units, price each vehicle system separately, keep paratransit out of phase one unless it is the reason you are building, and put the parallel period in the schedule as a funded activity.

What separates a build that works from one that fails here?

The builds that work start at the dispatch window at 4am and work outward. The ones that fail start at a management dashboard and work down, and they get abandoned because the dispatcher never adopted them and everything upstream depended on the dispatcher's data.

Ask a candidate developer how they will handle a contract change mid build, because you will have one. The right answer involves effective dated rule versions and the ability to replay last month's actual assignments under the new rules to see what changes before the agreement starts. Ask what they have integrated on an actual vehicle, by supplier and protocol, and ask what broke. Ask how the system behaves when a vehicle feed is missing, because the wrong answer quietly corrupts your federal numbers. Ask how payroll reconciliation works, since that is the integration that decides whether operators trust anything.

Settle ownership in the contract rather than in a conversation: the repository, the cloud infrastructure accounts and the unrestricted right to hire another firm. For a public agency running a system that produces federally reported figures, your board will reasonably expect that in writing. Then do the homework that sizes the problem honestly: take last week's coverage decisions, price each one against the cheapest legal alternative, and total the difference. That number, annualised, is your business case, and it is usually larger than the build.

Research & sources

The evidence behind this guide

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

  1. 48% of private companies cite integration with legacy systems or technical debt as a top obstacle to realizing the full value of their digital and AI investments (behind data quality/availability at 72% and gaps in AI fluency or technology talent/leadership at 53%). Source: Deloitte (2026) →
  2. Large companies globally have captured, on average, only 31% of the expected revenue lift and 25% of the expected cost savings from their digital and AI transformations - a significant gap between expected and realized value. Source: McKinsey & Company (2023) →
  3. 88% of customers say good customer service makes them more likely to purchase from a brand again in the future, quantifying the direct revenue link between support quality and retention. Source: HubSpot (2024) →
  4. SHRM's 2025 benchmarking data puts the average cost-per-hire at $5,475 for nonexecutive roles and $35,879 for executive roles - executive hires are on average nearly 7x more expensive than nonexecutive hires. Source: SHRM (Society for Human Resource Management) (2025) →
Jack C. · People Operations · APAC · Sydney

Jack looks after people operations for the APAC team, from hiring and onboarding through to the day to day of keeping a distributed office running. He sees which skills are hard to hire and how project teams are actually staffed. That perspective is useful if you are deciding between hiring and outsourcing.

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

FAQ

Frequently asked questions

How do we keep work rules from being hardcoded into the system?

Require them as versioned, effective dated configuration in the contract, and require an acceptance test that proves it: load a hypothetical amended agreement and replay last month's actual assignments under it without a code change. If the developer needs a release to change a spread penalty or an offer sequence, you will be paying for a change order at every negotiation, and in the gap your dispatchers will go back to carrying the rules by hand. This is the single question that most reliably separates teams who have built for a unionised operation from teams who have not.

What should the first release cover if we only fund one phase?

Runcut import from your existing scheduling tool, daily dispatch with extraboard and absence coverage in correct eligibility order with projected premium cost per option, and clean capture of the service actually delivered. That combination runs $90,000 to $180,000 over 12 to 18 weeks and it is the slice a dispatch office uses at 4am on day one. The pick engine, real time adherence and the operator portal all depend on those records existing, so building them first produces a system with nothing underneath it.

How do we run a pick without creating grievances?

Make the pick a validated transaction rather than a room with a clipboard. Each operator sees only work they are eligible to hold, every selection is checked against spread, rest and qualification rules at the moment of the click, and every offer, decline and selection is logged with a timestamp. Publish the seniority list the system will use before the pick opens and allow it to be challenged then, because a seniority error discovered during a live pick costs you the pick and a great deal of credibility.

Can fixed route and paratransit share one system?

They should share one operator record, one vehicle record and one availability model, with mode specific scheduling built on top, because that shared base is what makes cross mode use of operators and vehicles visible at all. What you should not do is fold paratransit scheduling into a first release aimed at fixed route dispatch, since demand response routing is a genuine optimisation problem with its own timeline. Unify the base records first, add the paratransit scheduling engine as its own phase.

What happens to our federal numbers during the transition?

Run both methods for at least one full reporting period and reconcile them line by line before you rely on the new one. Expect the numbers to differ, and expect the new capture based figures to be more accurate rather than merely different, since reconstruction from a scheduled runcut typically understates or overstates delivered service depending on how dropped trips were handled. Document the difference and its cause, because a change in reported revenue hours with no explanation is exactly what draws a question in a review.

How do we get dispatchers to actually use the new board?

Run in parallel for two to three weeks with the whiteboard or printed runcut still in place, so the dispatcher can compare each morning and the system has to earn the switch. Every discrepancy in that period is a rule the system does not yet hold, and capturing those is the real purpose of the parallel run rather than training. Budget supervisory time for it explicitly, and let the dispatchers decide when the old process retires, because they will stop trusting the board before anyone tells them to.

What vehicle system integrations should we do first?

Payroll first even though it is not a vehicle system, because operators trust the software exactly as much as they trust their pay. Vehicle location next, since both schedule adherence and delivered service depend on it. Passenger counters, fareboxes and general transit feed specification output follow. When quoting each, ask the developer for the specific hardware and protocol they have worked with on a bus, and ask what failed, because cellular dead zones, mid day vehicle swaps and mistyped operator logons are the real conditions.

Should the operator self service portal be in scope early?

No. It is popular with everyone except the people who have to make it work, and it depends entirely on the operator record, the leave data and the work rules being correct first. Ship dispatch, prove the records, then open the portal, because a portal showing operators an incorrect balance or an ineligible bid does more damage to adoption than not having one at all. Once the underlying data is trusted, the portal is a comparatively small addition and it removes a large volume of routine calls to the window.

How long does it take to build a custom web or mobile app from scratch?
Plan on 8 to 16 weeks for a focused first version and 4 to 9 months for a larger platform, which is the typical spread across Digital Heroes builds. The first 2 to 3 weeks go to discovery and design before any production code ships. The two things that stretch timelines most are integrations with legacy systems and slow feedback from your side, not developer speed.
Who owns the source code if an agency builds my ERP?
You should, in full, and it must be written into the contract as work for hire with IP assignment on payment. At Digital Heroes every client receives the complete repository, database schemas, and deployment documentation, so they could hand the system to another team tomorrow. Walk away from any ERP proposal built on the agency's proprietary platform with ongoing license fees, because that recreates the vendor lock-in you were escaping.
What mistakes kill ERP projects most often?
The three we see most in rescue work at Digital Heroes: recreating the old system's broken process in new software, launching everything at once instead of module by module, and having no single internal owner with authority to decide. A fourth is skipping the parallel run on data migration to save two weeks, which trades a short delay for months of distrust in the numbers. None of these are technical failures, which is why vendor selection should weigh process discipline over demo polish.
Is custom software more secure than off-the-shelf SaaS?
Neither is secure by default; security tracks the practices of whoever builds and operates the system, not the model. SaaS gives you the vendor's certifications and patching but puts your data in a shared multi-tenant platform on their terms, while custom gives you full control over data residency, access rules, and compliance requirements like HIPAA, with the responsibility sitting with you and your agency. Before hiring anyone for a system holding sensitive data, ask for their security checklist: encryption at rest and in transit, an OWASP Top 10 review, role-based access, and a penetration test before launch.
What happens to my ERP if the agency shuts down or we part ways?
If ownership was set up correctly, nothing breaks: you hold the source code, the system runs in cloud accounts you own, and handover documentation lets a new team take over. Insist on repository access from day one, admin ownership of all hosting and third-party accounts, and documentation as a contract deliverable rather than a favor. This is the single most important clause to check before signing an ERP contract.
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.
What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
Who can build a custom ERP software system?

Digital Heroes builds custom ERP 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 ERP 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.

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?