04 / escrow
Accept stays idle until the budget is on the platform
A marketplace that lets creators accept before the brand’s money has landed is asking them to spend reputation on a promise. The first version did that. Offers went out the moment assemble passed. That was the second product lie.
Launch now stops in funding. Offers are written. Accept is idle. The brand opens Stripe Checkout for the full budget. Confirm reads the session back from Stripe: payment_status must be paid, the metadata must match the brand and the campaign, and amount_total must be at least the budget. One cent short stays fail-closed. A missing secret key never creates a session.
Only then does accept open. Pay has a third gate on top of “every accepted seat posted” and “measure is clean”: escrow must already be funded. Anomalous engagement — more than 3.2× the creator’s baseline ER, or under 0.15× — holds that seat and holds the escrow. The campaign does not flip to paid so the graph can look finished.
What pay does write, on a clean run, is a platform ledger row. The detail field says the quiet part: creator bank transfers wait on Stripe Connect. Connect is not onboarded. Queuing a transfer I cannot send is honest. Marking the creator paid in the world is not.