Problems & solutions · Internal Tools

Transmission Planning Study Management Problems: The 7 That Cost You a Rerun, and How to Avoid Them

Transmission Planning Study Management Software product interface illustration showing common problems and fixes.
The short answer

The most expensive failure in planning tooling is being unable to reproduce a result you have already published. An interconnection customer's consultant asks why your study shows a thermal violation on a 138 kV line that their model does not, and answering it requires knowing which base case vintage was used, whether the retirement list included a unit still under evaluation in March, what transfer level was dialled in and which contingency file version applied. Two of those four facts usually exist only in an email thread. A planning engineer then spends three days on archaeology and arrives at a number that is close to the original rather than provably the original, which is not an answer that survives a proceeding. Case lineage is the entire product here, and no solver vendor sells it because it is not their job.

Why does the project get scoped as a results dashboard instead of case lineage?

Planning groups drown in results, so the request that starts the project is almost always about seeing them: a violation browser, filters by season and scenario, charts by circuit. That is genuinely useful and it is quick to build against whatever output files exist today.

What it does not fix is the reason the results are untrustworthy. Every violation in your report is the output of a specific composition: a model version, an assumption set, a contingency definition, a set of parameters and a code path. Change the load forecast vintage and the violation moves. Change one retirement assumption and it disappears. Build a dashboard on top of a folder tree named 2026_Summer_Peak containing forty one saved cases with names like base_final_v3_rev2_USE_THIS, and you have made untraceable results easier to browse. The dashboard then gets quoted in a report, somebody disputes it, and the same three days of archaeology happen with a nicer front end.

Make lineage the first release and the dashboard the second. Model the study as a directed graph: a base case is a node, every transformation is an edge carrying the script, its parameters and who ran it, and the derived case is a node that can be regenerated rather than stored. Every results record references the node that produced it. The acceptance test is that an engineer picks any published violation from last year and reproduces it by replaying a path, in under an hour, without opening an inbox.

What goes wrong when you bring in the existing folder tree of saved cases?

Teams assume the migration is copying files into managed storage. It is not, because the files are opaque binaries and the meaningful information is not inside them, it is the relationship between them. What made base_final_v3_rev2 different from base_final_v3 is a change list nobody wrote down: this generator dispatched down, this line added, this load scaled.

Two failure modes follow. The first is volume: saved cases across seasons, scenarios and sensitivities grow into tens of terabytes fast, and a team that decides to preserve everything hands the utility a storage bill for data almost none of which will ever be opened again. The second is worse. Importing cases without their derivation gives you a catalogue that looks like lineage and is not, so engineers trust it, and the first dispute reveals that the system knows a case existed but not how it was made.

Reconstruct forward rather than backward. Bring in the base cases and the assumption sets that are still live, register them as nodes, and start capturing derivation from the next study cycle onward. For historic studies that carry real exposure, meaning anything under active dispute or feeding a project in a rate proceeding, reconstruct the lineage deliberately with the engineer who ran it, and mark everything else as archived with no derivation claim. An honest gap is defensible. A catalogue that implies lineage it does not have is not.

Why do the solver integrations break after launch?

Driving PSS/E through its Python interface, PowerWorld through its automation interface and TARA through its own is three integrations, not one, and each fails on its own terms. What breaks after launch is usually not the interface. It is the environment around it.

Licensing is the reliable one. Solver licences constrain how much you can parallelise, and a job runner that ignores licence accounting will either exhaust the pool and fail loudly or serialise itself into uselessness. Then a licence server moves, a version is upgraded, or a seat is reassigned during a busy week, and a batch that ran fine on Friday stalls on Monday. The second is version drift: a solver upgrade changes output formatting or default behaviour, and the parser that reads results keeps working while quietly misreading a column. The third is the script layer, since the transformation scripts your engineers write are the actual product and they evolve constantly.

