Assistant
Kai is Klyo's in-app assistant, powered by Google's Gemini. It lives in a panel on the right side of every page: open it with the round button in the bottom-right corner, the sparkles icon in the top bar, or Ctrl/Cmd and J. The conversation stays with you as you move between pages, even when you close the panel. Start over with the New chat button; a page reload also starts fresh, because Kai holds no session on the server between turns. Your past conversations are saved and reopenable under Chat history (see the last section).
What Kai sees
With every message, Kai receives a snapshot of your current screen: the page you are on, the campaign and builder step in view, a short description of what that step means and how far the campaign has come, and the live values of the input fields on screen, including text you have typed but not saved yet. That is why you can ask "what am I looking at?" or "what should I do next?" without explaining where you are.
The snapshot is data, not instructions: Kai treats it as a description of your screen and grounds its answers in real lookups.
What Kai can look up
Kai answers questions by calling read-only tools scoped to your Organization: your campaigns and their briefs, ad copy, ideas, storyboards, package configuration, render and generation status, combination packages, templates, the catalogue library, assets, activation status, the activity feed, your own role, and this guide. When a reply took several lookups, they fold into one "Looked things up" entry in the chat; expand it to see each call and its result.
When Kai asks instead of guessing
When your request could mean more than one thing, Kai asks before acting. "Make my title shorter" can target the campaign name, the publishing video title, or the ad copy headline, so a question card appears in the chat with one button per reading. Pick one, or just type your answer; the conversation continues from your choice, and nothing is proposed or changed until the target is clear.
Jumping to the right place
When the next move lives on another page or builder step, Kai offers it as a card with an Open button. Clicking it takes you there; Kai never navigates on its own.
Ask Kai about a failure
Every durable failure surface carries an Ask Kai affordance: a failed row in the activity feed and the failure console, a failed render or generation, a failed push. One click opens the panel with the question already sent, carrying what failed and the backend's or the provider's own words verbatim, and asking for the likely cause in plain language, what to do next, and a support-ticket draft when it is not something you can fix yourself. The wording is authored, not generated, so the same failure always asks the same thing. While Kai is answering another turn the affordance goes inert and says so on hover.
Toasts deliberately carry no Ask Kai. A toast is gone in seconds, and every failure it announces also lands on a surface that keeps it, which is where the affordance belongs.
Nudges
A nudge is a small pulsing marker Kai draws beside a setup choice that is legal but almost always a mistake, for example picking a catalogue as a matrix axis when another axis already reaches it through a lookup field. Hover or click the marker to see what was detected, with three ways out: the fix itself, Dismiss (hides that finding for good), and the same Ask Kai affordance as a failure carries, seeded with the nudge's own question. The wording is fixed, not generated, so a nudge costs nothing until you act on it. Dismissals are remembered per browser, and the whole feature has an On/Off toggle under your user settings.
Edits and approvals: nothing changes without you
Kai cannot change anything on its own. It has exactly two ways to suggest a change, and both wait for you:
- Field edits. When you ask Kai to rewrite something on screen (a brief field, for example), the new text is applied to the field and saves through the same path as your own typing. The field gets a highlighted border with an "AI changed this" tab attached: Revert restores exactly what was there before, and the dismiss cross hides the tab once you have seen it (typing over the field dismisses it too).
- Actions. For things like rendering the sample, rendering a combination, or renaming a campaign, Kai posts an approval card in the chat. Nothing runs until you press Approve; the action then executes under your own account, with your normal permissions, and lands in the activity feed like any manual action. Dismiss runs nothing. Catalogue work goes the same way: Kai can add up to 25 items to one catalogue in a single card (a longer list arrives as several cards) and correct one existing item, with the card spelling out each change old value to new so you read the whole before-and-after before approving. It cannot change a catalogue's field definitions or delete anything, and a catalogue edit reaches every campaign using that item, so it is library work, not a change to one campaign.
A read-only member cannot approve changes, and Kai will say so instead of suggesting them.
Attachments
Attach images, PDFs, or text files with the paperclip. Kai reads them for that conversation only; they are not stored in your asset library.
Where it runs, and what is recorded
Kai runs Gemini on your Organization's own Google Cloud project, the same project your generation jobs use, so its inference bills to your project, not to Klyo. Until your Organization's project is set up, Kai cannot chat and tells you so.
Each turn is recorded: who asked, the question, Kai's answer (kept up to a length cap), the tools it ran, the token counts, whether it succeeded, and the page it ran from. Turns group into conversations, listed newest first under Chat history (the clock icon in the panel header, or the h key). Reopening one replays what was asked, what Kai did, and what it answered. A conversation is yours alone: you only ever see your own, never the Organization's.
That record is for reading back and for usage monitoring, not a session Kai resumes from. It keeps nothing between turns on the server, so a reload starts a fresh conversation.

