Problems & solutions · Internal Tools

Railcar Fleet Management Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Railcar Fleet Management Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure in railcar fleet software is a repair spend dashboard. It charts your billing beautifully by month, by shop and by job code, and it tells you nothing about whether any of those charges belong to you. The feature that actually pays for the project is the automated join between each repair line and the car's movement history on the repair date, because that is what shows a repair billed to you while the car was on another party's property. Without it, bills continue to be approved because nobody has time to check them, the dispute window closes, and the fleet manager's budget is over again with no explanation available.

Why do these projects ship a dashboard instead of an exception queue?

Because a dashboard is what gets asked for. A fleet manager describes the problem as not having visibility, an analyst writes visibility into a requirement, and the deliverable becomes charts. Charts also demonstrate well, they need only the billing file, and they can be built without touching movement data at all.

The trouble is that visibility is not the constraint. She already knows she is being billed. What she cannot do is establish, car by car, whether each line is correctly assigned, and doing it manually means cross referencing the repair record against the car's movement history across three screens and a set of industry manuals. That is a full time job, so it does not happen.

The right deliverable is an exception queue. Every incoming repair line joined automatically to the car's movement history at the repair date, to the car's own maintenance record, and to your fleet's rules, with only the anomalies surfaced. This repair was billed to you but the car was on another railroad's property when the damage occurred. This wheelset was replaced at your own shop three months ago and should be under warranty. This is a duplicate of a line already paid. This amount sits well above the norm for that job code across your fleet.

Twenty exceptions to work beats three hundred lines to read, and the disputes get filed while the window is still open. Ask any developer to describe that join specifically. A team that has not thought about it will offer you the dashboard.

What goes wrong with movement event data?

Movement events arrive as car location messages and event feeds from multiple railroads, routed through the industry's clearing infrastructure. Each origin, interchange, arrival and release is an event. What a fleet owner wants is not events, it is a state: where is car X, how long has it been there, is it loaded, whose fault is the dwell, and when will it be back for the next load.

Building that state is harder than it looks. Feeds arrive out of order and sometimes duplicated, and two railroads report the same interchange with different times because each reports against its own operating record. A system that takes the latest message and overwrites the position produces cars that appear to travel backwards, and once a customer sees an impossible trip on a dwell dispute the whole system loses credibility.

Build it as an append only event log with reconciliation rules per event type, so the current position is a derived view you can explain and the trip history remains reconstructable. That distinction matters commercially, not just technically, because the number you will be arguing about with a customer is dwell at their plant, and you need to be able to show how it was computed.

Once the state is trustworthy, the questions that shrink a fleet become answerable. Cycle time per origin and destination pair. Dwell at customer plants separated from dwell in transit, which is the difference between a customer conversation and a railroad conversation. Cars idle beyond a threshold with a named owner for the follow up. Fleets are almost always sized for the cycle time they have rather than the one they could have.

Why do railroad, registry and lessor feeds break after launch?

Because every one of them belongs to somebody else. A railroad changes an event code or a file cadence. The equipment registry publishes a schema revision. A lessor moves to a new billing platform and the invoice layout changes. A shop starts submitting through a different intermediary. None of these are unusual and none will be announced to you in a way your integration can act on.

The dangerous failures are the silent ones. A movement feed that stops arriving looks exactly like a fleet that did not move, so cars appear parked, dwell calculations run against stale timestamps, and the idle car report starts naming the wrong cars. Repair billing that stops arriving looks like a quiet month, which is a pleasant assumption to make right up until three months of files land at once with the dispute windows already gone.

Instrument every feed with a volume expectation and alert on silence as well as on error. Version the parser per source, and keep a stored sample as a contract test so a layout change fails loudly rather than quietly in your numbers.

Then treat the registry as reference data with a refresh discipline rather than a one time load. Cars are rebuilt, sold and scrapped, and a fleet system running on a two year old snapshot will bill and route against equipment that no longer exists in that configuration.

What happens when qualification dates and lease riders are not covered?

Cars strand and invoices go unchecked, and both failures are quiet until they are expensive.

