Authorisation on the server
Every privileged action re-checked in the backend, because a hidden button is not a permission.
Security hardening
An API key in the browser bundle. Authorisation checked only in the UI. It's the same short list nearly every time, and every item on it is exploitable in an afternoon.
Security hardening for an AI-generated app means moving trust to the server: authorisation re-checked in the backend rather than enforced by hiding buttons, secrets held in a managed vault instead of the client bundle, every input validated server-side, and rate limits on anything that costs money or sends mail. Gen2Prod reviews the codebase against the OWASP Top 10, fixes what is actually exploitable, and hands you a report with every finding rated and reproduced.
Every privileged action re-checked in the backend, because a hidden button is not a permission.
Keys moved into a managed vault or server-side environment, rotated, and the exposed ones revoked.
One schema validating input at the boundary, shared with the form so the error messages still match.
Caps on signup, password reset, uploads, and every endpoint that calls a paid API on your behalf.
Correct cookie flags, sensible token lifetimes, and a password-reset flow that can't be used to enumerate your users.
Known-vulnerable packages upgraded, CSP and security headers set, and both wired into CI so they stay that way.
We read the code against the OWASP Top 10 and try the obvious attacks on a copy of the app, rather than working an abstract checklist.
Findings sorted by what an attacker could actually do and what it would cost you. Critical items are fixed the same week.
Each fix is re-tested against the exploit that proved the bug, and the check moves into CI where it can't quietly regress.
No. A pentest attacks a running system from the outside; we review the source, fix what's wrong, and re-test the fixes. At this stage that's usually more useful — most AI-built apps have findings you can read straight out of the code. We'll say so plainly if a formal pentest is the right next step.
Assume it is public, because anyone can read a browser bundle. Treat it as leaked: rotate the key, move the call server-side, and check the provider's usage log for what it was used for. That's the first thing we do.
Yes, on request, before you send us anything. We work from read-only copies and your code stays yours.
The fixes ship as small pull requests alongside your normal work, and the CI checks exist so the next release doesn't reopen what we closed.
Deploys should be boring: push, watch it go green, roll back in one click if it isn't. We set that up once and you stop thinking about it.
Learn moreThe worst way to learn about an outage is a support email. Monitoring is a couple of days of work and it changes how the whole thing feels to run.
Learn moreThe demo worked. Then it needed streaming, retries, cost caps, and an answer for what happens when the model is wrong. That's the part we build.
Learn moreStart with a free 15-minute call. We'll tell you honestly what it takes to get you live — no pressure, no jargon.
Senior engineers only · NDA on request · Your code stays yours