🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.🚧 Designers never finish their own portfolio. This one ships rough on purpose and gets better in public. If something looks half-done, it probably is, and I'm on it.
Open menu
Switch to Darkhello@product.inc

Name the actions in the user's verbs

Tags: naming, affordances, agents

Look at the buttons in almost any generative product and they describe the model: Generate. Summarise. Rewrite. Expand. Ask AI. Every one is accurate about the mechanism, and every one is silent about the job the person arrived to do.

The team's vocabulary becomes the label

This happens for an understandable reason. The operations are the vocabulary the team works in all day — the prompt summarises, the pipeline rewrites, the endpoint generates. So when it is time to label the control, the operation is the word to hand.

But nobody opens a product wanting to summarise. They want to catch up on a thread before a meeting. They want to reply to a parent before the bell. They want to turn a page of notes into something they can hand out.

An action named for the operation makes the user translate their goal into your mechanism before they can begin — work out that "catch up" means "summarise", that "make this simpler for my class" means "rewrite" — and that translation is exactly the step where people hesitate, guess, or leave.

The label is doing recognition, not description

The operation underneath can be identical. That is the point. Renaming the action does not change what the model does; it changes what the control is for.

A description tells the user what will happen mechanically. A recognisable label tells them this is the thing you came for. The second is what gets clicked, because it matches a goal the person already holds rather than asking them to form a new one.

A test that holds up surprisingly well: would the user say this word aloud about their day?

Where the operation word fails that test, it is the team's vocabulary, not the user's.

Why this matters more for generative products

Traditional software had the same temptation and mostly resisted it, because its operations were narrow — Save, Print, Send are both the mechanism and the goal. A generative model is different: one operation serves dozens of goals. "Rewrite" is how you shorten a message, formalise it, translate its register, and adapt it for a child, all at once.

So a single operation-named button hides a dozen recognisable actions behind one unrecognisable one. Splitting it by goal is not cosmetic. It is how a user discovers that the capability they need exists at all.

This extends to agents, where the tools an agent exposes are an interface too. A tool called update_record is legible to the model and opaque to the person approving it; reschedule the delivery is legible to both.

When the operation name is right

Grounded in

Poppy's actions are named for the work teachers actually do — plan a lesson, write to parents, build a quiz, adapt content to a reading level — rather than for anything the model does to text.

The last one is the clearest case. Adapt content to a reading level and rewrite with simpler vocabulary can be the same model call. Only one of them is something a teacher says about their afternoon, and only one of them is recognised in the two seconds a teacher has between one class leaving and the next arriving.

Anti-patterns

The smallest version worth building

List every action label in the product. Next to each, write the sentence a user would actually say about why they wanted it. Wherever those two disagree, the sentence is the better label.

That is an afternoon of copy, it touches no model code, and it is usually the cheapest adoption improvement available.