Problems & solutions · Custom Software

Industrial Pretreatment Software Problems: The 7 That Cost Real Money, and How to Avoid Them

Industrial Pretreatment Program Software code editor and API illustration showing common problems and fixes.
The short answer

The most expensive failure in this category is building a results database instead of a compliance system, and you can spot it from one question: how does the software know which limit applied to a sample taken on a given date at a given monitoring point? If limits live inside a stored permit PDF rather than as effective-dated rules, every violation determination stays a human reading a document, significant noncompliance is still computed in a spreadsheet each February, and your programme audit produces the same recordkeeping findings it produced last time. The build cost was real, between $55,000 and $120,000 for a first release, and the finding that put your plant's own discharge permit at risk did not move.

Why does the permit get modelled as a document rather than as data?

Because that is how the programme experiences it. The permit is issued as a signed PDF, filed and mailed to the industrial user, and everyone treats the document as the thing. So the requirement that reaches a developer is document management with a due date, and what gets delivered is a filing cabinet with search.

Inside that PDF, though, are limits per pollutant, per outfall, with units, sample types, averaging periods and effective dates, plus monitoring frequencies and special conditions such as a slug control plan. Then the permit is amended, a categorical standard under Parts 405 through 471 applies to one process line while your local limits apply to another, and the operative limit for a specific sample becomes a question only a coordinator who has been there ten years can answer.

The fix is to model the permit as a set of effective-dated limit rules attached to outfalls and monitoring points, with the PDF stored alongside as the legal instrument rather than the source of truth. Every limit carries its basis, whether local limit, categorical standard or a condition negotiated at renewal, because the first question in any challenge is which authority the number came from. Renewals clone forward with a difference view so the coordinator sees what changed instead of rereading fourteen pages. Hand a developer your three most complicated permits and ask how each limit would be stored and evaluated. If they need to simplify your permits to fit their model, the model is wrong.

What goes wrong with migrating historical results and past determinations?

Two problems, and the second one is uncomfortable. The first is that historic results arrive in shapes that lose meaning. A spreadsheet column headed Cu with a number in it does not say whether that was a daily maximum or a composite feeding a monthly average, which monitoring point it came from, or whether the reported figure was below the detection limit and was entered as zero, as half the detection limit, or as the limit itself. Those three conventions produce three different violation histories from the same laboratory report.

The second is that once you load history into a system that evaluates limits automatically, it will evaluate the past too. Programmes routinely discover historical determinations that were wrong in both directions: violations never recorded, and a user published in the significant noncompliance list on a calculation that does not reproduce. Better to find it during a parallel run than to have a user's consultant find it.

Handle it deliberately. Migrate two years of results with the detection limit convention recorded per laboratory and per period, run the new violation and significant noncompliance evaluation against that history in parallel, and reconcile the output against what your programme actually reported before anyone trusts the new system. Where the results differ, document why, and talk to your approval authority early rather than after publication. Budget this reconciliation as its own task, because it is usually the longest single item in the project.

Why do the laboratory and billing integrations break after launch?

Electronic laboratory deliverables are the first failure. Every laboratory formats them differently, the format changes when the laboratory upgrades its information system, and the import either rejects a file loudly, which is fine, or silently maps a field to the wrong column, which is not. Units are the specific trap: milligrams per litre and micrograms per litre in the same file, or a laboratory that switches reporting units on a subset of parameters and tells nobody. A quiet factor of a thousand turns a violation into a clean result, or the reverse.

Utility billing is the second, and usually the hardest technical piece in the project. Municipal billing systems are old, their interfaces are undocumented, and the vendor may only support a scheduled file drop. That is workable, but it has to be confirmed with the billing vendor before the estimate is written.

The fixes are unglamorous. Validate every imported result against expected units and an expected range for that parameter and that user, and route anything outside it to a review queue rather than straight into the compliance record. Keep the raw deliverable file attached to the sampling event so a disputed number traces to what the laboratory actually sent. For billing, agree the interface and a test file with the billing vendor during scoping, and build the charge list as a reviewable artefact a person releases.