Make licence awareness a first class feature of the queue, not an afterthought. Concurrency should be bounded by available seats with jobs queued rather than failed. Pin and record the solver version against every result, so a version change invalidates the right runs instead of silently producing incomparable numbers. And treat the transformation scripts as versioned artefacts inside the lineage graph, because a result produced by script version 4 is not the same result as one produced by version 3 even with identical parameters.

What happens when non convergence and reporting formats are not covered?

A batch of 600 cases runs overnight on a workstation under somebody's desk. Case 340 fails to converge. The script may keep going or may stop, and either way nobody finds out until morning, at which point the engineer reruns everything because they cannot tell which results are stale. That is the visible cost. The invisible one is far worse: if non convergent cases are quietly dropped, the study reports fewer problems than exist, which is the single worst failure available in this domain.

The second gap is reporting. The format arrives from your regional transmission organisation's business practice manuals and it is not negotiable, so somebody spends two weeks reshaping data by hand. Underneath that sits the deduplication problem: the same physical violation appears across dozens of contingencies, seasons and sensitivity runs, and the useful output is not a list of violations but a ranked list of distinct problems. Doing that reduction by pivot table is where planning engineers lose their weeks.

Require explicit non convergence handling in the specification: flag, classify and preserve the failing inputs for inspection, never drop. Give each violation a stable identity based on the monitored element and limit type so cross run analysis becomes a query. Land results in a columnar store and keep the raw output, because your grouping logic will change and you do not want to rerun 600 cases to change how a report is grouped. The regulator facing format then becomes a rendering step, so a manual change is a template edit rather than another fortnight.

Should you build custom or configure what you already own?

Buy the solvers, always. Siemens PSS/E, PowerWorld Simulator, DIgSILENT PowerFactory, PowerGEM TARA and PSCAD represent decades of validated numerical work, and any proposal that involves building your own power flow or dynamics engine should end the conversation on the spot. Keep paying for them and keep upgrading them.

Do not build the workflow layer at all if your group runs a handful of studies a year on a small footprint with two engineers who genuinely do hold the composition in their heads. Disciplined naming conventions and a shared assumption spreadsheet carry a small transmission owner further than people expect, and the money is better spent on solver licences and compute. We say this to groups regularly and it is usually correct for them.

Build when at least two of these are true. Cluster study deadlines under the current interconnection process make your throughput a compliance exposure rather than a workload problem. You have been asked to reproduce a result more than a year old and struggled. Your case count per assessment cycle runs into the thousands. More than three engineers touch the same study track. Or a result of yours has already been challenged by a developer or an intervenor, which is the moment lineage stops being a convenience and becomes evidence.

How do hidden costs get into the quote?

The number of distinct solvers is first and it is the one people understate, because a group that mostly uses PSS/E will mention TARA in passing and expect it to be free. It is a separate adapter with its own job semantics, its own failure behaviour and its own result parsing. Name every solver on the first call, including the one used by a single engineer for a single annual task.

Electromagnetic transient work in PSCAD alongside steady state is the second and it is not an increment. The data volumes and runtimes differ by orders of magnitude and the post processing question is different, so it belongs in its own phase with its own budget. Stability work is the third for the same reasons: dynamic simulation results are much larger and screening them is a different problem from thermal and voltage.

The fourth is footprint. Multiple regional transmission organisations means multiple business practice manuals, multiple report formats and multiple process conventions, and each is real work. Start with one study type, usually the annual thermal and voltage assessment, and one solver. Groups that try to model every study the department performs before shipping anything spend a year specifying and deliver nothing, and the $80,000 to $170,000 first release band over 12 to 18 weeks assumes the narrower scope.

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

Ask a candidate developer whether they will store derived cases or regenerate them. The right answer is regenerate from lineage and store selectively, and a team that has not thought about it will propose keeping every binary and hand you a storage problem measured in tens of terabytes. Ask how they handle solver licence limits in the job queue, because orchestration that ignores this fails the first time it tries thirty concurrent jobs against a pool that allows eight.

