Prompt2Prod

Ship checklist for AI-built apps

Run through this before you put an AI-built app in front of users. Each check is one line, with a short note on why it matters and how to confirm it.

Secrets and security

  1. 1. No API keys or secrets in client code or the repo.

    Why: anything shipped to the browser can be read.

    Check: search the built bundle and git history for key prefixes.

  2. 2. Server-side checks on every write.

    Why: the UI hiding a button doesn’t stop a direct request.

    Check: call each write endpoint without the UI and confirm it’s refused when it should be.

  3. 3. Database access rules are on (for example, row-level security).

    Why: default-open tables let any signed-in user read others’ data.

    Check: query another user’s rows with a test account.

  4. 4. User input is validated on the server.

    Why: client checks are easy to skip.

    Check: send an empty, oversized, and malformed value to each form endpoint.

Sign-in and accounts

  1. 5. Password reset and email change work end to end.

    Why: these are the flows most often left half-built.

    Check: run each one with a test inbox.

  2. 6. Signed-out users can’t reach signed-in pages or data.

    Why: a missing route guard exposes private pages.

    Check: open private URLs in a private window.

Payments (if you take money)

  1. 7. Paid access is granted from the payment provider’s webhook, not the success page.

    Why: a success URL can be opened without paying.

    Check: visit it directly with no purchase.

  2. 8. Refunds and cancelled subscriptions remove access.

    Why: otherwise access outlives payment.

    Check: cancel a test subscription and reload.

  3. 9. Test mode is off and live keys are set in production only.

    Why: with test keys in production, customers can’t actually pay.

    Check: confirm which keys each environment uses.

Reliability and monitoring

  1. 10. Errors are logged somewhere you’ll see them.

    Why: users rarely report bugs; they leave.

    Check: throw a test error in production and find it.

  2. 11. The app shows a useful message when a request or AI call fails.

    Why: AI and third-party calls fail and time out.

    Check: break the key or network and watch the UI.

  3. 12. Rate limits or spend caps on paid APIs.

    Why: one loop or abusive user can run up a large bill.

    Check: confirm a cap is set in each provider’s dashboard.

  4. 13. You can restore the database.

    Why: a backup you’ve never restored may not work.

    Check: restore to a scratch database once.

Privacy and basics (not legal advice)

  1. 14. A privacy page says what you collect and which services receive it.

    Check: compare it with your analytics and third-party scripts.

  2. 15. Users can ask to have their account and data deleted, and you know how to do it.

    Check: delete a test account fully.

  3. 16. Each launch-blocking item has acceptance criteria you’ve checked.

    Why: “done” should mean something testable.

    Check: every item above is ticked or has a ticket.

Download the checklist (.md)

Free. No sign-up. It’s a markdown file you can paste into your repo or tracker.

Turn a rough prompt into acceptance criteria and tickets