What happens when significant noncompliance and enforcement are left to a coordinator?

They stay correct until the coordinator is on leave, and then they are not. The significant noncompliance criteria in 40 CFR Part 403 are defined arithmetic, not judgement: a chronic violation when 66 percent or more of measurements in a six month period exceed a limit, and a technical review criteria violation when 33 percent or more exceed the limit multiplied by 1.4 for most pollutants and 1.2 for pH and oil and grease. Computing that in a spreadsheet once a year has two failure modes, and both are expensive. Publishing a user who should not have been published is a legal problem. Omitting one who should have been is an audit finding.

Enforcement has a parallel gap. Your response plan was adopted by your own board and sets out notice of violation, then administrative order, then penalties, with escalation for repeat offenders. The audit question is whether you followed it consistently, because inconsistent enforcement is both a finding and a defence a user will raise later.

The fix is to evaluate every result against the operative limit at the moment it is imported, and to maintain the significant noncompliance evaluation on a rolling basis rather than annually. A coordinator then sees a user approaching the chronic threshold in month four, while there is still time to work with them. Encode the escalation ladder so a violation proposes the response your own plan requires with the deadline attached, and generates the notice with the actual results and limits merged in. Crucially, allow deviations, because judgement is part of the job, but record them with a reason. A system that only permits the rule-following path gets worked around, and the record becomes fiction.

Should you build custom or configure what you already own?

Configure, if your programme is small. With a dozen or two industrial users, a stable list and straightforward local limits, Linko or SwiftComply will handle it, cost far less than a build, and free your coordinator to do inspections instead of data entry. That is the right answer for a large share of publicly owned treatment works. Aquatic Informatics is the sensible choice where the water data side is the bigger problem.

The build case starts when two or more of these are true. You permit more than roughly 60 significant industrial users. You have satellite communities whose industrial users discharge into your system, which layers the permitting relationships and effectively doubles the model. Your surcharge programme is a meaningful revenue line and the calculation lives in a spreadsheet. Your last programme audit produced findings on recordkeeping or enforcement consistency. Or determining the operative limit for a sample requires institutional knowledge rather than a lookup. The packaged products handle the common shape of a programme well. What is genuinely local is your headworks-derived limits, your board-adopted response plan, your ordinance surcharge formula and a billing system somebody bought in 2011.

How do hidden costs get into the quote?

Four places, in our delivery experience. Categorical standards are the first: each one your users fall under has its own structure, and a quote that treats categorical users as a single line has not counted them. Combined waste stream formula users are the second, and they are genuinely intricate rather than merely fiddly. Ask whether any of your users need it before the estimate is fixed.

Utility billing integration is the third and the item most likely to eat the schedule. Multiple laboratories with different electronic deliverable formats is the fourth, and it scales per format rather than per laboratory.

Satellite programmes deserve their own mention because they are a second permitting model rather than a discount on scope. If you receive flows from other municipalities with their own industrial users, say so in the first conversation.

What keeps the number down is sequencing. Start with permits, sampling and violation evaluation for significant industrial users only, and let non-significant users, fats oils and grease, and hauled waste wait for a second phase.

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

The builds that work do all of the arithmetic and none of the judgement, and they record both. Every violation determination stores the operative limit, the rule that failed and the results considered. Every significant noncompliance evaluation stores the criteria version applied. Every deviation from the enforcement response plan stores a reason and a person. That combination is what survives a challenge from an industrial user's consultant and what an auditor is actually looking for.

The builds that fail invert it. Humans do the arithmetic in spreadsheets and nobody records the judgement, which is precisely backwards from what an audit rewards. They also treat the sampling schedule as a calendar. Generate it from permit requirements instead, so every required event exists as a record with a window and an owner before anyone thinks about it, and anything overdue appears on one screen. Proof that a quarterly obligation was met for two years should then be a report rather than a week in the filing cabinet.

