From our SaaS audits
What we find inside SaaS companies
Patterns from the technical due diligences we run for investors and boards.
Newsletter
A bi-weekly letter from our CEO Andreas Creten for SaaS leaders and CTOs: what we see in audits, AI engineering and the companies we work with.
From our SaaS audits
Patterns from the technical due diligences we run for investors and boards.
Infrastructure documentation goes stale because it is a second thing to maintain. Terraform plus cloud discovery plus a few query tools describes the system better than any diagram, and leaves humans to document only the why behind the odd decisions.
Sentry silently drops transactions that blow past its span and payload limits, so the heaviest background jobs are exactly the ones missing from your dashboard. Capping span count and truncating span descriptions on bytes brings them back.
Teams accrue learning debt when shipping always beats getting better. It stays invisible on every dashboard, compounds fastest under AI-speed change, and quietly caps the ceiling a buyer is willing to price.
Synthetic checks like curl and Lighthouse measure a request your users never make. A HAR file captures the real logged-in flow, and handed to Claude alongside the codebase it turns a wall of JSON into a ranked list of fixes that get implemented in the same conversation.
A back-end engineer set out to redesign a React app with an AI agent and came out actually knowing React. The unlock wasn't the prompting, it was understanding the code well enough to steer it. As the cost of entry collapses, knowing the technology matters more, not less.
Analytics only shows the events you remembered to add, never the ones you forgot. Let Claude instrument features as it builds them, then run a skill that audits your tracking against your own docs and live data, flagging what's missing, noisy, or quietly broken.
17 lock-wait timeouts in two hours. The SELECT was doing exactly what it was supposed to. The problem was what InnoDB did silently in addition: a gap lock on the write path, invisible in logs, invisible in EXPLAIN, visible only in production.
Writing code by hand used to be the job. Soon it will be a hobby, like woodworking or growing your own veg. What a company pays for now is judgment: knowing what to build, catching the answer that looks right and isn't, deciding when it's good enough to ship.
A written style guide is a museum piece nobody enforces. An LLM changes that: it reads rules in plain prose and applies them on every pull request, reaching judgment calls no linter could express. The style guide stops being a document and becomes a runtime.
An autonomous email agent hit a missing script, spiralled through 25 pointless shell calls, then fabricated email content including a prompt injection, and acted on it. The fix is not more warnings. It is structural validation before the model ever sees the data.
Most architecture methods try to predict which failures will hit. Residuality Theory does the opposite: it throws random stressors at a design and keeps whatever survives. The randomness is the point, because resilience that depends on predicting the future is not resilience at all.
Hand two developers the same tool and you get opposite verdicts. 'Useless' is rarely a fact about the thing. It's a fact about the person holding it. The rare skill was never operating the tool. It's imagining the door a tool opens before the use is obvious.
AI is now a reader of your documentation. When context lives outside the repository, gaps appear and assumptions creep in. Moving documentation closer to the code makes the system easier to reason about, for people and for machines.
Senior engineers carry the front of every decision, every code review, every on-call shift. The peloton runs best when roles rotate. When the star eventually leaves, someone else needs to know what wind feels like.
Using Claude Code as the orchestrator and Codex as the engine gives you the best of both tools: Claude's UI, Codex's depth, and minimal Claude token spend. The economics only work when the task is big enough to justify two layers.