Problems & solutions · Internal Tools

Energy Efficiency Program Management Software Problems: The 7 That Sink Your Realisation Rate, and How to Avoid Them

Energy Efficiency Program Management Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure is a measure catalogue stored as a lookup table that gets edited in place. The moment a deemed savings value is updated for the new programme year, every historical claim silently re-points at the new number and reproducing what you originally claimed becomes impossible. When the independent evaluator asks which value applied at claim time, the answer is an archaeology project rather than a field, the realisation rate comes back below one, and for an implementer paid on verified savings that adjustment comes straight out of margin on work you have already delivered and already paid allies for.

Why does a programme project get scoped around forms and workflow so often?

Because that is what the day looks like from the outside. Applications arrive, get screened, sampled for inspection, approved and paid, so the proposal describes an intake form, a review queue, a document upload and a status board. All of that is necessary, none of it is the product.

The product of a programme management system is not the rebate cheque. It is the defensible record behind it. Every claimed measure with quantity, the deemed savings value applied, the version of the technical reference manual that value came from, the install date, the site, the inspection outcome and the incentive paid, all with lineage. That is what the evaluator asks for in the autumn, and everything else in the system exists to produce it correctly.

The scoping defence is to specify the evaluation export first and make the developer design backwards from it. Ask what a per measure row looks like and whether they have ever built one. If the answer describes a status report rather than a row carrying quantity, deemed value, catalogue version, install date, inspection outcome and incentive with lineage, they have quoted you a case management tool with rebate vocabulary attached, and the evaluation cycle will be the moment you find out.

What goes wrong when you migrate historical claims and a changing measure list?

This is the workstream that decides whether your first evaluation under the new system goes well, and it is routinely treated as a data load.

The measure list is the hard part. Codes get retired between programme years, values change by regulatory order and sometimes mid year, and baselines get revised. Historical claims reference codes that no longer exist and values that were never recorded alongside them, so migrating them into a current catalogue quietly restates your own history. A project submitted in December and installed in January may fall under a different version depending on the rule your programme operates under, and that rule has to be encoded rather than remembered.

Custom projects are the second problem. Their savings numbers reference engineering workbooks that exist as email attachments in three versions across two inboxes, and the one referenced in the tracking system is not obviously the approved one. There is no automated way to resolve that. Somebody has to decide, project by project, which calculation stands.

What to require: a versioned catalogue built before any historical import, each claim migrated with the version identifier that governed it or explicitly flagged as unverifiable, and a named owner for the custom project reconciliation with a time box. Do not let unresolved history flow into the new system unlabelled, because at evaluation an unlabelled record and a wrong record are treated the same way.

Why do the utility and payment integrations break after launch?

The two integrations that carry the most operational value are also the two that decay quietly.

  • Customer information system eligibility. Checking an account against the utility system turns a manual verification into an instant one, and it is worth doing early. It breaks when rate classes are reorganised, when premise identifiers change after a service upgrade, or when an account transfers and the eligibility answer changes without the application being rechecked.
  • Address and premise matching. The same site appears as a street address, a suite number and a utility premise identifier, and normalisation rules that worked for one service territory fail on the next.
  • Payment and tax handling. Banking details go stale, participation agreements lapse, and tax reporting obligations for incentives paid to allies rather than customers sit between the programme team and finance. Reconciling those two at year end is a recurring fire that nobody owns.
  • Multi utility differences. An implementer serving several clients inherits several interfaces, several eligibility rules and several reporting formats, and a change at one client should not be able to disturb the others.

The defences are an adapter per utility rather than one generic connector, eligibility answers stored with the date and the version they were obtained under, and a scheduled recheck for applications that sit in the pipeline long enough for the answer to change.

What happens when evaluation lineage and inspection evidence are not covered?

These are the two gaps that produce low realisation rates, and both look like nice to haves during scoping.

Lineage first. Quantities revised after inspection without retaining what was originally claimed is one of the most common findings there is, because the evaluator cannot tell what was claimed versus what was verified. The correct design keeps both, with the revision recorded as a new value carrying an author, a date and a reason, and the original preserved. The same applies to any post approval adjustment. Evaluators can only verify what you can evidence, so a gap in the chain becomes an adjustment rather than a question.

Inspection evidence is the second. Photographs, measurements, nameplate captures and sign off are the substance of a verification, and if they are collected on paper or in a separate app they arrive detached from the claim. Worse, inspections happen in basements, mechanical rooms and rural sites with no signal, so an app that assumes connectivity loses a morning of an inspector's work and destroys adoption faster than any missing feature.

What to require: offline capture with deferred sync and defined conflict handling, evidence attached to the specific measure line rather than to the project generally, and revisions as append only records. None of this is exotic engineering. It fails when it is written as guidance rather than as a rule.

Should you build custom or configure what you already own?

Configure, if you run a single residential rebate programme with a stable measure list and modest volume. Clean Power Research PowerClerk will run it, it is genuinely configurable for forms, workflow and document collection, and it is the workhorse of this category for good reason. The configuration cost is far below a build and there is nothing distinctive about your programme to protect.

