A special invite
An invite code can open one of two invites. The default is the register page with the code filled in, the way invites work today. A special invite opens a paper film made for one person first. The way in is always one tap away, and the call to action takes the frame when the film ends. Campaigns can plug into the same switch later.
Both phones below are live pages, not pictures. The special invite plays The receipt, rebuilt as a template from the one-off made for one person (Relay CK6V5EQBZF). Here it's addressed to no one.
Default and special, side by side
The same code. One record says which invite it opens.
The register page, code filled in
The stealth register page as it runs today: dark ground, the request form, and the invite code in its own field. Good for everyone a code is handed to.
A film first, the way in always one tap away
A paper film drawn live from the invite's own record. Skip to your invite sits on the film and in the top bar. When the film ends, or on skip, Take your seat takes the frame. The seat step is in the same paper look, with the code already applied.
How one code decides
The link carries the code and nothing else. The record behind it decides.
today
special invite
later · on hold
/x/<slug>, or a personal invite that belongs to a campaignusers.acquisition_campaign)This sits on relay-platform's existing model. /i/{CODE} is already the invite door, and a campaign's class already says what kind it is (SPEC.campaign-management §1). A special invite is one more value on the code's record. That's a relay-platform change, not built.
What the code's record carries
Proposed. Every personal field lives here, never in a link.
| Field | Values | Why |
|---|---|---|
kind | standard · personal · campaign (later) | which invite the code opens |
film | receipt · paper | the template the landing plays |
card | first name, their words, their artifact, team size, … | what the film is drawn from. Read only for a valid, unredeemed, single-use code; a 404 for anything else |
cta | register · meet | the seat step, or We'll set it up together for an invite shown in person |
campaign_slug | optional | ties a personal invite to a campaign for attribution, once campaigns are back |
stage | draft → copy passed → ready → shown or sent → watched → redeemed | where it stands, in the console |
events | opened · played · skipped at m:ss · watched to the end · seat taken | so the console can say who watched and who jumped straight in |
Around it
The rest of the concept.
Gates that stay shut: campaigns on hold · named people only · consent before any send · stealth until the provisional files · outcome-level copy · Ada passes the words. Real one-person invites live in relay-marketing, never in this repo.