1 · VideosPick from library / promo-machine / upload (async, uploads continue in background). Launch mode: one-audience-per-video or custom.
2 · GoalTwo goal cards → one prose card: budget · shared/own · bid · name. Provider pre-flight runs silently here.
3 · AudiencesShared-settings card + one card per audience (this page). Advanced: credit window, EU paperwork, schedule.
4 · AdsIdentity + tracking cards (collapsed prose) + the video⇄audience assignment grid with format warnings and live ad count.
5 · Check & launchThe rail's tree takes over the page — every line expandable to its techy editor, warnings inline, "skip flagged & launch rest", launch paused.
Same skeleton on every provider — cards appear/disappear per capability (TikTok adds an identity card in step 4; Google's step 2 has no shared/own budget choice; Snap's goal card set is eligibility-filtered).