Problems & solutions · Field Service Management

Public Works Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Public Works Software workflow illustration showing common problems and fixes.
The short answer

The most expensive failure in public works software is a system with no event mode, so the six days a year that matter never enter it. During a declared storm the dispatcher falls back to a whiteboard and a group text, hundreds of jobs get worked and none get recorded, and when reimbursement paperwork comes due somebody reconstructs the event from photos and memory. A debris removal claim needs documented labour hours, equipment hours by equipment code, and location, per job. Work you genuinely performed and genuinely paid for becomes unrecoverable because the record was never created, and the department absorbs a cost it was entitled to claim back.

Why does the scope keep getting written around one division's work orders?

The requirements document is almost always written by the division with the loudest problem, which is usually streets. That produces a work order system shaped like street maintenance: pothole categories, a paving activity list, a crew calendar. Then sewer, fleet, parks and the sign crew are told to use it, discover it does not describe their work, and go back to the spreadsheet they were already keeping.

This happens in public works more than in most categories because the department is genuinely several businesses sharing a yard. A lift station, a sign, a fleet unit and a storm inlet are different data models with a shared crew pool, and a system built around one of them cannot absorb the others through custom fields.

The fix is to model the asset hierarchy before modelling the work. Assets carry effective dated attributes, sit in hierarchies, and belong to spatial relationships that resolve at write time, meaning a single inlet knows its basin, its ward, its snow route and the capital project that replaced it. Work then attaches to assets rather than to a category list. Get that right and adding a division is configuration. Get it wrong and every division after the first is a rewrite.

Scope the first release across at least two divisions with genuinely different asset shapes, even if only one goes live. It costs a little more in design and it is the difference between a platform and a streets tool.

What goes wrong when you migrate asset data and work order history?

The migration exposes a problem departments know about and have learned to live with: your geographic information system, or GIS, and your work order history do not agree on what things are called. Asset identifiers drift, get duplicated when a feature is re digitised, or were never stable in the first place because someone used a sequence that restarted after a schema change.

That matters because the entire value of the new system is asking what a specific asset has cost you over time. If the work order history cannot be joined to the current asset record, you have moved your data without gaining the one report your finance director has been asking for.

The other reliable surprise is the undocumented network. Every department has tie ins, valves, service laterals and abandoned segments that were never mapped, and the person who knows where they are has been there twenty years. That knowledge is not in either system, and no migration recovers it.

The approach that works is a reconciliation phase before any application code is written. Produce a match report between work order history and current features, classify the unmatched into duplicates, retired assets and genuine gaps, and decide deliberately per class. For the undocumented network, build a field discovery path from day one so what the crew learns during a repair enters the system. Departments that import wholesale end up with a faster way to query bad data.

Why do the Esri and finance integrations break after launch?

The Esri integration breaks because it is usually built one directional. The nightly job pushes attributes from GIS into the work order system, GIS is treated as authoritative, and the field is treated as a consumer. Then a crew exposes a pipe that is a different size and material from what the map says, and there is no path for that discovery to travel back except an email to an analyst with a backlog. The map stays wrong, engineering quietly re surveys before every project, and the integration is technically working the entire time.

Build it bidirectionally and treat field discovery as a first class record. Close out asks what the crew actually found, whether it matches the record, and for a photo. A mismatch creates a discrepancy record with the location fix and the note, which lands in a review queue as a proposed edit the analyst approves or rejects in bulk. Also expect a schema change mid project, because GIS teams keep working while you build, and ask any developer how they have handled one before.

The finance integration breaks on the chart of accounts. Activity codes and fund mappings change during a budget cycle, and a crew leader picking the first plausible code from an alphabetical dropdown will charge work to the wrong fund all year. Get the mapping committed in writing before development, constrain the picker to the codes valid for that asset and that project, and run a monthly reconciliation that compares what the work order system posted against what the ledger received.

What happens when storm events and records obligations are not covered?

Two gaps sit outside normal operations and both are expensive in a way that never appears as a line item.

Storm events are the first. Systems designed around a steady state queue collapse when hundreds of requests arrive in a few hours, so dispatchers abandon them and the event goes unrecorded. An event mode fixes it: one toggle changes intake, dispatch layout and close out requirements for a declared event, requests group by geographic cluster, crews receive a route rather than a ticket, and close out drops to a photo and a timestamp because during a storm you capture rather than classify. Every record silently carries the fields a claim will need. Build it before you need it, because the six days a year it matters are not days you can build on.