Ask what happens to a non convergent case. The answer must include flagging, classification and preserving the failing inputs. Anything that quietly drops them produces a study that understates problems, and in this domain that is the failure with the longest tail. Ask how stale results are detected: when a base case is corrected, the system should mark exactly the downstream results that are now invalid rather than leaving an engineer to guess, and that single behaviour removes most of the wasteful rerunning.

Put ownership in the contract before kickoff, including the right to export the results store in an open format, because study evidence may need to be produced in a proceeding years after the developer relationship ends. Then run the test that costs nothing: hand a candidate one real past study and ask them to sketch how their model represents it. A planning engineer in the room will know within fifteen minutes whether the sketch survives contact with your actual process.

Research & sources

The evidence behind this guide

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

  1. Companies in the top quartile of McKinsey's Developer Velocity Index had 2014-18 revenue growth four to five times faster than bottom-quartile peers, showing that software-building capability is a driver of business performance, not just a support function. Source: McKinsey & Company (2020) →
  2. An independent Forrester Total Economic Impact study of OutSystems found a 363% three-year ROI with payback in under 6 months, illustrating that faster, lower-labor build approaches can materially shift the payback math. Source: Forrester Consulting (commissioned by OutSystems) (2024) →
  3. In Gartner's 2025 AI in Finance Survey of 183 CFOs and senior finance leaders (fielded May-June 2025), 59% reported using AI in their finance function, with accounts payable process automation adopted by 37% of respondents (the second-highest single use case, behind knowledge management at 49%). Source: Gartner (2025) →
  4. Across more than 5,400 IT projects studied by McKinsey and the University of Oxford BT Centre, large IT projects ran on average 45% over budget and 7% over schedule while delivering 56% less value than predicted. Source: McKinsey & Company / University of Oxford (BT Centre for Major Programme Management) (2012) →
Oliver H. · Senior Account Director · UK · London

Oliver runs UK client accounts day to day, chairing the calls where scope, budget and timeline meet reality. He is useful reading for anyone about to commission custom software and wondering what a healthy agency relationship should feel like from the client side.

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

FAQ

Frequently asked questions

Can we automate contingency runs without changing solvers?

Yes, and it is the only sensible approach. The solver stays the solver: PSS/E is driven through its Python interface, PowerWorld through its automation interface, TARA through its own, and what you are building is the queue, the lineage and the results store around them. The orchestration layer schedules cases, respects the licence pool, retries transient failures and records exactly which inputs produced which results. Nothing about the numerical work changes, which is also why any proposal to build your own solver should be refused.

How far back should we reconstruct lineage for old studies?

Reconstruct deliberately only for studies that carry live exposure, meaning anything under dispute, anything feeding a project in a rate proceeding, and anything a developer has already questioned. Do that work with the engineer who ran it, while they are still available. Everything else should be archived and marked explicitly as having no derivation claim. An honest gap is defensible in a proceeding. A catalogue that implies lineage it cannot support is worse than no catalogue, because engineers will rely on it before discovering the limit.

What do we do about cases that fail to converge?

Flag, classify and preserve the failing inputs for an engineer to inspect, and never drop them silently. A batch that quietly discards non convergent cases produces a study reporting fewer problems than actually exist, which is the most damaging error available in transmission planning. Classification matters too, since a case that fails because of a genuinely infeasible dispatch is a different finding from one that fails because a solution parameter needed adjustment, and only the second is a technical housekeeping item.

How do we stop assumptions drifting between study tracks?

Make assumption sets versioned, named objects with effective dates and an owner, referenced by studies rather than copied into them, and make applying one a transformation edge in the lineage graph. Then when a load forecast is revised in April, the system can list every case and every result that used the prior vintage rather than leaving someone to remember which tracks were updated. Silent divergence between two engineers applying the same assumption slightly differently is the hardest class of error to find, because the results converge perfectly and are perfectly wrong.

How much storage does this actually need?

