The setup: two revenue sites running on Base44, a no-code platform, and a cancellation date about five days out. One of them was a paid book portal: Stripe checkout, gated reader, 18 audiobook chapters, roughly 610MB of media, all living inside a platform SDK that would stop existing.
The plan lived in CLAUDE.md from hour one: four numbered priorities (checkout, reader experience, public sales pages, legal), each marked DONE as it landed, so any session could pick up cold. The old app's full source (about 1MB of exported code) sat in a reference file that the agent grepped for specific components instead of reading whole, which kept context spend sane across the whole migration.
Decisions that mattered:
- No database. The old platform had one; the new build does not. Stripe is the source of truth for who purchased (search paid PaymentIntents by email), with an env allowlist for comps and admin. First access after checkout comes from the retrieved session, not the search API, because the search index lags up to a minute behind a real purchase. The agent flagged that lag; I made it the design.
- Media out of git. 610MB of audio and a 40MB video went to Vercel Blob with stable paths, behind a single mediaUrl() helper, so local dev serves from /public and production serves from Blob with one env var flipped.
- The paywall is server-side. Book content is served by purchase-gated APIs. The public bundle contains zero chapters.
- DNS last, cancellation later. A and www repointed (DNS-only in Cloudflare, mail records untouched), every hostname curl-verified live, and only then did the old platform get cancelled. Burn the bridge after you cross it.
What went wrong: the first version of the purchaser login gate swallowed email-send failures and searched Stripe incorrectly. A paying customer could have been locked out silently. It surfaced because the launch checklist includes walking the full buyer path end to end, in production, with a real card. The fix commit made email failures loud.
Shipped: 33 routes, build green, live before the deadline, zero downtime for buyers.