Records obligations are the second. Your work orders are public records, citizen contact details are inside them, and a records request will land. That shapes retention, redaction and export, and it is far cheaper as a design decision than as a scramble. The same applies to accessibility on the citizen facing portal, which is a requirement for a public body rather than a preference, and which touches every form and every status page rather than being a styling pass at the end.

Should you build custom or configure Cityworks or Cartegraph instead?

Plenty of departments should configure rather than build, and we would say so to a city manager. Cityworks and Cartegraph are genuinely good products if you are a median shaped department with one primary division, reasonably clean Esri data, and no structural oddity in how you operate. Both integrate with Esri properly and both encode a great deal of municipal maintenance workflow you would otherwise rediscover.

Stay bought in three specific situations. If your county or state has standardised on one of them, you will spend two years fighting procurement and information technology for an exception, and that fight costs more than the gap. If your asset data is genuinely bad, custom software will not clean it, it will render bad data faster and more expensively, so fix the data first and revisit. And if the real problem is that nobody uses the system you have, a new system does not solve an adoption problem, it resets the clock on it.

Build when your operation is structurally unusual: a combined utility, a shared services agreement with neighbouring townships, a snow operation that dominates your winter, or an internal fleet shop that bills other departments. Off the shelf products are built for the median department, and if you are not the median then every year of configuring around the gap is a year of paying software to make the job harder. The second signal is financial: when your licence plus the consultant you keep on retainer to maintain configurations passes roughly eighty thousand dollars a year, you are already funding a build and merely renting the result.

How do hidden costs get into a public works quote?

Offline first mobile is the single biggest multiplier and it is routinely priced as a feature. A truck in a river valley or a vault has no signal, and a sync engine that survives two crews editing the same asset offline for six hours is genuine engineering. A team that answers with last write wins will discover the problem in month five when it is expensive.

Esri integration cost scales with how clean your geodatabase is rather than with how many layers it has. No stable asset identifiers means a reconciliation phase before application work, and that phase is analyst time on your side as much as developer time on theirs.

Financial system integration is usually a knowable cost, but only once finance commits to a chart of accounts and activity mapping in writing, and that conversation takes longer than the code. Departments that start development before it is settled pay for the rework.

Then the ones nobody prices: records retention and redaction, accessibility on the citizen portal with testing rather than assertion, procurement documentation your purchasing agent can process, and training across divisions that work different hours.

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

The builds that work make recording the truth easier than not recording it. That is the whole discipline. When a crew leader on hour fourteen of a main break faces an eleven field close out form, the record does not get created and the asset stays wrong forever. A three question close out with a photo produces better data than a thorough form nobody completes, and it is the design decision that separates a system crews use from one they route around.

The second marker is that geography is captured automatically rather than asked for. Every work order stamps ward, council district, pavement section, sewer basin and snow route at creation by spatial join from your own layers. Nobody types it, so nobody omits it, and the council question about response times by ward becomes a saved view rather than a week of reconstruction.

Finally, get source code ownership in the contract with a repository handover clause, confirmed by your city attorney before signing rather than at go live. Many agencies sign language that quietly leaves the vendor holding the code, which means changing vendors means rebuilding. At Digital Heroes the client owns the repository and the infrastructure accounts from the first commit, and for a public body that is the baseline rather than a concession.

Research & sources

The evidence behind this guide

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

  1. 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) →
  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. 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) →
  4. In PMI's 2014 Pulse of the Profession report on requirements management, inaccurate requirements management is cited as a leading cause of project failure, with 47% of unsuccessful projects failing to meet goals due to poor requirements management. Source: Project Management Institute (PMI) (2014) →
Kai W. · UX Designer · Sydney

Kai works on user experience at Digital Heroes, doing the groundwork that makes a product usable: flows, wireframes, content order and the small revisions that follow testing. Much of it is unglamorous and decides whether people finish a task. His posts explain UX in terms buyers can act on.

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

FAQ

Frequently asked questions

