The onboarding pills Jev picks from the question Z just asked, with the labels owned by code
Canned chips are the ready-made answers for a known onboarding question
(ZLY-2025). They sit in the same row as the generic quick answer
chips, just above the text box, and only
on the onboarding chats: /onboarding, /onboarding/talent,
/onboarding/brand and /onboarding/agency.
There is no step list. Z can ask in whatever order the conversation takes. After the reply text is on screen, Jev reads that reply and picks one known question type, or none. Code owns the pills, the highlighted one, and the line under the row. The model that writes Z's reply does not invent them.
A tap sends that pill's label as an ordinary message. The text box stays next to the pills, so the person can still type.
When the question has a recommended answer, that pill is highlighted: a pale blue fill, a light blue border, and a star. It is never pre-selected. Under the row the line reads "Z recommends" and the highlighted name, then the reason. The other pills stay white.
A tap sends at once. There is no second step of marking pills and then tapping Done. The next reply keeps arriving after that tap. Scrolling while it is still being written does not stop it or leave an error in the chat.
The text box stays on screen the whole interview, with one exception: while a research card is open, the box is hidden. It comes back once the person presses Done. While Z is answering, and while the photo or sign-up card is waiting, the box is only greyed out. It is ready again as soon as the reply has finished, even if the pills have not appeared yet. The pills never grey it out and never show a spinner in it.
Pills show only when that reply has finished and the newest line is in view. When they arrive with the reader already at the end, the conversation scrolls so the message they answer sits fully above them.
Scrolling up hides the pills. A round down arrow appears just above the text box. Its name is "Scroll to the latest message". Tapping it, or scrolling back to the end by hand, hides the arrow and brings the same pills back. The arrow does not stay on once the page is already at the bottom, and the pills and the arrow do not swap back and forth there.
The arrow is not only for pills. It shows whenever the reader has left the newest line: after their own message, on a reply with no pills, and while Z is still writing.
The pills also stay hidden while the research card is waiting for an answer: the card is how the person answers that turn. After a reload, the pills come back if that reply is still the last message and the newest line is in view.
Onboarding asks Jev twice, in order, and both picks share one wait of 2 seconds.
Other chats never see this list. They go straight to the generic sets, at the 70% bar.
Jev chooses the row. The words in the row are fixed.
| Type | When Z is asking | Pills | Z recommends |
|---|---|---|---|
| Deal types | which kinds of deals they want | Social campaigns, Free products / gifting, Sponsorships, Brand ambassador, Appearances, Open to anything | Open to anything, so you never miss a good offer, and you can always say no later. |
| Smallest offer | the smallest offer worth their time | Free products, Any amount, $100+, $1K+, $10K+, $100K+ | Any amount, so you see everything, and you can raise your floor anytime. |
| Dream brands | which brands they want, or who Z should look for | Find the best for me | Find the best for me. I'll match you with brands that already fit. |
| Brand formats | what the talent should do for the brand | Social posts, Ads with their face or voice, Appearances, Merch, Open to ideas | Open to ideas. I'll suggest the formats that work best for your brand. |
| Budget | a spending band | Under $1K, $1K to $10K, $10K to $100K, $100K+, Not sure yet | none |
| Agency kind | represent talent, or buy for brands | I represent talent, I buy for brands | none |
| Roster source | pull people from the site, or upload a file | Pull it from my site, Upload a file | Pull it from my site. Fastest if your site already lists them. |
| Confirm | what it heard, and whether that is right | That's right, Let me fix something | none |
The agency interview does not ask for the roster. That pair is in the list for when Z does ask how to add people. Pulling the roster from the site still does not start a crawl.
When a count of people already found on the site is passed in, the roster line changes to "I already found N on your site." The onboarding chat does not pass that count yet, so the line stays the one in the table.
The format highlight is always "Open to ideas". It is not taken from what research already found.
There is no "Step K of N" above the chat.
| Area | File |
|---|---|
| The eight types, the reason lines, and the fallback | packages/z-agent/srv/src/onboarding-chips.ts |
| The generic sets the fallback uses | packages/z-agent/srv/src/quick-answers.ts |
| Onboarding uses the canned list first | packages/z-agent/srv/src/rooms.ts (streamRoomChat) |
| Jev, then Gemini Flash Lite | packages/util-srv/src/classifyChoice.ts |
| The pills, the star, and "Z recommends" | packages/z-agent/client/src/components/quick-answer-chips.tsx |
packages/z-agent/srv/src/onboarding-chips.test.ts — each pick, a weak
score, a slow call, the roster count, the Gemini fallback, and the fall
through to Proceed.packages/z-agent/client/src/components/quick-answer-chips.test.tsx — the
star, the "Z recommends" line, and a tap that sends at once.