At first
It ships
Prompts turn into features faster than any team could type them.
Lovable, Bolt, v0, Cursor, and Claude Code get you to a working product in days. What they do not give you is an app that survives its first real users, its first attacker, or its first developer handover. We read the code line by line and tell you exactly where it stands, in writing, in 48 hours.
AI coding tools optimize for the screen in front of you. Everything that does not appear on that screen is negotiable to them, and security lives almost entirely off-screen.
What the demo shows
OKA sign-in page that looks exactly right. Everything the demo touches is on this screen, so the demo never fails.
What sits behind it
3 CriticalThe API behind it
Never checks who is calling. Swap the user id, read someone else’s account.
The database under that
Row-level security off. Anyone holding the public key can read every row.
The bundle you ship
The payment secret sits in the JavaScript every visitor downloads.
None of it breaks the demo. All of it breaks the week you launch.
At first
Prompts turn into features faster than any team could type them.
Then
No tests, no review. Each new prompt quietly undoes something that worked yesterday.
Eventually
The code outgrows anyone’s understanding of it, and the developer you hire quotes a rewrite.
An audit turns that uncertainty into a list: what is wrong, where it is, and what it would cost an attacker to use it.
The generator changes the shape of the code, not the mistakes. These are the findings that come back again and again, whichever tool produced the app.
Prompted codebases rarely land on one stack. A Next.js front end on Supabase, an Angular panel over a Java service, a Swift app calling Python. The languages change what the findings look like, not what they are.
Not on the list? Ask on the call. The eight dimensions we grade are language-agnostic, and we tell you before you pay if your stack is one we would rather not take on.
You get a written document, not a scanner dump. Every finding names the file, explains the concrete failure it enables, and carries a severity we are prepared to defend on a call.
Example report card
Illustration of the report format. The findings above are representative of what we see in AI-generated codebases, not results from a client engagement.
No procurement cycle and no discovery phase. Four steps, most of them ours.
Thirty minutes, free. You show us the app, we ask what it is meant to do and who it is meant to serve, and we quote the audit on the spot.
Your repository, or the export from your builder, plus read-only access to your backend project. NDA first if you want one. We never need production credentials.
Eight dimensions graded. Every finding names a file, the concrete failure it enables, and a severity. Walked through live if you want it.
Take the report to your own developer, or pick one of the three paths below. The recommendation is in the report either way, and you are under no obligation.
The report ends with a recommendation. Sometimes it is a two-day fix. Sometimes the honest answer is that the foundations have to be rebuilt, and we say so plainly rather than selling you the largest option available.
Days, not weeks
The critical findings, closed. Secrets rotated and moved server-side, access control enforced on the API rather than in the interface, row-level security written properly. Your stack stays exactly as it is.
1 week
Everything in the targeted fix, plus schema validation on every write path, a test suite covering the flows that make you money, a pipeline that blocks a breaking change, and development separated from production.
2+ weeks
For when the foundations cannot be patched. We keep your screens and your UX, the part vibe coding gets right, and rebuild what sits underneath: authentication, data model, API layer, security, tests, and deployment.
An audit that leaves you reliant on the people who wrote it has failed. Whatever path you take afterwards, you end up owning the result.
What founders ask us before booking an audit. If your question is not here, put it in the form and we will answer it on the call.