Every failed software project I have ever been called in to examine had one thing in common: the demo worked. It worked in the boardroom, it worked on the investor call, and it worked right up until the moment someone asked it to do something nobody had rehearsed.

A build audit exists for exactly this gap — between what the software shows and what it can sustain. After years of reviewing builds across startups and enterprise systems, the same failure patterns show up again and again. Here is what they look like from the inside.

1. Demo-ware architecture

The system handles the three flows the founders show investors, and falls over on the fourth. Underneath, the “platform” is a collection of special cases: hardcoded tenants, batch jobs pretending to be real-time, and admin backdoors doing the work of features that were never built. This is not always fraud — usually it is a team that ran out of runway and started performing progress instead of building it. The audit question is simple: can the system survive a user who does something unscripted?

2. Integration debt disguised as progress

Most systems do not fail inside their own codebase. They fail at the seams — payment providers, identity providers, third-party APIs, data syncs. In audit after audit, I find integrations with no retry logic, no idempotency, silent error swallowing, and credentials scattered through code and config. Each one is a small outage waiting for a trigger: a provider rate-limit change, a token expiry, a weekend deploy on the other side of an API.

3. Identity and security as afterthoughts

This is the category that should keep a board awake. Shared admin accounts with no audit trail. Authorization checks in the frontend but not the API. JWTs that never expire. Customer data flowing through systems nobody mapped. None of this shows up in a feature demo, and all of it shows up in a breach disclosure. When I audit a build, the identity layer gets read first — because it is where shortcuts compound fastest.

4. The single-threaded team

Sometimes the architecture is fine and the delivery system is the risk. One engineer understands the deployment pipeline. Two people can touch the database migration. Nobody has ever done a rollback. The bus factor is not a theoretical exercise; it is the answer to “what happens when the person who built this takes a vacation?” A build audit maps not just the code, but who can safely change it — because a system only the original authors can run is a system that cannot grow.

5. Observability theater

Dashboards exist, but they measure the wrong things: request counts, not error budgets; uptime of the marketing page, not the payment path. When something breaks at 2 a.m., nobody gets paged — or worse, everyone gets paged for everything, so nobody looks. I ask one question to test this: “Show me the last incident.” If the answer is a shrug, the team is flying blind, no matter how many charts they have.

What a good audit actually delivers

A build audit is not a code review, and it is not a rewrite proposal. Done right, it produces three things:

The best time to audit a build is when the demo still looks good. That is when the findings are cheapest to act on — before the fragile system becomes the expensive problem, and before the next check is signed against assumptions nobody verified.

GhostOp performs independent build audits: fast, unsentimental reviews of production-readiness, delivery bottlenecks, and integration risk. Explore engagements.