The /onboarding/agency interview, from the website to the agency dashboard with Roster
/onboarding/agency is the onboarding for agencies: agencies that represent
talent, and agencies that buy talent for brands. It starts with the agency's
website, researches it, and asks what kind of agency it is only when the
research cannot tell. Then it asks the person's name. There is no roster
question: the roster is added from the dashboard after sign-up. It ends on the
agency dashboard, with Roster on.
The account is the agency. The person filling it in is saved as the contact. It runs on the same page, chat, research card, photo card and sign-up as Agent Setup Onboarding.
The questions are AGENCY_LANDING_INTERVIEW_QUESTIONS in
packages/z-agent/srv/src/onboarding-questions.ts, asked one at a time in
this order.
| # | Area | What Z asks | Covered when |
|---|---|---|---|
| 1 | sources | "What's your agency's website? Add any social handles too, so I can learn who you work with." | A website or handle (researched), or the agency name when the site cannot be opened |
| 2 | agencyKind | "Do you represent talent, or buy for brands?" | The research role or description says which. Asked only when it does not |
| 3 | contact | "And your full name, first and last? Not the agency, you, the person I'll be working with." | The person's full name |
Research reads @handles as well as links (see Research Tool and Findings Card). In the brand and agency interviews that is a risk: an example of the talent a brand wants, or talent an agency mentions, is someone else's handle. Two rules keep them off the company:
researchTool for those
handles.savesChatLinksAsOwn in applyOnboardingChatTurn).agency, and in the same transaction setAccountType enrolls Roster.
The onboarding is copied to the account memory: the agency as
identity.displayName, the person as identity.contactName.| Area | File |
|---|---|
| Questions | packages/z-agent/srv/src/onboarding-questions.ts (AGENCY_LANDING_INTERVIEW_QUESTIONS) |
| Goal, persona instructions, Distil note | packages/z-agent/srv/src/onboarding-instructions.ts (LANDING_FLOWS.agency) |
| Opening lines, link rule, account type | packages/z-agent/srv/src/onboarding-copy.ts (AGENCY_INTRO, AGENCY_SITE_ASK, savesChatLinksAsOwn, accountTypeForOnboardingFlow) |
| Chat turn and claim | packages/z-agent/srv/src/onboarding.ts (applyOnboardingChatTurn, finalizeOnboardingRoom) |
| Account type and Roster | packages/db/src/access/account.ts (setAccountType) |
| Logo wording | packages/offers/client/src/app/components/onboarding/copy.ts (PHOTO_ASK_AGENCY) |
| Route | apps/zooly-app/app/(pages)/onboarding/agency/page.tsx |
onboarding-questions.test.ts, onboarding-instructions.test.ts
and onboarding-copy.test.ts on the server.tests/manual/zly-2026-onboarding-three-flows.md,
stage 3. It checks that the agent never asks for the roster.