EngineeringSoftware / SaaSHigh stakesMixed

Rewriting the billing system instead of patching it for another year

The estimate was five months. It took nine. Whether that counts as a failure depends entirely on what the patching path would have cost, and that number is unknowable.

Anonymous (H7)Head of EngineeringDecision taken 2024-1112 min read

The decision timeline

Three moments, kept separate. What became known later sits in its own column so it cannot be read back into the reasoning.

Known at the time

  • Four production incidents in twelve months, each requiring manual invoice correction
  • No specification; no owner for two years
  • Seven distinct contract structures found in a production data audit
  • A committed September launch for usage-based pricing
  • Two independent estimates rating the patch path as harder

Decided, and why

  • Rewrite, because the committed pricing model could not be built on the existing system
  • Recover behaviour from production data rather than code, because the code described intent and the data described reality
  • Six-week parallel run, because billing correctness tolerance was near zero

Known later

  • Nine months, not five — an 80% overrun on the estimate

Members see the full outcome.

Trust and provenance

What we checked, and what we did not.

✓Identity checked
The platform has checked the creator's identity. This does not establish that every claim is true.
✓Firsthand account
Creator was the decision-maker and technical lead. Published anonymously; identity held by the editorial team.
✓Evidence reviewed
Editor reviewed two anonymised incident post-mortems and the parallel-run discrepancy summary. The vendor evaluations, the estimates and the customer credit records were not shared.
✓Outcome followed up
Outcome update provided at twenty-three months. Not independently corroborated.
iDisclosures
None declared.

The decision context

ProblemA billing system written over six years by eleven people, with no owner for the last two. Four production incidents in a year, each requiring manual invoice correction. A new usage-based pricing model was committed for the following year and could not be built on it.
DeadlineThe usage-based pricing launch was committed to the market for September.
StakesHigh
Decision-makerHead of Engineering, with CFO consulted on the revenue-recognition implications.

Constraints

BudgetNo additional headcount. The rewrite had to come out of the existing team's capacity.
TimeTen months to the committed September launch.
InformationNo complete specification existed. Behaviour had to be recovered from the code and from production data.
AuthorityCould choose the technical approach; could not move the September date.
ExternalRevenue recognition is audited. Any migration had to produce reconcilable records across the cutover.

Alternatives

Options considered, and the stated reason each rejected option was rejected.

Rewrite with a parallel-run cutoverChosen
Chosen because the pricing commitment could not be met on the old system.
Patch and build usage-based pricing alongsideRejected
Two engineers independently estimated this as harder than the rewrite, which was the strongest signal available.
Buy a third-party billing platformRejected
Evaluated two. Neither handled the existing contract structures without custom work estimated at over half the rewrite.
Delay usage-based pricing by a yearRejected
Commercially committed; the Head of Engineering did not have authority to move it.

Evidence, reasoning and outcome

The remaining six field groups — evidence, reasoning, action, outcome, reflection and transferability — are available to members.

  • Four incident post-mortems from the previous twelve months
  • Two independent engineering estimates of the patch path
  • Can support usage-based pricing by September

Read the rest of this case

Membership opens the full library: the evidence available at the time, the decision criteria, the measured outcome and what the creator would do differently.

Prices and terms are shown in full before you pay. Cancel any time.

Rights and licensing

Published terms for this case.

ConsentCreator confirms permission to publish anonymously with employer redacted.
LicenceNon-exclusive, perpetual licence to publish and monetise.
AnonymisationCreator, employer, vendors and all customers withheld.
CompensationEligible for the creator revenue pool under the published allocation rule.

Think something here is wrong? Request a correction or takedown.

Related decisions

Matched on decision type, industry, stakes and shared tags.

HiringSoftware / SaaSFree to read

One senior engineer or two juniors on the same budget

A Series B team with one open requisition and a delivery commitment eight months out. The decision turned on who would do the mentoring, and that question had no good answer.

Anonymous (H7)Head of EngineeringModerate stakesMixed9 min
FundraisingSoftware / SaaS

We took a down round instead of an acquisition offer. Eighteen months later the company closed.

An offer on the table at roughly half the last valuation, against a bridge at a 60% markdown. The reasoning was documented at the time. It did not survive contact with the following year.

S. LindqvistCo-founder and CEOExistential stakesDid not work14 min
Product strategyPaymentsFree to read

We killed a feature after six months of build. The reasoning held; the timing did not.

Adoption sat at 4% of target after two quarters. Four options on the table, three rejected. The decision to discontinue was defensible on the evidence available — the error was waiting two months longer than the criteria required.

M. OkonjoVP ProductHigh stakesWorked as intended11 min