
Some answers are awkward as prose. An order status, a plan comparison, a structured summary — these read better as a block than as a sentence. Custom AI components let you register such blocks once, styled to match your product, and Kai places them inside its replies where they fit.
Open your project settings and go to Custom AI components, then add a component. You give it:
A name in kebab-case, such as order-status or plan-comparison.
Fields, which define what data the component expects. Each field takes a name and a description, and the description is read by the AI — so “order total including tax, formatted with currency” beats “total”.
When to use, labelled as being told to the AI. This is the sentence that decides whether the component ever gets used.
The separate Description field is an internal note for your team and isn't what guides the AI.
For each published component, Kai is given its name, your when-to-use sentence, the field schema and an example. It never sees how the component looks. That means the when-to-use text is doing all the work — describe the situation, not the appearance. “When the customer asks about the status of a specific order” is useful; “a nice card with our brand colours” is not.
The component library is passed to the AI as part of every conversation, so it has a size limit. Components are taken in alphabetical order until that limit is reached, and anything past it is left out.
In practice this only bites if you register many components with long descriptions, and it fails quietly — a component simply never gets used. If you have a large library, keep field descriptions short and unpublish the ones you don't actually need.
Custom components work whether or not the Styled replies setting is on. That setting lets Kai format freely; components are the opposite approach — a fixed set of blocks you designed and approved. Using components alone gives you richer answers without handing the AI free rein over layout.