Two questions worth asking any developer. Ask them to implement the significant noncompliance criteria on a whiteboard, including the rolling six month window. It is not difficult arithmetic, and watching someone reason about the edge cases tells you whether they will get them right. Then ask what they have integrated, by product name. Settle ownership before kickoff, in writing: the repository, the cloud accounts and the right to hire another firm. At Digital Heroes the client owns the code from the first commit, which matters here because these records may be evidence in an enforcement matter years later.

Research & sources

The evidence behind this guide

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

  1. 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) →
  2. The Standish Group 1995 CHAOS Report found only 16.2% of software projects fully succeeded; success varied sharply by size, with large-company projects succeeding about 9% of the time versus far higher rates for small projects - best treated as an industry survey, not an audited dataset. Source: Standish Group (1995) →
  3. PMI's Pulse of the Profession research found organizations waste an average of roughly 9.9% of every dollar invested in projects due to poor performance - equivalent to about $1 million wasted every 20 seconds collectively worldwide. Source: Project Management Institute (PMI) (2018) →
  4. WordPress powers 41.5% of all websites and holds 59.2% of the market among sites running a known content management system, making it by far the most-used CMS on the web. Source: W3Techs (2026) →
Ryan P. · Senior UX Designer · APAC · Sydney

Ryan designs user experience for APAC projects: mapping how people move through a system, testing whether the path holds up, and reworking it when it does not. Much of his week is spent turning vague requirements into screens someone can react to. Expect posts grounded in how users actually behave.

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

FAQ

Frequently asked questions

