Problems & solutions · Internal Tools

Reserves and Well Economics Software Problems: The 7 That Cost Real Money, and How to Avoid Them

OIL GAS Reserves Economics Software workflow illustration showing common problems and fixes.
The short answer

The most expensive decision in this category is agreeing to rebuild the economics engine. The arithmetic is deterministic and a competent team can write it, which is exactly why it gets approved. What follows is the part nobody budgets: your reserve auditor and your bank recognise output from the incumbent engine, so a home grown one has to be validated well by well against it and the comparison has to be handed over and defended. That validation is a project of its own, it lands in the middle of a year end cycle, and it delivers nothing a single evaluator asked for. Meanwhile the thing everyone actually wanted, a trail explaining who changed an assumption and why, is still not built.

Why does the scope creep into rebuilding the economics engine so often?

It starts as a reasonable observation. If you are building a case management system anyway, and the calculation is decline curves and discounted cash flow, why keep a dependency on an aging tool. The maths is not the hard part and any developer can see that.

The reason to resist is not technical, it is who has to accept the output. A reserve report supports a public disclosure, a borrowing base and sometimes an impairment test. A third party auditor such as Netherland Sewell, Ryder Scott or Cawley Gillespie signs off on some portion of it, and banks read the same numbers at redetermination. Those parties are used to the calculation conventions of the established engines. A new engine is not accepted because it is correct, it is accepted because someone has demonstrated agreement, well by well, with the engine they already trust, and then explained every difference. Rounding, the timing of abandonment, the treatment of negative cash flow months and the ordering of deductions all produce small differences that each need an answer.

The scope that pays is the wrapper. Versioned assumptions with effective dates and named owners, cases as immutable selections of assumption versions and well sets, an approval workflow that locks a case at sign off, a classified change log, and a roll up from well to package to corporate that reconciles at every level. That is the system everybody in your organisation has been asking for and none of it requires touching the calculation.

If a developer is casually willing to reimplement reserve economics, make them justify it against that acceptance problem specifically. In most cases the honest answer is that the wrapper solves the complaint and the engine replacement solves a preference.

What goes wrong when you load historic cases and well data?

Two things, and both are underestimated because the source looks tidy from a distance.

The first is that your historic cases are files. A fall bank case and a year end case exist as database copies on a shared drive named with an evaluator's initials and a date, and the difference between them is real but undocumented. Loading them into a structured model means somebody has to decide, retrospectively, what each case was and what assumptions it used, which is archaeology rather than migration. It is worth doing for a small number of reference cases and it is not worth doing for everything. Decide the cutover point deliberately: which prior cases must be reproducible inside the new system and which are archived as files with their outputs preserved.

The second is well identity. Wells arrive under a regulatory identifier, a company identifier, a lease and well number, and a name that changed after a recompletion or a workover. Ownership changes with acquisitions and divestitures at effective dates that do not align to reporting periods, and working interest and net revenue interest can differ by product and by depth. A load that treats the well as a single key produces a corporate roll up that does not reconcile, and the failure appears at the worst moment because nobody checks the total until year end.

Build the well and ownership model first, with effective dated interests, and reconcile it against production accounting before any case is loaded. If those two do not agree, nothing downstream will.

Why do the production accounting and ledger integrations break after launch?

Feeding actual volumes from production accounting and actual operating costs from the ledger is one of the highest value additions in this category, because it turns assumption setting into an evidence based exercise. It is also the integration most likely to degrade quietly.

Volumes break on allocation. Production accounting allocates measured volumes to wells on a basis that changes when a meter is added, when a well is recompleted or when an allocation method is revised, and prior periods get restated. If the reserves system stores allocated volumes as a snapshot, its history diverges from the accounting system's history and nobody notices until an evaluator disputes a decline fit.

Costs break on coding. Operating cost arrives at a cost centre level that maps to your packages through a convention rather than a field, and the convention changes when the accounting group restructures cost centres or when a workover gets coded to operating rather than capital. Then a package that looked expensive last quarter looks cheap this quarter for reasons that have nothing to do with the field.

The design that survives both is to store the source system's version and effective date on every imported figure, accept restatements as new versions rather than overwrites, and run a reconciliation report that compares totals with the source on a schedule. Then map cost centres to packages explicitly, as maintained data with an owner, and raise unmapped codes as exceptions rather than dropping them into an other bucket.

What happens when the approval workflow and change classification are not covered?

These are the two features most often cut to hit a budget, and cutting them removes the entire reason for the project.

Without an approval workflow that locks a case at sign off, an approved case is still editable, which means the number that supported a disclosure can change after the fact with no record. Every operator we have worked with says this cannot happen at their company. It happens through ordinary good intentions: an evaluator tidies something, corrects an obvious error, or updates a well that came online.