Tank cars carry qualification and inspection requirements under the federal hazardous materials regulations, with intervals defined by test type, and other equipment carries its own inspection obligations. Most fleets track this in a spreadsheet keyed off a registry report, updated when somebody remembers. The failure is not usually a violation, it is a car sitting because the shop slot was booked six weeks out and nobody knew until the car was already loaded and rejected. Carry due dates as first class data, project them against planned utilisation, group cars by geography so shop trips are batched sensibly, and warn far enough ahead that the shop conversation happens before the car is committed to a load.

Lease administration fails differently. Invoices are per car per month with terms varying by rider, maintenance responsibility differs between full service and net leases, and mileage credits or allowances depend on the miles the car actually ran. Reconciling the lessor's invoice against your own view of which cars you held and how far they moved is a job that is almost never done, and lessors are not staffed to find errors in your favour.

Rider modelling is also the most common schedule surprise on these projects. Each lessor's structure has to be represented accurately before invoice reconciliation is trustworthy, and that is document reading rather than engineering. Start it early. Once it exists, the monthly check is automatic: cars billed that you returned, cars billed at the wrong rate against the rider, mileage credits that do not match your recorded miles, and cars still billed after scrapping.

Should you build custom or configure what you already own?

If you lease fifty cars full service from a single lessor who handles maintenance, do not build. Your lessor's portal plus a spreadsheet is proportionate and the recoverable money will not cover a project. That is the honest answer for a large share of shippers and it does not change until you control the maintenance decision.

Do not mistake the industry registry for a fleet system. Railinc is infrastructure rather than a fleet management product: Umler is the equipment registry and the clearing services are the pipes. Both are essential inputs. Neither tells you which of your cars is idle at a customer plant, whether this month's repair bills are correctly assigned, or which cars are approaching a qualification date. Treating the registry as a fleet system is a category error a surprising number of shippers make, and it usually surfaces about a year in.

RMI RailConnect and Bourque Data Systems are strong products built primarily around railroad operations, which is a genuinely different buyer. A short line asks what is on my property and what can I bill. A private fleet owner asks where are my assets, what is my cycle time, which of these charges are wrong and which cars are about to strand. The data overlaps and the questions do not, so a fleet owner running a carrier product spends their time translating.

Build when you control more than roughly three hundred cars, your movement events come from several railroads, and repair invoices are approved because nobody has time to check them.

How do hidden costs get into the quote?

  • Tank cars. The regulatory and qualification model is materially more complex than for a covered hopper, and a quote scoped on general freight equipment will not cover it.
  • Lessor count. Each rider structure is its own modelling exercise in prose before it is code. Priced as configuration, delivered as weeks.
  • Commodity variety. Different loading, cleaning and compatibility requirements change what counts as an available car.
  • Plant and ERP (Enterprise Resource Planning) integration. Feeding car availability into production planning is where the largest operational value sits for a manufacturer, and it is a separate interface with a return path for loading and release events.
  • Historic data load. Movement and billing history is the evidence base for future disputes, and importing it cleanly is real work rather than a script.
  • Demurrage and storage recovery. Frequently assumed to fall out of dwell reporting. It needs the contractual terms modelled to be billable.

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

The builds that work start with the join that pays for the project. Movement events reconciled into a trustworthy position, then repair billing exceptions on top of it, in the first release. Everything else, however useful, is a later phase, and a first release without that join has no mechanism for returning money.

They respect the dispute clock. The framework in this industry is established and fair, with job codes, why made codes and responsibility rules set out in Association of American Railroads (AAR) manuals and bills exchanged in standard files. The asymmetry is attention: the repairing party has software that generates the bill and the owner has a person opening a file. Exception generation should therefore run on receipt, with the remaining days to dispute carried on every line.

They treat lease reconciliation as a first class feature rather than a reporting nicety. It is unglamorous and consistently one of the fastest paybacks in the system, because nobody else is looking for errors in your favour.

They put the fleet manager and the person who actually opens the billing files in the room during design. Between them they hold the rules about which charges are normally yours, and none of it is written down.

And they settle ownership in writing before kickoff: the repository, the infrastructure accounts and the right to bring in another supplier. At Digital Heroes the client owns the code from the first commit. A fleet system accumulates years of movement, repair and billing history, and that history is the evidence base for every future dispute, so it should never sit on a supplier's account.

