Problems & solutions · Inventory Management

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

Street Lighting Management Software software overview illustration showing common problems and fixes.
The short answer

The most expensive failure in street lighting software is building a clean looking asset register on top of data nobody verified. The luminaire count comes from a contractor closeout spreadsheet, the wattages come from a utility file that was never updated when a corridor was converted, and the new system inherits both. You then pay an unmetered bill computed from that same wrong count, month after month, and you cannot challenge it because your own register agrees with the utility. A first release with the register, a field survey app and billing reconciliation runs $50,000 to $110,000 over 10 to 14 weeks in our delivery experience, and it usually pays for itself in the first two billing cycles once the counts are real.

Why does the asset register get scoped as a data import so often?

Because there appear to be three sources and each one looks authoritative. Public Works has a geographic information system layer with pole locations. The utility sends a billing file with fixture counts by wattage class. The contractor who ran your light emitting diode conversion handed over a closeout spreadsheet. A supplier looks at that and quotes a load and merge.

Then you compare them. The conversion corridor shows as 250 watt high pressure sodium in the utility file because the change form used the old fixture code. A subdivision dedicated to the city three years ago appears in no file at all. Three poles knocked down and never replaced are still billed. Your layer uses your identifiers, the utility uses theirs, and the field has neither painted on it.

The fix is to design the register around uncertainty instead of pretending it away. Every record carries a source of truth flag and a date, so a fixture confirmed by a field survey last year is visibly different from one inherited from a closeout file. Nothing that feeds a billing dispute or a savings report is allowed to rest on an unconfirmed record. Then plan a field survey as part of the project, prioritised by the corridors where the sources disagree, and run it with the mobile app you just built rather than treating it as a surprise afterwards.

What goes wrong when the utility billing file is matched to your GIS layer?

The identifiers do not match, and that is the whole problem. The utility's file is keyed on their pole or account references. Your geographic information system layer is keyed on yours. Neither key exists on the other side, and a straight join returns almost nothing.

Suppliers who have not done this before propose a lookup table. On a real estate of ten thousand luminaires that table cannot be built by hand, and the residue after any automated pass is where the money is: the records that do not match cleanly are exactly the ones that were changed, added or removed without paperwork.

The other trap is the one to many shape. A pole can carry two luminaires on different circuits, one of them a decorative fixture the city owns and one a cobra head the utility bills. A model that assumes one light per pole quietly corrupts your counts in both directions.

The fix is spatial matching first, fuzzy identifier matching second, and a human review queue for whatever is left. Match on location within a tolerance, then on identifier similarity, then present the unresolved set to a person with a map and a photo. Expect a residue of a few percent and budget staff time for it. Ask any supplier how they handle unmatched records before you ask about anything else, because that answer tells you whether they have seen a real utility file.

Why do controller vendor integrations break after launch?

Because they were built as a dependency rather than an adapter, and because your estate will not stay on one vendor. Cities buy controllers in waves, so a typical estate carries nodes from two or three suppliers plus thousands of fixtures with no node at all. The failures follow a pattern.

  • Authentication and rate limits differ per vendor, and a build that hard codes one vendor's behaviour breaks when the second arrives during a transition.
  • Alarm semantics differ. One vendor's lamp fault is another's communication failure, and if you pass raw alarms into work orders your crews get dispatched for the wrong thing.
  • The nodes only see themselves. A control management system knows nothing about the unnoded fixtures, so any report built purely on controller data understates your estate.

The fix is to normalise into your own internal model before anything else consumes it. Each vendor gets an adapter, alarms and status map to your schema, and the work order flow never learns whose node reported the fault. The TALQ interoperability standard helps on the control interface and is worth asking about, but standardising control does not give you a register, a bill check or a work order. Treat controller integration as phase two: the register, reconciliation and work orders deliver value with zero connected nodes.

What happens when outage intake and work orders are not joined up?

You get the same dark pole reported four times and fixed once, slowly. Residents report through a 311 platform, a web form, a phone call to a council office and sometimes a social post. Controller alarms land in a vendor portal the maintenance crew does not open. Crews notice faults on patrol and mention them.