Without a classification attached to each assumption change at the moment it is made, the year over year reconciliation into revisions of previous estimates, extensions and discoveries, improved recovery, purchases and sales of reserves in place, and production goes back to being assembled in a spreadsheet in January by somebody comparing two databases and applying judgement. That judgement is not reproducible, which is precisely what an auditor is testing, and most of an auditor's open item list is a request for exactly this trail.

Both features are inexpensive at design time and effectively impossible to add retrospectively, because they depend on data captured at the moment of the edit. Keep them in phase one even if something else has to go. The one to sacrifice instead is usually multi case comparison reporting, which is valuable and can wait.

Should you build custom or configure what you already own?

Do not build if you run a few hundred wells, one evaluator, one bank and no public disclosure. PHDWin plus disciplined file naming is genuinely adequate at that scale and a build is a distraction. If your complaint is that reserves reporting is slow rather than untraceable, the fix is probably a reporting layer over the existing database and a short engagement, not a platform.

Halliburton ARIES stays. The complaint operators have about it is rarely accuracy, it is that the data model is old, the economics are driven by text based configuration that is powerful and opaque, and change control amounts to copying database versions. All three of those are solved by a system of record wrapped around the engine.

Quorum Aucerna Val Nav is the honest buy answer if you are a large operator willing to run an enterprise implementation, because it does handle corporate roll up, case management and workflow properly. Price it seriously before pricing a build. Enverus PRISM should sit alongside whatever you do for type curve benchmarking and offset performance, but it is not your approval chain and it is not your assumption history.

There is one more honest caution. The point of this system is that it constrains the person who currently has full discretion over the numbers. If your evaluator does not want the change log, that is a management decision before it is a software one, and building over the objection produces a system people work around.

How do hidden costs get into the quote?

Five, reliably. The engine decision, covered above, which is the single largest scope lever in the project and is often left ambiguous in a proposal so that both parties assume the cheaper reading.

Well count and recalculation performance. A five thousand well corporate roll up recalculated across four cases is a performance engineering problem, not a spreadsheet, and it changes the architecture. Quotes that assume interactive recalculation without testing at your well count are quoting a prototype.

International fiscal terms, if you have any. A production sharing contract is a different cash flow model with cost recovery pools and profit splits, and folding it into a domestic quote understates it substantially.

And organisational agreement on ownership of assumptions. Deciding who owns the price deck, who owns operating cost, what requires approval and what an evaluator may change unilaterally is a governance exercise with your finance and asset teams. It is the main schedule risk in these projects and it is never on a developer's plan.

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

Whether the system can answer the question that started the project. Take your fall bank case and your year end case and ask it to show the difference. If the answer is a comparison of values, the build failed. The answer you need is an assumption level difference: the operating cost version changed on this date, by this person, for this reason, and the price deck did not.

Second, how it behaves when accounting revises something already used in an approved case. The correct behaviour is a new assumption version with an effective date, the approved case still pointing at the superseded version, and a report listing every case affected so somebody can decide what to restate. Anything that silently updates an approved case is disqualifying and you should test it before acceptance rather than after.

Third, reproducibility. You must be able to reproduce any approved case on demand years later, including its assumption versions, well set and outputs. Reserve history supports disclosures and borrowing bases long after the evaluator who built it has left, and a case you cannot reproduce is a case you cannot defend.

Fourth, ownership. You should own the repository, the cloud accounts and the full reserve database including historical cases, with the right to hire another firm, written into the contract before kickoff. At Digital Heroes the client owns the code from the first commit.

Research & sources

The evidence behind this guide

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

  1. Per the Standish Group CHAOS 2020 report (reviewed at this URL), across tens of thousands of software projects roughly 31% end successfully, about 50% are 'challenged', and roughly 19% fail outright; small projects succeed far more often than large ones, and Agile approaches succeed at markedly higher rates than Waterfall. Source: The Standish Group (2020) →
  2. 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) →
  3. McKinsey found that currently demonstrated technologies can fully automate about 42% of finance activities and mostly automate a further 19%, indicating roughly 60% of finance work is technically automatable. Source: McKinsey & Company (2018) →
  4. Sensor Tower's State of Mobile 2026 reports that global users spent 5.3 trillion hours in iOS and Google Play apps in 2025 (+3.8% YoY), roughly 3.6 hours per day per mobile user. (Note: the page does not itself contrast app time vs. mobile-browser time, so the 'overwhelming majority of time in apps vs browsers' framing is not directly supported by this source.). Source: Sensor Tower (2026) →
Zara E. · Senior Strategist · APAC · Sydney

Zara works as a senior strategist across APAC, sitting between what a client says they want and what the build should actually be. She pressure tests business cases, priorities and sequencing before engineering time gets committed. Read her for the thinking that happens before a project brief is written.

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

FAQ

Frequently asked questions