Research & sources

The evidence behind this guide

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

  1. The average developer spends more than 17 hours a week dealing with maintenance issues such as debugging and refactoring, and about four of those hours on 'bad code' - waste that equates to nearly $85 billion annually worldwide in opportunity cost. Source: Stripe (2018) →
  2. McKinsey's Developer Velocity research finds best-in-class tools are the top contributor to software business success, yet only about 5% of executives ranked tools among their top-three software enablers, signaling underinvestment in developer tools (this finding originates in McKinsey's Developer Velocity study rather than the linked generative-AI article). Source: McKinsey & Company (2023) →
  3. Only 22% of firms are 'future ready' having significantly transformed digitally; these companies show average revenue growth 17.3 percentage points and net margins 14.0 percentage points above their industry average. Source: MIT Center for Information Systems Research (MIT Sloan) (2022) →
  4. The performance gap between digital and AI leaders and laggards is widening: McKinsey reports leaders pull ahead on shareholder returns, and the average maturity spread between top and bottom performers jumped ~60% (from 10 points in 2016-19 to 16 points in 2020-22), reinforcing that the returns to transformation concentrate among top performers. Source: McKinsey & Company (2023) →
Eleanor W. · VP Client Services · UK & EU · London

Eleanor leads client services across the UK and EU, which means she sits between what a client asks for and what the delivery teams can realistically build. She writes about scoping, budget conversations and the questions worth asking before a build starts.

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

FAQ

Frequently asked questions