The report itself is usually unusable: the light is out near the corner of Elm and Fifth describes four poles. A crew is dispatched with no pole identifier, spends time locating the right one, finds it needs a part they did not bring, and returns another day. Meanwhile a second ticket has been raised for the same pole and someone will close one of them as a duplicate without checking which.

This is not only a service quality issue. Outage duration on a street the city owns becomes a liability conversation after a night time collision, and the question in a deposition is when you knew and what you did. A ticket in one system, an alarm in another and a work order in a third is not an answer.

The fix is to deduplicate at the pole, not at the ticket. Every channel attaches to one issue on a specific pole, with additional reporters added as notification subscribers. The crew receives a work order carrying the pole identifier, coordinates, fixture type, expected part and last work history, and closes it in the field with a photo.

Should you build custom or configure what you already own?

Plenty of agencies should not build, and the test is simple. If the utility owns the poles and the lights and maintains them under a full service tariff, and you have no conversion programme underway, your best move is a data request and a sample audit on foot, not a system. If you own fewer than roughly 1,500 lights and your complaint volume is manageable, a well maintained geographic information system layer plus your existing work order system is proportionate, and the money is better spent on lamps.

If you already run Itron Streetlight.Vision, use it for what it is good at. It is a mature control management system that supports nodes from several vendors, which genuinely helps a mixed estate. Signify Interact City is a sensible default when your luminaires and controllers are Signify. Telensa, Ubicquia and Tvilight all deliver competent control and analytics on the devices they sell. Configure those for control, scheduling, dimming and fault reporting, and do not rebuild any of it.

What none of them do is reconcile an unmetered billing file against a city owned asset register, because that reconciliation needs your tariff, your layer and your fixtures, including the ones with no node. Build when you own the assets and pay an unmetered tariff you cannot verify, when you carry a savings guarantee you cannot substantiate, when you run controllers from more than one vendor, or when your inventory came from a conversion contractor and nobody has independently confirmed it.

How do hidden costs get into the quote?

Through work that is real but does not look like software.

  • The field survey. If the register is going to be trustworthy, somebody walks or drives the estate. This is labour, it is not optional, and it belongs in the project budget rather than arriving as a surprise in month four.
  • Data reconciliation. Merging a geographic information system layer, a utility file and a closeout spreadsheet into one register with confidence flags is analyst work with a human review queue attached.
  • Each controller vendor is its own adapter, with its own authentication, its own alarm vocabulary and its own test cycle.
  • Integration with 311, Cityworks or Accela. Residents will keep using the channel they know and crews will resist a second work order system, so a two way sync is usually mandatory rather than optional.
  • A public facing outage map, which brings accessibility conformance and a different security posture.
  • Tariff changes. When the utility revises the tariff sheet, your expected charge calculation has to follow, and that is a recurring maintenance cost.

Ask for the quote split into register, reconciliation, work management and each integration named separately.

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

Starting with the piece that pays. Register plus billing reconciliation plus work orders is the value core and it works with zero connected nodes. Cities that lead with controller integration spend the first four months on vendor interfaces and still cannot tell council what they own, which is the question they were actually asked.

The second marker is that the variance report is a first class output, not a screen. What gets bills corrected is a document listing what is billed but not in your register, what is in your register but not billed, and what is billed at a wattage your register disputes, with location evidence attached and the expected charge computed from the tariff schedule. Hand that to the utility and the conversation changes. Show them a dashboard and it does not.

When vetting a developer, ask how they would reconcile the billing file when the identifiers do not match. A lookup table is the wrong answer. Ask how they model a pole with two luminaires on different circuits, because your estate has them. Ask which systems they have actually integrated by name, on both the controller side and the city side, since Cityworks and Accela are known quantities to people who have done the work.

Then settle ownership in writing before kickoff: repository, database and cloud accounts. At Digital Heroes the client owns the code from the first commit. A lighting register is a public asset record that will outlive several vendor relationships and may be cited in a claim years later, so it should not sit in infrastructure a supplier controls.

