Audit the deployed behavior of an AI-built app, not only the prompt or code diff that produced it. The launch questions are the same as any SaaS: who can access data, where secrets live, whether payment creates access, and how failure becomes visible. AI-generated code often creates a working happy path before the surrounding controls are explicit. A useful audit makes those assumptions observable through public scanning, role checks, provider probes, and a short browser journey.
The short answer
Audit the deployed behavior of an AI-built app, not only the prompt or code diff that produced it. The launch questions are the same as any SaaS: who can access data, where secrets live, whether payment creates access, and how failure becomes visible. The useful version of this work is answer-first: state what the reader should do, explain the evidence that supports it, and show the limit before the reader mistakes a first layer for a guarantee.
For a live SaaS, the important question is rarely whether one URL returns 200. It is whether the route, browser, provider, and data side effect agree with the promise the customer was given. That is why a durable audit keeps the scope, expected behavior, observation, and next action together.
How the workflow works
AI-generated code often creates a working happy path before the surrounding controls are explicit. A useful audit makes those assumptions observable through public scanning, role checks, provider probes, and a short browser journey. Begin with a representative surface and only widen the scan when the first result is understood. This reduces false confidence and makes the output easier to hand to an engineer, founder, client, or reviewer.
A passing result should be dated and reproducible. A failing result should explain impact, identify the broken boundary, and preserve enough safe detail for a second person to verify the diagnosis. If a question requires credentials, source access, or adversarial judgment, say so and route it to the deeper review it needs.
Practical checklist
- List generated routes, dependencies, environment variables, and database tables.
- Scan the client bundle and source maps for private credentials.
- Test anonymous, owner, and cross-tenant reads and writes.
- Run signup, onboarding, checkout, and recovery as a real user would.
- Attach the release baseline to the commit that produced it.
Work through the list in customer-impact order. Fixing a low-risk metadata warning while a payment webhook silently drops fulfillment events creates a prettier dashboard, not a safer release. The owner should be able to point to the exact result that moved from failed to verified.
Mistakes to avoid
- Assuming generated code used the safest default.
- Testing only the route the builder preview showed.
- Leaving a permissive database policy because the UI appears private.
- Adding more features before fixing the first boundary the audit exposed.
Do not use word count, schema volume, or check count as a substitute for usefulness. The page, scan, or report should help a real person make a decision. Preserve the limitations, cite external standards when a claim depends on them, and update the visible date when the workflow changes.
How to verify the next release
Run the same scope after the change against the canonical production surface. Compare the before and after observations, inspect the route or provider that changed, and keep the follow-up monitor or release gate that will catch a regression. That is how a one-time article checklist becomes an operating habit.