Why does our fleet system show cars moving backwards?
Because movement events arrive out of order and sometimes duplicated, and two railroads can report the same interchange with different times against their own operating records. A system that takes the latest message and overwrites the position will show impossible trips. Build an append only event log with reconciliation rules per event type so the current position is a derived view you can explain and the trip history stays reconstructable. That matters commercially, because dwell at a customer plant is the number you will be arguing about.
What single feature makes a railcar fleet build pay for itself?
The automated join between each incoming repair line and the car's movement history on the repair date, joined also to your own maintenance record and fleet rules. That is what produces the exception queue: repairs billed to you while the car was on another party's property, work duplicating a recent repair at your own shop, straight duplicates of paid lines, and amounts well above your fleet norm for that job code. A dashboard of repair spend tells you that you are being billed and nothing about whether you should be.
Why do we keep missing repair billing dispute windows?
Usually because exception generation runs on a reporting cycle rather than on receipt, so a file that arrives on the fifth is reviewed on the twenty fifth. Run the joins when the file lands and carry the remaining days to dispute on every exception line so the queue self prioritises. The other common cause is a silent feed failure: billing that stops arriving looks like a quiet month right up until three months of files land at once with the windows already gone.
Is Railinc Umler a fleet management system?
No, and treating it as one is a common and expensive mistake that usually surfaces about a year in. Umler is the industry equipment registry and Railinc provides the clearing infrastructure that moves messages between railroads. Both are essential inputs and neither answers a fleet owner's questions about idle cars, misassigned repair charges or approaching qualification dates. Treat the registry as reference data with a refresh discipline too, because cars get rebuilt, sold and scrapped and a stale snapshot misroutes and misbills.
How should tank car qualification dates be handled in software?
As first class data projected against planned utilisation, not as a spreadsheet updated when somebody remembers. Tank cars carry qualification and inspection requirements under the federal hazardous materials regulations with intervals defined by test type, and shop capacity has to be booked months ahead. Group cars by geography so shop trips batch sensibly and warn far enough in advance that the shop conversation happens before the car is committed to a load. The costly failure is a stranded car, not a violation.
Why is lease rider modelling the usual schedule surprise?
Because it is document reading rather than engineering, and it has to be done accurately before invoice reconciliation can be trusted. Full service and net leases assign maintenance responsibility differently, rates and mileage allowances vary by rider, and each lessor structures theirs its own way. Start it in week one rather than at integration time. Once modelled, the monthly check runs itself: cars billed after return, wrong rates against the rider, mileage credits that disagree with your recorded miles, and cars billed after scrapping.
Can this software actually reduce the number of cars we lease?
Indirectly and reliably, because fleet size is a function of cycle time. Once you can separate dwell at customer plants from dwell in transit and from time on the railroad, you know whether the conversation is with a customer or a carrier, and you can act on cars idle beyond a threshold with a named owner for follow up. Fleets are almost always sized for the cycle time they have rather than the one they could have, and the reduction shows up at the next lease renewal.
We lease fifty cars full service from one lessor. Should we build anything?
No. If your lessor handles maintenance and you have a single portal to look at, a spreadsheet is proportionate and the recoverable money will not cover a project. The build case starts when you control the maintenance decision, when movement events come from several railroads, when repair invoices are approved because nobody has time to check them, and when fleet size is large enough that a few percent of cycle time is worth real money. Roughly three hundred cars under your control is a reasonable line.
Is a custom internal tool secure enough for HR records and financial data?
A properly built custom tool is generally safer for sensitive data than the shared spreadsheet it replaces, because you get role-based access, audit logs, encrypted storage, and the ability to cut one person's access instantly. Ask the agency specifically for encryption in transit and at rest, permissions down to the field level, and an audit trail showing who viewed or changed each record. If HIPAA, GDPR, or SOC 2 expectations from enterprise clients apply to you, raise it before the quote, because compliance features add real scope.
How long does it take to build an internal tool from scratch?
A working first version typically ships in 4 to 8 weeks, and larger multi-module tools run 10 to 16 weeks. Across Digital Heroes internal tool projects the schedule splits into roughly one week of process mapping, 3 to 6 weeks of build, and 1 to 2 weeks of testing with your actual staff. The most common delay is not development but waiting on the client for sample data and workflow decisions, so name one internal owner before kickoff.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
How many SaaS seats do we need before building custom becomes cheaper?
The crossover usually shows up between 20 and 50 seats on premium tiers. Salesforce Enterprise lists at $165 per user per month, so 40 users cost about $79,000 a year in subscriptions, which is real money against a custom system you would own outright. Run the comparison over three years: if subscription spend beats the build cost plus 15-20% annual maintenance, custom wins on price before you even count workflow fit.
Can I build my product on a no-code tool like Bubble instead of hiring developers?
For testing whether anyone wants the product, yes, and Bubble's paid plans start at $29 a month, which is the cheapest validation you will ever buy. The ceiling arrives with complex data relationships, heavy integrations, performance at a few thousand users, and the fact that you cannot export a Bubble app to servers you control. A path many Digital Heroes clients take: prove demand on no-code, then rebuild custom once revenue justifies it, treating the no-code version as a paid prototype rather than a foundation.
How do I know when spreadsheets are no longer enough to run my operations?
Replace the spreadsheet once more than three people edit it, versions travel by email, or a single broken formula could cost real money. Other reliable signals: staff keep personal shadow copies, month-end reporting takes days of manual assembly, and nobody can say who changed a number or why. In Digital Heroes discovery calls the tipping point is almost always a specific expensive error, a mispriced quote, a missed order, or payroll built on a tab someone sorted wrong.
Should we build the whole internal tool at once or start with an MVP?
Start with a version that fully replaces one workflow, ship it in 4 to 6 weeks, and let real usage set the roadmap. Internal tools have a captive audience, so you learn within days which features matter, and across Digital Heroes projects roughly a third of initially requested features never get built once staff work with version one. Phasing also spreads the spend: a $40,000 vision becomes a $15,000 phase one that starts paying for itself while phase two is scoped.
Can a custom internal tool connect to QuickBooks, Salesforce, and the other software we already use?
Yes, and integrations are usually the strongest argument for going custom instead of chaining tools together with Zapier. QuickBooks, Salesforce, Shopify, Stripe, Slack, and Google Workspace all have mature APIs, and each integration typically adds $1,500 to $5,000 to a Digital Heroes build depending on how much two-way syncing you need. The honest caveat is legacy industry software without an API, which may need file-based imports instead of a live connection, so list every system in the first conversation.
Who can build a custom internal tools system?

Digital Heroes builds custom internal tools 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 internal tools 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?