🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.🚧 Under construction β€” I'm migrating this site from Framer to Next.js and publishing it early for testing, so a lot of the content is still in flux.
Open menu
Switch to Darkhello@product.inc
AIUX patterns

Wizard or conversation

Tags: agents, flows, chat

Use a conversation when you cannot know in advance what the user will ask for. Use a structured flow when you can β€” when the inputs are a printable list, later answers depend on earlier ones, and something irreversible happens at the end. The version worth building is usually neither: a structured flow that the agent fills in, stopping at a review step the person actually reads.

When to use a structured flow

When a conversation is straightforwardly better

The shape to aim for is a small number of named flows for the jobs that dominate the logs, with a conversation underneath for everything else β€” not one or the other everywhere.

The decision

Rendering diagram…

The flow worth building

The user says what they want in their own words, once. The model proposes values into the flow's draft β€” every field it can infer, left visible and editable. The person works the way people actually work with a nearly-right document: scan it, fix the two things that are wrong, press the button.

Rendering diagram…

This beats a pure conversation for a narrow, practical reason: re-prompting is a terrible editing instrument. If the model got one of eleven values wrong, you want to change that value β€” not describe the change in prose, hope the rewrite preserves the ten that were right, and re-read all eleven to check. Prose is a good way to specify something the first time and a bad way to amend it the fourth. It beats a pure form for the obvious reason: nobody filled in eleven fields.

What a flow has that a transcript cannot

Three to six steps is the range that works. Below three, a sectioned single form is less clicking for the same result. Above six, drop-off climbs and it starts to feel like a form someone is administering to you.

Grounded in

Poppy, a voice-first assistant for teachers, is structurally a chat app β€” streaming responses, persisted threads, a two-panel layout. The part that made it usable is the part that isn't chat: the home screen opens on four one-tap actions, because a teacher with ninety seconds and a blank prompt does not have a conversation, they have a staring contest.

The wizard properties above come from an internal pattern library of 18 pages and roughly 13,900 words, ten of which are about a single moment β€” a change being committed, and what the person does if it was wrong.

Anti-patterns

The test

  1. Could you print the list of required inputs before the user arrives? If you could, print it.
  2. When the eleventh value is wrong, what does the person do? If the honest answer is "ask again and hope," the interface is wrong regardless of how good the model is.
  3. What is the last irreversible thing that happens, and is there one screen showing everything it is about to do? If not, that screen is the next thing to build.

The full argument: Wizard or conversation: when an agent shouldn't be a chat.