If you recognize one of these, the app is not hopeless. It usually means the AI tool got you something that runs, and nobody has checked the part that actually protects your customers and your money.
DATA RULES
One customer can read another customer's data
Missing or wrong row level security, tables left open, admin keys sitting in the browser. This is the one that ends businesses, so it goes first. I check whether a stranger can reach your users data, close the hole, and prove it with real tests.
LOGINS
Login works for you, not for your users
Sign-up loops, magic links that expire, sessions that drop, roles that do not stick. I trace it through the auth provider, the redirects, and the code that trusts the wrong thing, and verify a real user can actually get in and stay in.
PAYMENTS
The card is charged but nothing happens
Stripe checkout that succeeds with no order, webhooks that never land or land twice, subscriptions that drift out of sync with your database. I verify money and records agree, and keep agreeing, not just on the day you tested it.
YOUR DATA
The AI changed or deleted your own data
An agent with write access to production is one bad instruction away from wiping a table or rewriting rows nobody asked it to touch. I check what moved, put guardrails and real backups in place, and confirm the data you depend on is still there.
AFTER LAUNCH
It worked at launch. Is it still working?
A build-time tool does not run in your production next month. Quietly failing payments, an integration that started returning errors, an exposure that opened after a change. I verify it is still safe and still charging correctly, long after the demo.
INHERITED
A WordPress or SaaS codebase you did not build
The developer left, the plugin stack is a pile, the repo has no docs. I read it, work out what is safe to touch, verify what is actually at risk, stabilize it, and leave it documented for whoever comes next.