Our asset identifiers do not match between GIS and our work order history. Where do we start?
With a reconciliation phase before any application code is written. Produce a match report between historic work orders and current features, then classify the unmatched into duplicates, retired assets and genuine gaps, and make a deliberate decision per class. This is unglamorous analyst work and it is the difference between a system that can tell you lifetime cost per asset and one that just stores tickets faster. Departments that import wholesale and plan to sort it out later almost never sort it out.
What happens when two crews edit the same asset offline and both sync at the end of shift?
That is the question to ask a developer before you sign anything, because the answer reveals whether they have built field software for an environment where the network is genuinely absent. Last write wins is not an acceptable answer, since it silently discards a crew's work. A workable design detects the conflict, keeps both versions with their timestamps and authors, applies field level merging where the edits do not overlap, and routes genuine conflicts to a supervisor queue rather than resolving them invisibly.
Can we keep Cityworks and build only the intake layer on top?
Yes, and it is often the cheapest first move. A channel agnostic intake queue that normalises phone, email, portal, text and council forwards into one shape, geocodes against your own street centreline file rather than a generic match, deduplicates repeat reports on the same asset within a distance and time window, and then creates the service request in Cityworks gives you most of the citizen facing benefit without a replacement decision. It also proves whether the dedupe and geocoding actually work on your data before you commit further.
How do we get ward and basin onto every work order without asking crews to enter them?
By spatial join at creation. When a work order is created with a location, the system resolves ward, council district, pavement management section, sewer basin and snow route from your own layers and stamps them on the record. Nobody types them, so nobody omits them or picks the wrong one, and the geography is consistent across every division. This is cheap to build at the start and painful to retrofit, because every historic record then lacks the fields your comparisons depend on.
Our preventive maintenance completion sits around half. Will new scheduling software fix it?
Only if it schedules against real crew capacity rather than a calendar. Generic maintenance tools generate work on a fixed interval regardless of whether the crew has any productive field hours left that week, so the surplus rolls into a backlog nobody reads and the assets furthest from the yard are the ones that get skipped. A scheduler that knows trailing actual completion hours, routes assets on the same loop to one crew on one day, and re plans when reactive work eats a day is what moves the number.
How do we handle voicemail and council forwards without forcing residents into a portal?
Accept every channel and normalise it rather than trying to close channels. Phone, email, text, portal and forwarded constituent complaints all land in one queue with the same shape, and an extraction step proposes a category, an asset match and a priority from the free text so the dispatcher confirms rather than types. Telling residents to use the portal is a policy that has never survived contact with a caller who wants to speak to a person, and building around that reality is cheaper than fighting it.
What do public records obligations require from the system?
Retention aligned to your records schedule, the ability to export a defensible set of records for a request, and a redaction path for citizen contact details that appear inside work order text. Design it in rather than discovering it when a request lands, because retrofitting redaction into free text fields that were never structured is slow and error prone. The citizen facing portal carries accessibility obligations as well, and those need testing with assistive technology rather than an automated scan alone.
Do we own the code, and can we change vendors later?
Only if the contract says so explicitly, with a repository handover clause and a named transfer condition, confirmed by your city attorney before signing. Plenty of agencies sign work for hire language that quietly leaves the developer holding the code, which means changing vendors means rebuilding from scratch. At Digital Heroes the client owns the repository and the cloud accounts from the first commit. For a public body this is the baseline expectation, not a negotiating position.
Does it matter which tech stack the agency wants to use?
Yes, but not in the way most buyers expect: the goal is boring, popular technology such as React, Node.js or Python, and PostgreSQL, because any future team can maintain it and hiring a replacement developer takes days, not months. The red flag is an agency-proprietary framework or an unusual language, which welds you to that one vendor no matter what your contract says about code ownership. A useful test: could you find three freelancers fluent in this stack within a week? If not, push back.
How does custom field service software work when technicians have no cell signal?
Properly built field software stores the technician's entire day on the device, including job details, forms, photos, signatures, and parts, then syncs automatically when signal returns. The hard engineering is conflict resolution: deciding what happens when a dispatcher reassigns a job while the technician is working it offline. That logic has to be designed before the build starts, because retrofitting offline into an app that assumed a connection is close to a rewrite.
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.
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 owns the code when an agency builds my software?
You should, completely, through a written intellectual property assignment that transfers everything on final payment; without that clause, copyright stays with whoever wrote the code by default. Insist that the repository lives in your own GitHub organization from day one and that hosting, domains, and third-party accounts are registered to you. Also check for licenses to the agency's proprietary frameworks buried in the contract, because those can make switching vendors practically impossible even when you own your own code.
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.
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.
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.

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?