The chat box is the default AI interface because it's easy to ship, not because it's right. This playbook builds a decision tree from your jobs-to-be-done to the full affordance menu — madlibs, parameter controls, preset styles, inline actions, hybrid surfaces — so open-ended text input becomes a choice you defend, not a reflex.
Workflow area: AX Patterns · Tier: Advanced · Hands-on time: ~40 minutes
A free-text box hands the user a blank page and the burden of prompt engineering. For open-ended exploration that's honest; for "translate this to formal French" it's malpractice — the user knows exactly what they want, and you made them write an essay about it. Shape of AI catalogs the alternatives under Prompting patterns: constrained inputs that encode intent through UI instead of prose. The craft is matching affordance to job: how well-defined is the task, how many parameters vary, how often does it repeat? This playbook turns those questions into a reusable decision tree and prototypes the winner.
List jobs, not features. Write every task users bring to the AI surface as a verb phrase with a variability note: "summarize a thread (length varies)," "draft outreach (tone + recipient vary)," "find contradictions in research notes (open-ended)." Ten to twenty jobs is typical. The variability note is the input to everything that follows.
Run each job through the decision tree. Four questions, in order — the first "yes" that fits picks the affordance:
Sanity-check the mapping with an adversarial prompt.
You are an AI-UX reviewer who believes chat boxes are overused.
Here are my jobs-to-be-done with the affordance I chose for each:
[PASTE JOB → AFFORDANCE TABLE]
For each row:
1. Say whether a MORE constrained affordance could do the job, and
what the user would lose.
2. Flag any madlib with more than 4 slots (that's a form, not a
madlib) and any preset list longer than 6 (that's a browse
problem, not a pick problem).
3. Identify which single job, if any, justifies keeping a free-text
escape hatch on this surface.
Be opinionated; I will make the final call.
Expect pushback like:
"Draft outreach" — you chose free text. A madlib covers 80%:
"Write a [warm/direct] note to [name] about [topic], under
[length]." Loss: unusual asks. Mitigation: 'More options…' opens
text input pre-filled with the madlib as a prompt.
Prototype the top two affordances in Figma Make. Build the madlib or parameter panel as a working mock with realistic slot values and one real-looking output per configuration. Constrained inputs live or die on microcopy — slot labels are doing the prompt engineering now, so test that a first-time user can fill the madlib without instructions.
Design the graduation path. Constrained affordances should leak power gradually: the madlib's "advanced" link reveals the assembled prompt for editing; presets expose their underlying parameters on long-press; inline actions offer "adjust…" after the first result. Users who outgrow the constraint become your free-text users — by choice, with a mental model the constrained UI taught them.
When you mine existing prompt logs for intent clusters, treat them as user data — strip names, emails and pasted document content before analysis, and stay inside your organization's approved tooling.
Every prompt affordance is a trade between user freedom and user burden — walk each job down the tree, pick the most constrained affordance that preserves the job, and leave free text as the earned escape hatch rather than the lazy default.