Higgsfield's signup quiz sizes credits. Relay charges at state changes, so the same shape of quiz does something else here: it detects which state change has already happened — just you, a second person, or a regulated org — and the plan card assembles live while you answer. The pick at the end is one tap on something you watched get built.
Left is the Relay twist on Higgsfield's showreel panel: instead of product output playing on loop, the plan card is the showreel — every answer lands a line on it, so the "congratulations" moment has nothing to reveal. Deep links: ?arrival=campaign · ?arrival=invite · ?arrival=claim · ?plane=team · ?step=plan. Fixture data; no request leaves the page.
The capture: higgsfield.ai/claude-ai-video-generator → /quiz?rp=/claude-ai-video-generator (seven dashes on the team branch, six on personal) → username claim → "Congratulations! a personal 55% OFF offer" with a three-hour countdown → Ultra / Team / Scale cards with the seat stepper pre-filled from the quiz → a follow-up mail quoting the quiz back. Read as mechanism rather than styling, every screen is doing one of three jobs: narrowing the plan, banking a personalisation payload, or manufacturing urgency. Relay takes the first two and refuses the third.
| # | Higgsfield does | Mechanically | Verdict | Relay's version |
|---|---|---|---|---|
| P1 | A landing page per arrival intent — "Claude AI Video Generator", three numbered steps, the MCP URL in a copy box | The connector setup is the hero; the quiz is one click away and carries a return path | Adopt | The in-app /connect page and the connect resource already carry every client's steps (GUIDE.connect-clients). The missing piece is the public door per client — one page, three steps, mcp.relayctx.com in the box. Out of this page's scope; belongs to marketing beside working-with-relay.html. |
| P2 | The quiz is its own route, /quiz?rp=… | Detachable from any landing; returns you where you came from | Adapt | Relay's intake lives at activation, the moment that already exists and already captures plan consent (relay-app activation.ts). The "return" is First Relay Step 1. |
| P3 | "How do you plan to use Higgsfield?" — personal / team, auto-advance | Picks the plane; everything after branches on it | Adopt | Maps one-to-one onto the two org planes (SPEC.org-plan-model §0: plan is a property of the org). Kept binary. |
| P4 | "How many people in your team?" — Just me · 2–5 · 6–20 · 21–100 · 100+ | Pre-fills the seat stepper (2 on Team, 5 on Scale) and routes Team vs Scale | Adopt | Same bands. Pre-fills seats against Team's three-seat floor; 100+ is Enterprise, sales-led, no card (Plans §3). |
| P5 | "What do you want to achieve?" — six goal cards, single-select | Personalisation payload + which bundle to headline on the plan card | Adapt | Relay's goals are its verbs — pick up where I left off, move context between tools, keep a team in sync, build a second brain, govern what agents carry, receive something sent to me. A goal picks the Track (the voice of the first relay) and the plan line to headline. It never locks a plan. |
| P6 | "What matters most to your team?" — up to three; a selected card grows a reassurance line ("SOC 2 & GDPR fully secured") next to a plan that says "SOC 2 (coming soon)" | Inline objection handling; the reassurance is a promise line | Adapt | Same gesture, with the promise made honest: every reassurance line carries a truth state — built, Enterprise ladder, or not yet. Governance answers route to Enterprise. We do not chip "coming soon". |
| P7 | "Which features do you want to try?" — chips, choose as many | Feature-interest payload; nothing downstream visibly uses it | Adapt | Replaced by the one question that changes setup: where do your agents live? Chips pre-fill the connect step's pill picker (connect-catalog.ts); three or more is the Pro line. |
| P8 | "How did you hear about us?" — thirteen chips, including AI assistants | Self-reported attribution | Adopt | Written to users.signup_source, which exists. "An AI assistant" and "someone sent me a Code" are Relay's own channels. Self-report sits beside tracked attribution (acquisition_campaign), never over it (E10). |
| P9 | "Claim your username to get started" — a generated handle, one checkbox for Terms + Privacy + 18 | Identity and consent at the end of the quiz, before the offer | Reject | The legal gate is the one hard gate and sits before all of this (activation.ts); the handle is Step 6's "make it yours", the celebration, not a toll at the door (Activation v2 reconciliation, onboarding-walkthrough-v1.html). No second consent line. |
| P10 | A grey footer on every screen — "Helps us set up the right workspace", "We'll right-size your workspace and plan", "This helps us improve our product" | A trust line under every ask | Adopt, literally | Ours names the consumer of the answer — the column it writes, the card it pre-fills, the step it seeds. An answer whose destination we cannot name is a question we should not ask. |
| P11 | "Congratulations! You received a personal 55% OFF offer" — confetti, erik_PERSONAL_PROMO, 02:58:00 counting down | Reciprocity + urgency; the "personal" code is the first name in a template; the headline 55% is 43–54% on the cards | Reject | Anti-upsell brand; No Surprises is ratified. The honest twin already exists: a campaign's access grant — plan | trial, minted by an operator (SPEC.campaign-management §8) — shown pre-picked and stated plainly. The countdown becomes certainty: what will never change, printed on the card. |
| P12 | Three plan cards: seat stepper pre-filled, annual toggle on by default, credits translated into outputs ("~333 Kling 3.0 videos"), checks and greyed crosses per section | The plan card as the quiz's answer; abstract units made concrete | Adopt the form | Seats from P4; included lines render from billing.TIERS, never typed (G1); no annual toggle because no annual price exists (checkout concept, 2026-09-12); Free is always on the screen, pickable; the commitments sit beneath the cards. |
| P13 | "Skip this offer" beside "Full Pricing Details" | An always-visible exit | Adopt | Skip on every screen. Skip = Free with defaults, and Re-size my plan on the Plan page re-runs the intake any time (E6). |
| P14 | The mail: "I noticed you're looking to focus on video-gen", "solve that creative bottleneck you mentioned in the quiz", a code that "expires in 3 hours", signed by a PM persona, a P.S. with 22 million creators | Quiz answers as merge fields; then persona, expiry and social proof | Adapt / Reject | The merge fields are the good idea — the Day-0 drip mail quotes the goal and the plan picked. The persona, the expiry and the P.S. go. Signed by a person who answers replies. Specimen on the last screen of §A. |
The deeper difference. Higgsfield has fourteen models to sell and credits to meter, so its quiz must estimate appetite. Relay's monetisation boundary is not usage (Plans §2 — don't gate the individual, gate the org): Pro is "I depend on this daily", Team is "a second person needs the same context", Enterprise is "compliance says we must". Each of those is a fact about the person's situation, and facts can be asked. That is why five questions are enough and why none of them needs a limit to bind first.
The rule the prototype runs. It is a table, not a model: the person can read why the card says what it says, and change any input. Nothing in it gates anything — the plan screen always shows Free, and Skip is always Free.
| Question | Answer | Feeds | Status |
|---|---|---|---|
| Q1 | Just me / me and other people | The org plane — personal or team. Candidates: {Free, Pro} or {Team, Enterprise} | drawn |
| Q2 | 2–5 · 6–20 · 21–100 · 100+ | Seat pre-fill (3 · 6 · 21 · —); 100+ → Enterprise; 21–100 with a governance priority → Enterprise | drawn |
| Q3 | One of six goals | Track (voice of the first relay) + the headline line; govern → Enterprise; receive → Free, shortest path | drawn · Track exists on campaigns only today |
| Q4 | Up to three priorities (team) | Reassurance lines with truth states; audit / SSO / custom terms → Enterprise | drawn |
| Q5 | Clients | Connect-step pill picker pre-fill; ≥3 → Pro line ("more connected clients") | picker built · pre-fill drawn |
| Q6 | Source | users.signup_source; beside acquisition_campaign, never over it | column built |
| Grant | Campaign access = plan | trial | Pre-picks the plan screen; a trial names its plan and days | built 2026-09-18 |
activation.ts: "Everyone defaults to Free"), which means the pick rate is unmeasured. The first thing this changes is that Free becomes a choice you make.Higgsfield has one door. Relay has four (DEC-030: /x/ landing, /i/ redemption, ?ref= attribution, and a Code someone gave you), and receiving is always free is the first commitment. So the intake is placed by arrival, not fired at everyone.
| Arrival | What they came for | When the intake runs | Plan screen shows |
|---|---|---|---|
| direct | Registered at relayctx.com | At activation, full | The recommendation, Free beside it |
| /x/ campaign | A personalised demo relay to receive | After the demo receive, at activation — the demo is the hook, not the form | The campaign's access grant pre-picked (plan | trial); EAP reads open-ended with nothing to pick (E3) |
| /i/ invite | Someone else's workspace | Three questions only — goal, clients, source. Plane and size are the org's | No pick. "You're joining {org}; the plan is theirs." (E7) |
| ?ref= referral | A colleague's Loop link | At activation, full; the Loop commitment applies at checkout, as it does today | The recommendation, with the commitment noted — not a countdown |
| Code in hand | To receive one thing | After the first receive, never before (E1) | Free, unless they choose to be asked |
The guard metric for this section is time to first receive, which must not move. An intake that lengthens the receive path has been placed wrong, whatever it does for the pick rate.
register → approve → activate → connect (step 1) → first receive (step 2) → first send (step 3) → first invite (step 4) — funnel.py, stamped once per user, mirrored to GA4. No stage records a plan pick. Activation defaults to Free, so "picked Free" and "never looked" are the same row.
plan_picked stage between activate and connect, stamped on an explicit pick — Free included — with {plan, recommended, accepted, arrival} as PII-free params.RELAY_SELF_SERVE_ORG_CREATE.They came to receive one thing. Receive first; the intake runs after the first receive, and only offers itself. Receiving is commitment #1 and a questionnaire in front of it breaks the product's premise.
The plan screen shows the grant as the pre-picked plan — "Your invite includes 14 days of Pro, no card" — stated plainly. A trial names its plan and its days (grant_trial(pro, 14d)); on a team plane the grant applies to the personal org and the Team card is priced as usual.
EAP is plan with plan = beta — open-ended, ends by graduation, never by lapse. The intake still runs for Track and clients; the card reads Early Access · open-ended and there is nothing to pick. DEC-012's promise is printed, not implied.
The pick is recorded as intent, the card says what happens next ("we set the workspace up with you"), and the answers route to the CRM as a PQL. Never a dead button; never a silent downgrade to Free.
Enterprise is sales-led and custom. No price on the card, no fake "from $X". The action is Talk to us and the answers travel with the lead; Free stays pickable beside it so nobody is stranded on a form.
Skip = Free with defaults, no re-ask on the next visit. Re-size my plan on the Plan page re-runs the intake any time; the earlier answers are the pre-fill, not a lock.
Plane, size and plan are decided by someone else. Ask only goal, clients and source; show whose workspace it is; no plan pick. Asking them to size a team they were invited to is the wrong question to the wrong person.
Plan is a property of the org (SPEC.org-plan-model §0), so plane, size and priorities belong to the org record; goal, clients and source to the user. A second org gets its own three answers; the user's three carry over.
The card recomputes. No answer ever locks a plan, and the plan page always allows a change in either direction — the downgrade-safe brain is commitment #3.
They arrived via /x/elevate-2026 and say "word of mouth". Both are true. signup_source takes the self-report; acquisition_campaign keeps the tracked value; neither overwrites the other.
Included lines render from billing.TIERS at build time, never from plan.ts PLAN_FEATURES (which still says "unlimited" where code says otherwise — gap G1). The card cannot print a promise the enforcement does not keep.
The legal gate runs first and alone. The intake carries no checkbox of its own; the plan pick carries plan consent, as activation does today. Two consent surfaces would be one too many.
activation.ts (GET …/plans → {plans, preselected}).plan.ts getAccessGrant / renderAccessGrantHtml.access = none | plan | trial, EAP as plan = beta — relay-platform SPEC.campaign-management §8, built 2026-09-18.users: signup_source, acquisition_campaign, first_demo_campaign (§7).funnel.py.connect-catalog.ts, one source for the Connect page and the onboarding step.billing.TIERS: Pro $15/mo; Team $15/seat/mo, three-seat floor. Stripe hosted checkout with promotion codes; Loop commitments applied at checkout.onboarding_drip.py.plan_picked funnel stage; Re-size my plan on the Plan page.RELAY_SELF_SERVE_ORG_CREATE default off); Plans §6 sequences the flip.Reference capturedhiggsfield.ai — /claude-ai-video-generator, /quiz?rp=… (seven screens), the offer modal, the pricing page, and the follow-up mail. Fourteen screenshots, EC, 2026-09-19. Ask of record: "Just want to conceptualize this as part of ensuring we get plans picked more than anything."
relay-boarddocs/strategy/plans-master-plan.md §2 (the three boundaries), §3 (the canonical tiers), §6 (the gate sequence) · docs/strategy/pricing-commitments.md (ratified 2026-08-13; the five invariants on the card) · docs/product/onboarding.md ("a new user has no Erik") · docs/product/sequential-onboarding-program-map.md (First Relay, Steps 1–6) · docs/growth/growth-engine.md (Engine 1 feeds Engine 2) · docs/DECISIONS.md DEC-012, DEC-025, DEC-030.
relay-platformdocs/SPEC.campaign-management.md §7 (four classes, one namespace, Track), §8 (access mode) · docs/DESIGN-NOTE.streamlined-experience.md (a preset, never an audience detector — the intake sets no flags) · docs/GUIDE.connect-clients.md · src/relay/funnel.py · src/relay/onboarding_drip.py · src/relay/handles.py.
relay-appweb/src/activation.ts (the philosophy comment: one hard gate, activation is intentional, plan choice carries consent) · web/src/plan.ts · web/src/onboarding.ts · web/src/connect-catalog.ts.
relay-creativeActivation — profile (the live-preview precedent this page's left panel descends from) · Sequential Onboarding (Step 6 owns the handle) · Org onboarding (where a Team pick lands next) · Checkout (where a Pro pick lands next; the billing.TIERS-only rule) · Welcome mail (the template the Day-0 specimen would ride) · Forms kit.