Keeping Users in Control: Edit, Undo, Regenerate
Review-before-apply, granular accept and reject, version history, and undo — the controls that turn AI suggestions into something users rely on.
People adopt AI suggestions they can steer and ignore the ones they can only accept or reject whole. If Deskmate proposes four changes to a ticket and three are right, an agent with a single "Apply" button has to choose between fixing the fourth by hand afterward or throwing away three good suggestions. If a regenerated draft wipes out the edits they just made, they stop editing drafts. If nothing can be undone, they stop letting the AI touch anything that matters.
Control is what turns an AI feature from a novelty into a tool. In this lesson you'll build the four controls that do the most work: review before apply, granular accept and reject, regeneration that keeps history, and undo that respects later human edits. The examples use Deskmate's suggested ticket updates and drafted replies, with Postgres for the history that makes it all possible.
The control ladder
Not every AI output needs every control. Match the control to what the output does once it's accepted:
| Output | Example | Controls it needs |
|---|---|---|
| Read-only text | A ticket summary | Regenerate, report a problem |
| A suggestion in a field | Suggested category | Change the value; nothing else |
| Changes to records | Set priority, reassign, add tags | Review before apply, per-change accept, undo |
| Text the user will send or publish | A drafted reply | Edit in place, targeted revision, version history |
| External side effects | Sending an email, issuing a refund | Explicit confirmation of the exact action, a delay window where possible |
The further down the table, the more the output changes things outside the AI's own little box, and the more control the user needs. The rest of this lesson builds the middle rows, which is where most product features live.