One-pager · for design teams

Conversational Design Systems

When AI writes the words, takes the actions, and draws the screens, the product still has to keep its promises. So we design the rules, not just the surfaces.


The shift

We used to draw a screen and ship it exactly as drawn. Now the model composes each reply and each layout at runtime. The screen is an output. The behavior is the design.

Three layers

Intent
What the user is trying to do.
Commitments
What the product must say, must never say, and must never do without permission. Ours. Written down. Versioned. This is the layer most teams do not have.
Expression
The actual words and the layout. The model's job.

The product owns meaning. The model owns expression.

What design produces now

  1. Behavior spec. One intent, the facts it needs, the actions it may offer, the promises it must keep.
  2. Conversation contract. Must say, must never say, and what ships when a check fails.
  3. Salience rules. What stays visible before a confirm, on each surface.
  4. Test fixtures. Behaviors written as tests that block a release.
  5. Trace. From one id, reconstruct what was said, what was shown, and why.

When the model emits components, not sentences

Declarative UI does not complicate any of this. It sharpens it. The model composes from a catalog we own instead of inventing widgets, so a required disclosure stops being a sentence we hope for and becomes a required node we can assert on: present, before the confirm, not inside a collapsed container. Structural checks are faster and far more reliable than judging prose.

01 Catalog

Components, required props, composition rules, tokens, voice. Ours.

02 Composition

The agent picks and arranges components for this person, channel, and moment.

03 Gate

Structural check on the emitted tree, before anything renders.

04 Render

Our surface: rules enforced. Someone else's: rules requested, not guaranteed.

Gate fails, the pre-approved fallback tree ships instead.

One confirm moment, as three artifacts
// catalog/ConfirmTransfer.yaml   ours, versioned, reviewed
requires: [amount, fee, rate, received, recipient]
renders:  terms block, above the confirm control
never:    collapsed, or below the fold

// what the agent emits, composed for this turn
- Text: "Listo, este es el resumen"
- ConfirmTransfer: { amount: 350, fee: 4.99, rate: 18.90,
                     received: 6615, recipient: "María López" }

// gate/confirm.rules   runs before anything renders
terms present           → pass
terms precede confirm   → pass
terms not collapsed     → pass
anything else           → ship the fallback tree
What the tree renders as

Listo, este es el resumen.

Envías
$350.00
Comisión
$4.99
Tipo de cambio
18.90
María recibe
MX$6,615
Confirmar envío
When a check fails

Para enviar $350.00 a María López: comisión $4.99, tipo de cambio 18.90. Ella recibe MX$6,615.

Responde SÍ para confirmar

The fallback is stiffer, and it still carries every required term. A plain accurate sentence beats a fluent omission. Note also what the model was never asked to do: compute the fee, or remember the disclosure. It chose a component and filled declared props. The strongest version of this is to make bad output unrepresentable rather than detected. A confirm component that requires the terms cannot be composed without them. Validation is the second line. The catalog is the first.

What changes for us

The old way
Draw the screen

Every state drawn by hand, in a file.

Hand off

Spec, redlines, a ticket.

One screen ships

Everyone sees what was drawn.

Review happened once, on the drawing, before anything shipped.

The agentic way
Define the catalog

Components, rules, voice, fallbacks.

The agent composes

Per person, channel, language, moment.

The gate checks

Required nodes, in the right order.

Many screens ship

None of them drawn by hand.

Review happens twice: on the rules before, and on sampled output every week after.

We stop designing the output and start designing the space of allowed outputs. Which means:

  • Critique moves from screens to transcripts.
  • Taste gets written down as a rubric, so it can be scored, weekly.
  • Fallback and error copy becomes our most important writing, because it ships at the worst moment.
  • Every terminal state (abandonment, timeout, max retries, escalation) needs a designed exit, not just a technical one.

Two kinds of metric

Dials, which climb forever

Completion, effort, tone, time to resolve. Push them up release over release.

Floors, which never move

The disclosure appeared. No policy was invented. The money reached the right person.

A release can improve every dial and still be blocked because a floor failed. That is the system working. Without floors, the fastest way to raise completion is to ask less and warn less.

How much of this to adopt

In proportion to what a wrong sentence costs. A marketing bot needs almost none of it. A money flow needs all of it.

The question to ask of any AI feature

If the model changed tomorrow, what would still hold? Whatever the answer is, that is the part we own.

Full argument: Conversational Design Systems. Companion one-pager: The Adaptive Brand. Print-styled for handouts.