Far less than people fear if derived cases are regenerated rather than stored, and far more than budgeted if they are not. Saved case binaries across seasons, scenarios and sensitivities reach tens of terabytes quickly and most are never reopened. Keep base cases, keep the transformation scripts and parameters, and keep the raw results, because your grouping and reduction logic will change and rerunning hundreds of cases to alter a report is the thing you are trying to stop doing.

Can one system drive PSS/E, PowerWorld and TARA together?

Yes, but budget it as three integrations with a consistent job layer above them, not as one integration with three settings. Each has its own interface, file formats and failure behaviour, and each needs its own adapter and its own result parsing. Adding PSCAD for electromagnetic transient work is a fourth and considerably heavier problem, since the data volumes and runtimes differ by orders of magnitude, so it belongs in its own phase with its own budget rather than folded into a steady state release.

How does this help with cluster study deadlines?

Mostly by removing rework rather than by making the solver faster. Cluster processes with firm deadlines turn throughput into a compliance concern, and the throughput lost in most groups goes to reruns caused by not knowing which results are stale, plus manual reshaping of output into the required report format. When a base case correction automatically marks exactly the downstream results that are now invalid, and reporting is a rendering step off a results store, a cycle that ran on overtime becomes one that fits the calendar.

What should the first release deliberately leave out?

Stability and electromagnetic transient work, secondary regional footprints, and anything beyond your single highest volume study type, which for most groups is the annual thermal and voltage assessment. Get lineage, licence aware orchestration and the results store working on that one study with one solver, and prove reproduction against a real past result. Groups that attempt to model every study the department performs before shipping anything spend a year in specification and go live with nothing an engineer has used in anger.

What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
How much should a small business budget for its first custom app or website?
For a focused first build, most small businesses land between $8,000 and $60,000: roughly $8,000 to $45,000 for a custom website and $25,000 to $60,000 for an internal tool or simple web app, based on Digital Heroes delivery across 2,000+ projects. Customer-facing products with payments, logins, or a mobile app start around $40,000. Quotes far below these bands usually mean a template with your logo on it, not software shaped around your workflow.
How do I vet a development agency for an internal tools project?
Ask to see two or three internal tools they have shipped and whether those clients still use them daily, because internal tools fail on adoption, not code quality. Good signs: they ask to see your current spreadsheet or process before quoting, they propose a phased build instead of one big launch, and they spell out who handles training and post-launch changes. Walk away from anyone who gives a fixed price before seeing your actual workflow, since internal tools live or die on process details.
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.
When does a company outgrow Airtable?
The usual breaking points are record limits, permissions, and automation complexity. Airtable's Team plan caps each base at 50,000 records and Business at 125,000, so operations logging thousands of rows a month hit the ceiling within a year or two. The other trigger Digital Heroes sees constantly is permissions: restricting who can view specific fields or records is clumsy below Airtable's Enterprise tier, which becomes a genuine problem once salaries, pricing, or client contracts live in the base.
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.
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 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 do I calculate the ROI of a custom internal tool?
Count hours first: multiply the weekly hours staff spend on the manual process by their loaded hourly cost, then add the cost of errors such as mispriced quotes or missed renewals. A tool saving a 10-person team 5 hours each per week recovers about 2,500 hours a year, which repays a $20,000 to $30,000 build well inside a year at typical wages. Most internal tools Digital Heroes delivers reach payback in 6 to 18 months, with quoting and billing tools at the fast end because they plug revenue leaks, not just time.
What does it cost to keep an internal tool running after launch, and do we need to hire a developer?
Budget 15 to 20 percent of the build cost per year, so a $25,000 tool runs roughly $300 to $400 a month covering hosting, security patches, dependency updates, and small tweaks, figures drawn from Digital Heroes maintenance contracts. You do not need an in-house developer; a monthly retainer with the agency that built it covers the typical internal tool comfortably. Hosting itself is cheap for internal audiences, often $20 to $100 a month, because you serve dozens of users rather than the open internet.
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 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?