Do not build either if your programme is likely to be re-bid to a different implementer inside two years and the utility holds the tracking obligation. Ownership of the system should follow ownership of the reporting duty, and building a platform you will hand over is misplaced capital.

Uplight is a sensible partner for the customer facing and acquisition end of a residential programme, particularly engagement and marketplace journeys. Where it stops is that it is not primarily a back office administration system, so inspection, payment and evaluation machinery stay underserved if you rely on it for those.

The strain on PowerClerk shows in two verifiable places. Its centre of gravity is not the savings engine, so versioned measure catalogues tied to reference manual sections tend to be worked around rather than expressed natively. And substantial configuration changes route through the vendor or a trained administrator, which matters when your measure list changes by regulatory order with weeks of notice. If both of those describe your year, that is the line.

How do hidden costs get into the quote?

Four places in this domain.

  • Programme count. Each programme carries its own measure set, eligibility rules and reporting format. A quote written for two does not scale linearly to six.
  • Custom projects. They add an engineering review workflow with its own approvals and artefacts, and they are frequently assumed to be covered by the prescriptive path.
  • Multi tenancy. An implementer serving several utilities needs genuine data separation while its own operations team works across all clients. That is architecture, not configuration.
  • Offline field capture. Deferred sync with conflict handling is a specific engineering problem, and a developer who has not solved it before will underquote it and deliver something inspectors abandon.

What holds the number down is launching with your two highest volume prescriptive programmes and leaving custom projects on the existing process until the catalogue and the evaluation export are proven in a real cycle.

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

The builds that work version the measure catalogue properly and store the version identifier on every application line rather than the value alone. Each measure carries effective dates and a citation to the reference manual section it came from. Then a claim from two programme years ago reproduces exactly, and the evaluator's question has a one line answer. This single design decision is the largest determinant of how painful an evaluation cycle becomes.

They capture provenance for custom projects without trying to replace the engineering. The measurement and verification plan, each data collection event, the reviewer approval with identity and date, the calculation file with a hash so the version is unambiguous, and the resulting savings figure, all linked. Engineers keep their spreadsheets. The system keeps the chain.

They track commitment rather than only spend. Applications approved but unpaid, reservations that expire, and pipeline that has been told it qualifies, against category level thresholds. Programmes that watch spend alone find in the autumn that commitments already exceed budget, and the abrupt suspension that follows damages the ally relationships the programme depends on.

And they settle ownership in writing before kickoff. You should own the repository and the infrastructure accounts. At Digital Heroes the client owns the code from the first commit. One thing worth doing this week regardless of what you build: take twenty claims from your last programme year at random and try to reproduce each savings number from your own records. However many you cannot reproduce is the size of your exposure at the next evaluation.

Research & sources

The evidence behind this guide

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

  1. Almost half of all the activities people are paid almost $16 trillion in wages to do in the global economy have the potential to be automated by adapting currently demonstrated technologies. Source: McKinsey Global Institute (2017) →
  2. The median annual wage for U.S. software developers was $133,080 in May 2024, and employment is projected to grow 15% from 2024 to 2034 - a core input to any in-house build-vs-buy TCO model. Source: U.S. Bureau of Labor Statistics (2024) →
  3. In the Flexera 2025 State of ITAM report, respondents reported roughly 33% of SaaS spend is wasted, underscoring how paying for off-the-shelf seats and tiers that go unused erodes the supposed cost advantage of generic SaaS. Source: Flexera (2025) →
  4. An analysis of enrollment and completion data for 221 MOOCs (Katy Jordan, published in the International Review of Research in Open and Distributed Learning, IRRODL, 16(3), 2015 - not the Journal of Distance Education) found completion rates ranging from 0.7% to 52.1%, with a median completion rate of 12.6%, and completion negatively correlated with course length (longer courses had lower completion rates) - underscoring how unsupported self-paced online courses struggle to finish learners. Source: Journal of Distance Education (via ERIC / Katharina Jordan) (2015) →
Aaradhya R. · Senior Backend Engineer · Python · Delhi

Aaradhya builds Python backends at Digital Heroes, from APIs and scheduled jobs to data processing behind reporting and automation features. Her posts suit readers trying to understand what sits between a business process they want automated and software that can actually run it.

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

FAQ

Frequently asked questions