Should we rebuild the economics engine or wrap the one we have?
Wrap it in almost every case. A home grown engine has to be validated well by well against the incumbent before your reserve auditor or your bank will accept its output, and that comparison has to be produced and defended. It is a project of its own that delivers nothing your evaluators asked for. The complaints operators actually have, an old data model, opaque configuration and change control by copying database versions, are all solved by a system of record around the engine.
How much of our historic case history should we load into a new system?
Decide a deliberate cutover point rather than loading everything. Historic cases exist as database copies on a shared drive and reconstructing what each one assumed is archaeology, worth doing for a small number of reference cases and not worth doing at scale. Archive the rest as files with their outputs preserved, and compute forward from the cutover. Scope the loading you do choose as its own workstream, because it is regularly assumed into a fixed price and is never small.
Why does our corporate roll up stop reconciling after a migration?
Usually well identity and ownership. Wells arrive under a regulatory identifier, a company identifier and a lease and well number, names change after recompletions, and working interest and net revenue interest can vary by product and by depth with effective dates that do not align to reporting periods. Build the well and ownership model first with effective dated interests and reconcile it against production accounting before loading a single case, because nothing downstream reconciles if that layer does not.
Our actual cost feed drifted away from the ledger. What causes that?
Cost centre coding changes. Operating cost arrives at a cost centre level that maps to your packages by convention rather than by field, and the convention shifts when accounting restructures cost centres or when a workover is coded to operating rather than capital. Map cost centres to packages as maintained data with an owner, raise unmapped codes as exceptions rather than dropping them into an other bucket, and run a scheduled reconciliation against the source totals.
Which features should never be cut to hit a budget?
The approval workflow that locks a case at sign off, and the classification attached to each assumption change at the moment it is made. Both depend on data captured at the point of the edit, which makes them effectively impossible to add retrospectively. Without them an approved case remains editable and the year over year reconciliation returns to a January spreadsheet exercise built on unreproducible judgement, which is exactly what an auditor is testing. Cut multi case comparison reporting instead.
What does the system have to do when accounting revises an approved assumption?
Create a new assumption version with an effective date, leave the approved case pointing at the superseded version, and produce a report listing every case that used it so a human decides what to restate. Test this behaviour before acceptance. Anything that silently updates an approved case is disqualifying, because it means a number that supported a disclosure or a borrowing base can change after the fact with no record that it did.
What is the most commonly missed cost in a reserves build?
The engine decision, which is often left ambiguous in a proposal so that both sides assume the cheaper reading, and recalculation performance at your actual well count. A five thousand well roll up across four cases is a performance engineering problem that changes the architecture, and a quote that assumes interactive recalculation without testing at your scale is quoting a prototype. International fiscal terms, if you have any, are a third and they are a different cash flow model entirely.
Will our reserve auditor accept output from a custom system?
They will accept output whose basis they can verify, which is the practical argument for wrapping a recognised engine rather than replacing it. Either way, talk to them before the build starts. Their requirements are cheap to design for and expensive to retrofit, and they will tell you plainly which parts of your current process generate their open item list. Building directly against that list is the shortest route to a shorter audit next year.
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.
What happens to my software if the agency shuts down or we stop working together?
Nothing dramatic, if the engagement was set up correctly: the code sits in your repository, hosting runs on your cloud account, and a handover document explains how to deploy and operate the system. Any competent replacement team can then take over in days rather than months. If the agency controls the repo, the servers, or the domain, fix that now, because renegotiating access during a dispute is the most expensive place to discover the problem.
Should I hire a freelancer or an agency for my software project?
A skilled freelancer is the right call for a single-discipline scope under roughly $15,000, like a website, a plugin, or one integration. Above that, projects need design, backend, testing, and project management at once, and a solo builder becomes the single point of failure: if they get sick or take a bigger client, your project simply stops. Agencies bill 20-40% more per hour but carry continuity, code review, and someone to escalate to, which is what you are actually buying.
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 are the most common mistakes companies make when building internal tools?
The three failures Digital Heroes sees most: building for every department at once instead of nailing one workflow, designing without the end users so staff quietly go back to their spreadsheets, and leaving no named owner after launch so small bugs pile up until the tool dies. A subtler fourth is faithfully recreating the old spreadsheet, including its workarounds, instead of fixing the process first. Start with one team's most painful workflow and put the actual users in the room from week one.
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.
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.
Is a freelancer or an agency better for building an internal tool?
A solid freelancer works for a single-workflow tool under roughly $10,000, if you accept that one person holds all the knowledge. An agency earns its premium once the tool spans departments or integrations, because you get a developer, a designer, and a project manager plus continuity when someone leaves or gets sick. The hidden freelancer cost appears 18 months later when you need changes and the original builder has moved on, a rescue situation Digital Heroes is hired for regularly.
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.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
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?