TheOakFrameGet in Touch
← All case studies
Diligence Report

Due Diligence Report: What a Codebase Audit Found Before a $40M Acquisition

A private equity firm was three weeks from closing on an HR and payroll software company when it commissioned an independent technical review. The audit found a specific, costly problem the deal team used to renegotiate terms before signing, not after.

Shipped
  • Full codebase and architecture review
  • Test coverage and CI/CD audit
  • Engineering team structure assessment
  • Written risk report with 14 specific findings
  • Go/no-go recommendation delivered in three weeks

A strong product demo and a confident founder are not evidence that a codebase is safe to acquire, and a private equity firm three weeks from closing found that out through an audit it almost decided to skip.

Background

The private equity firm was acquiring an HR and payroll software company serving mid-market employers, drawn by strong revenue growth and a product demo that had impressed the deal team. With the transaction moving quickly and a competitive process underway, a full technical due diligence review had initially been deprioritized in favor of speed. At the eleventh hour, with three weeks left before signing, the deal team commissioned an independent codebase and architecture review.

Reading the code, not the pitch deck

Rather than relying on the target company’s own technical documentation or founder interviews alone, we read the actual codebase, checked the actual test coverage, reviewed the actual deployment process, and talked directly with the engineering team about how the system really worked day to day, not how it was described in the data room materials prepared for the deal.

The finding that changed the terms

The most significant finding: the payroll tax calculation engine, the component responsible for correctly calculating tax withholding across every jurisdiction the company’s customers operated in, was maintained almost entirely by a single outside contractor whose engagement was set to expire within six months of the acquisition closing. No internal engineer had meaningful ownership of that code, and documentation was minimal. Getting payroll tax calculations wrong is not a minor bug; it creates direct legal and financial liability for every customer relying on the platform.

A specific, costed risk instead of a vague concern

We didn’t hand the deal team a general impression that the codebase “seemed risky.” We delivered a written report with fourteen specific findings, each with a concrete description of the risk and, where possible, a rough cost or effort estimate to address it, with the contractor dependency flagged as the single highest-priority item requiring resolution before or immediately after close.

Results

The deal team used the finding to renegotiate specific terms, including a requirement that the seller fund a transition period to properly document and internally transfer ownership of the tax calculation engine before the contractor’s engagement ended, addressing the risk before it became the acquiring company’s unplanned emergency six months after the deal had already closed.

// Questions

FAQ

What kind of finding actually changes a deal's terms?

Findings with a specific, quantifiable cost attached, not vague concerns about code quality. In this case, the payroll tax calculation engine for one significant customer segment depended entirely on a contractor relationship set to end within six months of the acquisition closing, with no documentation or internal ownership of that code. That is a specific, costed risk a deal team can negotiate around, unlike a general sense that the codebase 'could be cleaner.'

Why do acquisitions sometimes skip a real technical review?

Time pressure and a strong product demo are usually the reasons. A working demo and a plausible growth story can make a deal team confident enough to move fast, and a real technical review takes a few weeks that can feel like they're slowing down a competitive process. The cost of skipping it only shows up after close, when it's the acquiring company's problem instead of a negotiating point.

How do you complete a meaningful review in three weeks?

By focusing entirely on where the real risk concentrates, the parts of the system tied to revenue-critical functionality, security-sensitive data, and single points of failure like the contractor dependency found here, rather than attempting an exhaustive line-by-line review of the entire codebase. A focused three-week review that finds the handful of findings that actually matter beats a slower review that spreads attention evenly across code that carries very different levels of risk.

Working on something similar?

Tell us what you're building, or trying to fix.

Get in Touch