How do we know whether a developer is building a compliance system or just a results database?
Ask how the system determines the operative limit for a sample taken on a specific date at a specific monitoring point. A compliance answer involves effective-dated limit rules, the limit basis recorded as local limit, categorical standard or negotiated condition, and the sample type, because a daily maximum and a monthly average are different tests against the same number. If the answer is that the permit PDF is attached and a coordinator checks it, you are buying document storage with a due date field.
What happens when we load historical results and the system disagrees with our past determinations?
It will, and that is the point of running it in parallel before cutover. Programmes commonly find violations that were never recorded and, harder to discuss, a user who was published in the significant noncompliance list on a calculation that does not reproduce. Document every difference and its cause, involve your approval authority early rather than after publication, and treat the reconciliation as its own scheduled task. Finding it now is far better than a user's consultant finding it later.
Why do lab result imports go wrong so quietly?
Units, mostly. Milligrams per litre and micrograms per litre appear in the same deliverable, and a laboratory can change reporting units on a subset of parameters without telling anyone. A silent factor of a thousand turns a violation into a clean result or the reverse. Validate every imported value against expected units and an expected range for that parameter and that user, route anything outside it to a review queue, and keep the raw deliverable file attached to the sampling event so a disputed number traces back to what the laboratory sent.
Is utility billing integration really the hardest part?
Usually, yes. Municipal billing systems are old, their interfaces are frequently undocumented, and the vendor may support only a scheduled file drop rather than an interface you can call. That is workable, but it has to be confirmed with the billing vendor during scoping, not discovered in month four. Ask a developer for the specific billing product name they have integrated before. Build the surcharge charge list as a reviewable artefact a person releases, so a bad import cannot bill a user automatically.
Should the software be able to override the enforcement response plan?
Yes, and a system that cannot is worse than a spreadsheet. The escalation ladder should propose the response your locally adopted plan requires with the deadline attached and generate the notice with the actual results merged in, but a coordinator must be able to deviate, because judgement is part of the job. The requirement is that the deviation is recorded with a reason. Systems that only allow the rule-following path get worked around, and the resulting record is fiction at exactly the moment you need it.
We have satellite communities. Does that change the build?
Substantially. Receiving flows from other municipalities with their own industrial users layers the permitting relationships and effectively doubles the permitting model, because you need to represent who issued a permit, who enforces it, and what your own obligations are for a user you do not directly permit. Raise it in the first conversation rather than treating it as a later phase. A quote written for a single-jurisdiction programme will not survive contact with a satellite arrangement.
What can we cut from the first release without creating risk?
Everything that is not a significant industrial user. Start with the industrial user register, permits with structured effective-dated limits, the generated sampling schedule with mobile capture and lab import, automatic violation and significant noncompliance evaluation, and the annual report. Non-significant users, fats oils and grease programmes and hauled waste tracking can wait for a second phase without anything bad happening in the meantime. That sequencing is what keeps a first release inside 10 to 16 weeks in our delivery experience.
How do we make the annual report stop taking most of March?
Make it a generated document rather than an assembled one, which requires that permits, sampling events, results, violations and enforcement actions all live in the same system with traceable records behind each number. The significant noncompliance list for publication then comes out of the continuously maintained evaluation instead of a February spreadsheet. Confirm the exact expected format with your approval authority during scoping, since state expectations go beyond the federal minimum and vary.
What does a $50,000 custom software budget actually buy?
One core workflow done properly: 10 to 15 screens, two or three user roles, a couple of integrations, an admin panel, and automated tests, delivered in roughly 12 to 14 weeks. What it does not buy is that workflow plus a mobile app plus AI features plus five more integrations. The discipline of picking the one workflow that matters is what separates $50,000 projects that ship from $50,000 projects that stall at 70% complete.
What questions should I ask a development agency on the first call?
Ask who exactly will build it, what happens when scope changes mid-project, what their maintenance terms are after launch, and what they will need from you every week. Then ask them to describe a project that went wrong and what they changed afterward; teams that have shipped at real volume have war stories, and teams claiming a perfect record are hiding something. The scope-change answer matters most: a disciplined shop describes a written change-order process, not a vague promise to be flexible.
Is a solo freelancer enough for my project, or do I really need an agency?
A solo freelancer is a fine choice for a well-defined build under roughly $15,000 to $20,000 with a limited lifespan: an internal calculator, a scripted integration, a prototype. Above $50,000, or for any system your business will depend on for years, you are buying continuity as much as code: enforced code review, cover when someone is ill, and support that outlasts one person's career plans. Price the risk of a single point of failure, not just the hourly rate.
Will custom software work with the tools we already use, like QuickBooks and Stripe?
Yes, and this is one of custom software's genuine advantages: QuickBooks, Stripe, Shopify, and most mainstream business tools publish documented APIs built for exactly this. Expect each standard integration to add one to two weeks of build time, and be suspicious of any quote that lists five integrations without asking what data flows in which direction. The hard cases are legacy systems with no API, which is a question to raise in discovery, not in week nine.
Should we build an MVP first or go straight to the full system?
MVP first, for almost everyone: ship the single workflow that carries the business value in 10 to 16 weeks, learn from real users, then fund phase two from evidence instead of guesses. The caveat is that an MVP is a small version of a well-built system, not a badly built version of a big one; the data model must already support what comes next. An agency that cannot tell you what they deliberately left out of your MVP has not designed one.
What should I have ready before I contact a development agency?
Three things, none of them technical: a one-page description of the problem in your own words, a list of the tools and spreadsheets the new system must replace or connect to, and a must-have versus nice-to-have split of features. Add a budget range, even a wide one, because it changes the conversation from fantasy to engineering. You do not need a formal specification; producing that is what a discovery phase is for.
If an agency builds my software, who actually owns the code?
You should own everything, assigned in writing: the contract transfers full IP to you on final payment, the code lives in your GitHub organization, and hosting runs in cloud accounts you control. The red flag is a proposal that mentions the agency's proprietary platform or framework, which usually means you are renting, not buying. Digital Heroes structures every build this way precisely so a client can fire us and lose nothing but the relationship.
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.
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 is a discovery phase, and is it worth paying for separately?
Pay for it, and treat the output as yours. A discovery phase runs two to three weeks, typically 5 to 10% of the eventual build budget, and produces a written scope, wireframes, and a fixed quote you can take to any vendor, including a competitor of the agency that wrote it. Skipping it is how projects end up quoted from a two-paragraph email and delivered at twice the price.
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.
Who can build a custom software system?

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