Research & sources

The evidence behind this guide

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

  1. McKinsey estimates that digitizing the supply chain (Supply Chain 4.0) can cut lost sales by up to 75%, reduce inventories by up to 75%, and lower supply chain operational costs by up to 30%, with up to 30% lower transport and warehousing costs. Source: McKinsey & Company (2016) →
  2. Inventory carrying cost commonly runs about 20% to 30% of inventory value, covering capital cost, storage/warehousing, insurance, taxes, handling, shrinkage, and obsolescence - a recurring cost that better inventory and warehouse software aims to reduce. Source: APQC (2023) →
  3. Only 16% of respondents said their organizations' digital transformations had successfully improved performance and equipped them to sustain gains over the long term; even in digitally savvy industries such as high tech, media, and telecom, self-reported success rates did not exceed 26%. Source: McKinsey & Company (2018) →
  4. 73% of surveyed businesses now use a headless architecture (up nearly 40% since 2019), and 98% of those not yet using it are evaluating or planning to evaluate headless within 12 months, with 82% saying it makes delivering consistent content easier. Source: WP Engine (2024) →
Hudson R. · Project Manager · APAC · Sydney

Hudson coordinates APAC projects at Digital Heroes: running stand ups, tracking tickets, chasing decisions and keeping clients informed without burying them in detail. Much of delivery is simply making sure the right question reaches the right person quickly. His posts show what a well run project feels like from inside.

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

FAQ

Frequently asked questions

