Talent Onboarding

The /onboarding/talent interview, from the handle to the talent dashboard

Overview

/onboarding/talent is the onboarding for talent: creators, athletes and anyone who wants brand deals. It starts with their handle, researches it, and then asks only what the research cannot know. It ends on the talent dashboard.

It runs on the same page, chat, research card, photo card and sign-up as Agent Setup Onboarding. What changes is the list of questions, their order, and a few rules that code enforces. The wording comes from the Question and Flow Framework (ZLY-2022).

Flow

What Z asks

The questions are TALENT_LANDING_INTERVIEW_QUESTIONS in packages/z-agent/srv/src/onboarding-questions.ts. The agent asks one at a time, in this order, in its own words. Each area also says when it counts as covered; the agent judges that from the chat itself.

#AreaWhat Z asksCovered when
1sources"What's your handle? Add your site or other links too, so I can find offers that fit."A handle or link (researched), a short description, or a decline to share one
2identity"What's your full name, first and last?"The research card showed a name they kept. Asked only when it did not
3phone"What's your phone number? I'll text you when a brand wants to work with you."A number, or a clear decline
4dealTypes"What kind of deals do you want?"The kinds of deals they want. "Open to anything" counts
5smallestOffer"What's the smallest offer worth bringing you?"Free products, any amount, or an amount such as $100, $1K or $10K
6dreamBrands"Any dream brands you'd love to work with?"Brands they name, or "find the best for me"
  • If the research finds nothing about the handle, the agent says once "I couldn't find @handle. Can you add a link to your Instagram, TikTok, YouTube or site?" and moves on if they still have no link.
  • Deal types, smallest offer and dream brands show canned chips. A tap sends that answer. The person can still type.
  • There is no question about non-negotiables.

What code does, not the model

  • Opening lines. Code posts the intro and the handle question when the room is created (onboardingOpeningLines). They are always word for word and show at once.
  • The first reply is not a name. It is a handle, so it is never saved as the name (asksNameFirst is false outside /onboarding). The name comes from the research card. When they type it instead, code saves it to onboarding.ownerDisplayName.
  • Phone. Code reads the phone from the chat reply (phoneFromChatReply), normalizes it to E.164 and saves it to onboarding.phone. Ten digits with no country code is a US number. No model writes this field, so the agent never invents a number.
  • Smallest offer. An amount is a minimum the talent volunteered. "Free products" or "any amount" leaves the minimum empty.
  • Links. Every link or @handle the talent gives is theirs. It is saved to onboarding.links and the agent researches it.

The phone, end to end

After sign-up

  1. Photo. "Add a profile image so brands see who they're working with." Skip works too.
  2. Sign up. The auth modal opens on the page. Its name field is prefilled with the talent's name.
  3. Claim. Bouncer and Scout are enabled, and the onboarding is copied to the account: name, confirmed profile, links and phone. The account type stays talent, the default.
  4. Welcome SMS. Two SMS texts go to that phone: "You're all set..." and "Filter your offers..." (onboarding-talent-sms.ts). They are sent once, only when SMS is configured and the account has not opted out.
  5. Dashboard. The talent dashboard opens. z_agent_onboarding_talent_completed is logged just before.

This replaces the first talent experiment (ZLY-1965), which asked the name first, asked about non-negotiables and ended on a "You're in" screen.

Key files

AreaFile
Questionspackages/z-agent/srv/src/onboarding-questions.ts (TALENT_LANDING_INTERVIEW_QUESTIONS)
Goal, persona instructions, Distil notepackages/z-agent/srv/src/onboarding-instructions.ts (LANDING_FLOWS.talent)
Opening linespackages/z-agent/srv/src/onboarding-copy.ts (TALENT_INTRO, TALENT_HANDLE_ASK)
Phone from the chatpackages/z-agent/srv/src/onboarding-phone.ts
Chat turn and claimpackages/z-agent/srv/src/onboarding.ts (applyOnboardingChatTurn, finalizeOnboardingRoom)
Welcome SMSpackages/z-agent/srv/src/onboarding-talent-sms.ts
Pagepackages/offers/client/src/app/components/onboarding/OnboardingPage.tsx
Routeapps/zooly-app/app/(pages)/onboarding/talent/page.tsx

Testing

  • Unit tests: onboarding-questions.test.ts, onboarding-instructions.test.ts, onboarding-copy.test.ts and onboarding-phone.test.ts on the server; onboarding-flow.test.ts on the client.
  • Manual walkthrough: tests/manual/zly-2026-onboarding-three-flows.md, stage 1.