Why did our realisation rate come back low?
Most often it is a records problem rather than an engineering one. Retired measure codes with no version history, custom project savings whose derivation sits in an emailed workbook, and quantities revised after inspection without retaining what was originally claimed. Evaluators can only verify what you can evidence, so gaps in lineage become adjustments regardless of whether the work was done correctly. For an implementer paid on verified savings, those adjustments come directly out of margin.
How do we keep claims reproducible when the measure list changes every year?
Version the catalogue with effective dates and a citation to the reference manual section, then store the version identifier on every application line rather than the value alone. Updating a lookup table in place silently re-points historical claims at new values and makes reproduction impossible. Encode the rule that decides which version governs a project submitted in one year and installed in the next, because that rule currently lives in somebody's memory.
Should we migrate historical claims into the new system?
Only with the version that governed them attached, or explicitly flagged as unverifiable. Historical records reference codes that no longer exist and values that were never stored alongside them, so an unlabelled import quietly restates your own history. At evaluation an unlabelled record and a wrong record are treated the same way, so labelling is the whole of the protection. Build the versioned catalogue before any import rather than after.
Do field inspectors really need offline capability?
Yes, and it is not negotiable. Inspections happen in basements, mechanical rooms and rural sites with no signal, so the app has to capture photos, measurements and sign off locally and sync later with sensible conflict handling. Developers who have not built offline capture before tend to deliver something that loses a morning of an inspector's work, and that destroys adoption faster than any missing feature. Attach evidence to the specific measure line, not to the project generally.
How do we detect the same equipment claimed twice?
Model premises and equipment properly, because detection depends on identity rather than on rules. Address normalisation matters more than people expect, since the same site appears as a street address, a suite and a utility premise identifier. Equipment serial numbers are the strongest signal where they are captured. Cross programme checks require a shared premise key, which per programme spreadsheets structurally cannot provide no matter how carefully they are maintained.
What is the difference between tracking spend and tracking commitment?
Spend is what has been paid. Commitment is what has been approved, reserved or promised and not yet paid. Programmes that watch spend alone discover in the autumn that commitments already exceed the annual budget, and the abrupt suspension that follows damages the trade ally relationships the programme depends on. A commitment ledger with expiring reservations and category level thresholds turns that into a managed slowdown months earlier.
Is PowerClerk enough for our portfolio?
For many programmes it is, particularly for forms, workflow and document collection, and it deserves its position in this category. The strain appears in two places you can check against your own year. Versioned measure catalogues tied to reference manual sections tend to be worked around rather than expressed natively, and substantial configuration changes route through the vendor or a trained administrator, which is difficult when your measure list changes by order with weeks of notice.
Should an implementation contractor build its own platform?
If you are paid on verified savings, the accuracy of your tracking data is directly your revenue, which is the strongest case for owning the system, and it is increasingly visible in bids because utilities ask what platform you will administer on. The case weakens sharply if the utility holds the tracking obligation and the contract is likely to be re-bid quickly, because ownership of the system should follow ownership of the reporting duty.
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.
What should I prepare before contacting a software development agency?
A one-page brief beats a 40-page requirements document: the business problem in plain words, who will use the system, the 5 to 10 workflows it must handle, the tools it must connect to, and your budget range and deadline driver. You do not need wireframes, a specification, or technical vocabulary; producing those is the agency's job during discovery. Stating a budget range up front is the single best move, because it gets you honest scoping instead of a quote engineered to win the meeting.
Who owns the code when an agency builds our internal tool?
You should, outright, with full IP transfer in the contract and the code delivered to a repository you control, such as your own GitHub organization. Digital Heroes transfers complete ownership on final payment as standard practice, and any agency that keeps the code or licenses it back to you is building a dependency you will pay for later. Confirm you also own the hosting, domain, and database accounts, since many of the vendor disputes Digital Heroes gets called into involve infrastructure registered under the agency's name.
Will a custom internal tool scale as our company grows?
Yes, provided it sits on a standard stack with a real database: PostgreSQL comfortably handles millions of records, and adding users costs hosting pennies rather than per-seat fees. The real scaling risks are organizational, not technical: new departments want features, processes change, and the tool needs a budget line to evolve. Set aside a small quarterly improvement budget instead of treating launch as the finish line, and the tool stays useful for a decade rather than getting rebuilt every two years.
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.
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.
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.
Can we start on Airtable or Retool now and move to custom software later?
Yes, and it is often the smartest sequence: run the workflow on Airtable or Retool for 6 to 12 months to learn what you actually need, then go custom once the process stabilizes. The no-code version becomes free requirements documentation, and its data exports cleanly into a custom database. The one risk is waiting too long, because teams stack automations and workarounds until migration becomes a project of its own, so set a concrete trigger in advance, such as hitting Airtable's 50,000-record Team plan cap.
How much does a custom internal tool cost to build?
Most custom internal tools cost $8,000 to $40,000 to build, based on Digital Heroes delivery data across 2,000+ client projects. A single-purpose tool like an approval dashboard or inventory tracker sits at the low end, while a multi-department platform with role-based access and several integrations pushes past $40,000. The three biggest cost drivers are the number of user roles, the number of systems the tool must connect to, and custom reporting requirements.
How do we migrate years of spreadsheet or Airtable data into a new internal tool?
Migration is a standard part of the build, not a separate project: the agency writes import scripts that clean, deduplicate, and map your existing rows into the new database. On typical spreadsheet and Airtable histories, Digital Heroes budgets 3 to 10 extra days, most of it spent resolving inconsistencies like the same customer spelled four different ways. The safe sequence is a trial migration first, a review of flagged conflicts with your team, then final cutover over a weekend so nobody loses a working day.
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?