We just finished an LED conversion. Why can we not trust the inventory we were handed?
Because closeout spreadsheets record what the contractor intended to install, not what the utility's billing file was updated to reflect. The common gaps are wattage classes never changed because the change form used the old fixture code, subdivisions dedicated to the city and never added, and knocked down poles still on the bill. Build the register with a source of truth flag so an unconfirmed record is visibly different from a field verified one.
How do we match the utility billing file to our GIS layer when the identifiers differ?
Spatial matching within a tolerance first, fuzzy identifier matching second, and a human review queue for the residue. That leftover set is not a nuisance, it is the valuable part, because unmatched records are usually the ones changed, added or removed without paperwork. Any supplier who proposes a straight lookup table has not opened a real utility file for an estate of this size.
Do we need controller integration in the first release?
Usually not, and leaving it out is the single easiest way to keep the budget down. The register, the billing reconciliation and the work order flow deliver value with zero connected nodes, and they answer the question council actually asks, which is what do we own and what are we paying for. Add vendor adapters afterwards, normalised into your own alarm model so the work order flow never depends on whose node reported the fault.
Why do we keep getting duplicate outage tickets for the same pole?
Because deduplication happens at the ticket rather than at the asset. Reports from 311, a web form, phone calls, controller alarms and crew patrols should all attach to one issue on a specific pole, with extra reporters added as notification subscribers. Crews then get one work order carrying the pole identifier, coordinates, fixture type and last work history instead of a street corner description that covers four poles.
Can we prove our guaranteed LED savings without metering?
Savings on unmetered circuits are verified by calculation, so the entire answer rests on a trustworthy fixture count and wattage assignment. Model connected load by wattage class against the burn hours on the tariff schedule, or against actual controller run time where you have it, and compare to the documented pre conversion baseline. Without a field verified register you are restating the contractor's closeout spreadsheet and calling it verification.
Is Itron Streetlight.Vision or Signify Interact City enough on its own?
For control they are strong, and if your estate matches their hardware you should configure rather than rebuild. Their boundary is scope: they manage the fixtures that carry a controller, and most city estates have thousands that do not. They are also not designed to reconcile an unmetered billing file against a city owned asset register, which is where the recoverable money usually sits.
What costs do cities most often leave out of the budget?
The field survey, which is labour rather than software but determines whether the register is trustworthy; the reconciliation work of merging three disagreeing sources with confidence flags; one adapter per controller vendor; a two way sync with 311, Cityworks or Accela, since residents and crews will not abandon the systems they know; a public map with accessibility conformance; and ongoing maintenance when the utility revises the tariff sheet.
How can we tell within a week whether we have a real problem?
Compare your current geographic information system lighting layer against your most recent utility billing file on count and wattage class by corridor. If the totals differ by more than a rounding error, or if any converted corridor still shows its pre conversion wattage, you have a billing exposure and a data problem at the same time. That single comparison usually decides whether a project is worth scoping.
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.
What are the most common mistakes companies make on inventory software projects?
Three failures dominate: quoting from a one-line brief so real requirements arrive later as change orders, skipping concurrency testing so the first peak season produces oversells, and going live without running the new system in parallel with the old one. All three are process failures rather than coding failures. A two-week parallel run where both systems track the same stock catches most launch disasters before they cost money.
How many people does it take to build inventory management software?
A typical build runs with 4 to 6 people: a project lead, one or two backend developers, a frontend or mobile developer for the scanning interface, and a QA engineer. The backend carries most of the effort, because stock logic and integrations are where these systems succeed or fail. Be cautious of a one-person team quoting a multi-warehouse, multi-channel build.
What should I have ready before I contact an agency about inventory software?
Bring four things: your SKU count and how stock is identified (plain SKUs, or lots, serials, and expiry dates), every channel and system the software must talk to, a plain-language walkthrough of one order from purchase to shelf to shipment, and a sample export of your current data. With those, an agency can produce a real quote in days instead of a placeholder that doubles later. A one-line brief gets you a demo-sized quote for an operations-sized problem.
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.
How many SKUs are too many for managing inventory in Excel or Google Sheets?
Excel and Google Sheets typically start failing past roughly 1,000 SKUs, more than one sales channel, or more than two or three people editing stock levels. The failure mode is not the row count but stale, conflicting edits that cause oversells and phantom stock. If someone on your team spends hours each week reconciling the sheet against the shelf, you have already outgrown it.
How do I vet a software agency for an inventory project specifically?
Ask three technical questions before discussing price: how they stop two simultaneous orders claiming the same last unit, whether stock is stored as an append-only movement ledger or a single overwritable quantity field, and how they test channel sync under load before launch. A team that answers fluently has built inventory systems before; one that steers the conversation to screens and design has not. Then ask for a reference from a client whose system has survived at least one peak season.
What does upkeep on a custom inventory system cost per year?
Budget 15 to 20 percent of the build cost per year, so a $50,000 system runs roughly $8,000 to $10,000 annually across Digital Heroes maintenance contracts. That covers hosting, security patches, integration updates when Shopify or Amazon change their APIs, and small improvements. Skipping it is how a channel sync quietly breaks in month nine and corrupts your counts.
Can custom software connect to the tools we already use, like QuickBooks, Stripe, and Google Workspace?
Yes, and connecting your existing tools is one of the main reasons to build custom: mainstream platforms like QuickBooks, Stripe, Shopify, and Google Workspace all publish documented APIs. Budget 1 to 3 weeks of work per integration depending on API quality and how much data flows in both directions. Ask any vendor whether they have integrated with your specific tools before, because quirks like QuickBooks' OAuth token handling and API rate limits get learned on someone's project, and it should not be yours.
Why do agencies charge for a discovery phase instead of quoting for free?
Because an accurate quote requires real work: mapping your workflows, finding the edge cases, and writing a specification, which typically takes 1 to 3 weeks and costs $2,000 to $10,000 at Digital Heroes depending on system complexity. You leave discovery owning a written spec and a fixed price you can take to any vendor, so the money is not locked into one agency. Free estimates are guesses, and the guess usually becomes your budget overrun six months later.
How does moving our data from spreadsheets or Fishbowl into a new system work?
The agency exports your current records, maps fields to the new schema, deduplicates SKUs, and runs a trial import that you verify against physical counts before cutover. Plan for one to three weeks, and expect to find discrepancies, because migration always exposes drift the old system was hiding. The safest cutover happens right after a physical stock take, so the new system starts from a verified baseline.
Who can build a custom inventory management software system?

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