AI Agents Inherit Your Bad UX. Here's How to Fix It.
AI agents skip your menus, but they inherit every gap underneath and drop the checks people relied on. How to design states and copy for two readers.
This week I had a call with a team building a tool for big companies. A bot messages employees on Slack and asks, “Hey, are you still using this tool?” You tap an answer and it moves on. At the end, the company gets a report: who uses what, how often, and whether that $30,000-a-year contract is still worth renewing.
I thought it was smart. Then I thought about what it means. We built so much software that we now need AI to tell us which of it we actually use.
Stack check App
Hey Ana, quick one. Are you still using Roadmapper?
Every day Sometimes Not really
Thanks, that’s all I needed.
ToolUse it weeklyPer year
- Roadmapper 9% $30,000
- Docs hub 81% $12,000
- Whiteboard 34% $8,400
$30k for 9% of us
For years the industry did sales, sales, sales. More features, bigger contracts, more seats. Nobody closed a bigger deal by taking something out. So products got heavier and heavier, and now AI is the thing that scans through all of it and finds what you actually need.
It’s funny, because that was always the job of design: give people what they’re looking for. Somehow we all just said, fine, let the chat do it. My question is: is that good enough?
AI really does fix the top layer
I’m not against any of this. I use it every day.
I work in the chat. If I want to schedule a post, I don’t open the scheduling tool anymore. There’s an MCP for that, so I just ask. If I need a Zapier automation, I describe it and the AI sets it up. Would I go and build that automation myself, click by click? Not really.
In my opinion, it works best at two extremes. On one side are people who don’t understand tech, for whom talking is easier than learning an interface. On the other are people who understand tech deeply and are so bombarded with tools that chat is just faster. The middle, which is most people once you get out of tech, still uses apps the normal way.
For the people it works for, AI goes straight around the bloat. Buried settings, cluttered screens, ten steps to do one thing: the agent doesn’t care. That part is real, and it’s good.
- Dashboard
- Inbox
- Calendar
- Reports
- Integrations
- Billing
- Settings
- Publishing
- Drafts
- Queue
- Schedule
3 menus deep. the chat doesn’t care
Schedule my post for Thursday at 9.
Scheduled for Thu, 9:00.
The problem is what’s underneath.
The structure is still there
Look at my Zapier example again. Zapier is still there. The AI didn’t replace it. It’s driving it.
That’s true everywhere. Take a booking system. The voice layer can be as smooth as you like, but the booking system still has to know what can be booked, where, when, for whom, and what happens when a class is full. The agent can only work with what the system tells it.
This is where bad UX stops being annoying and starts producing wrong answers.
Think about a dead end: “No results found.” A person sees it, gets confused, tries another filter, maybe gives up. An agent sees it and guesses why. No results, so nothing must be available on Thursday. Maybe. Or maybe the filter didn’t support what you asked, and there are three classes. “No results found” looks exactly the same either way. So the agent tries something else, gets “no results found” again, and again, and at some point it tells you there’s nothing.
Book me a spin class on Thursday evening.
search_classes(day: "Thu", time: "evening") No results found
search_classes(day: "Thursday", time: "evening") No results found
search_classes(day: "Thu", time: "night") No results found
There’s nothing available on Thursday evening. Want me to try Friday?
What was there
- Spin · Thu 18:30
- Spin · Thu 19:15
- Spin · Thu 20:00
“evening” just wasn’t a filter
Or you book a class and the confirmation doesn’t include the address or the invoice. The agent has to go and find them, or guess. Then the user comes back: “But where is my invoice? But where is this? But where is that?”
Good agents do stop and ask when they notice something is off. The problem is the flaw that doesn’t look like a flaw. An agent can handle a problem it can see. It passes along the ones it can’t.
The usual pushback is that agents will just get smarter. Fine. Say they get ten times smarter. A smarter agent still can’t know what the system doesn’t tell it. If “no results found” doesn’t say why, it guesses better, but it’s still guessing. If the confirmation has no invoice, no amount of intelligence puts one there. Smarter doesn’t fix missing.
The checks disappear
This is the part I think about most.
In a UI, we put checkpoints everywhere so people know what happened. You save something and a toast says: changes saved, they’re live, here’s the link. In a booking system I worked on, when you publish a class it says, “Class created. Now everyone can start booking it.” One line, at the right moment, and you know it’s live.
When an agent does the task, that moment is gone. What you get instead is a paragraph, and people don’t read paragraphs. Sometimes a visual is just much better. So you end up reading between the lines, trying to work out what actually happened. AI can hide behind text very easily.
In the app
- Class
- Spin
- When
- Thursday, 18:30
- Spots
- 20
Publish
Class created. Now everyone can start booking it.
Through an agent
Publish the Thursday spin class.
I’ve set up the class with the title and time you gave me. You didn’t mention a capacity, so I used the default of 20. I also set it to public, which should mean people can see it, although depending on your settings it may still need to be published from the dashboard before bookings open. Let me know if you’d like me to change anything!
so… is it live?
It happens to me all the time. Something in the answer feels off, so I ask, “Did you check that?” It didn’t. It goes back, checks, and the answer changes. I wrote about what that means for AI answers in How to Design AI Answers People Can Trust.
But I only notice because I know the task. That’s the uncomfortable part: you can only catch the mistake if you already know the answer. So the people chat helps most, the ones who don’t understand the tech, are the least able to catch it when it goes wrong. And the better agents get, the less any of us check. An agent that’s right 99% of the time makes the 1% much harder to spot.
So whose job is it to protect those people? I don’t think it’s the user’s. It’s the product’s.
AI fixes the shallow part of UX, inherits the deep part, and throws away the part that let you check.
What to do about it
So if the agent goes around the UI anyway, why pay a designer? Because the agent goes around the menus. It doesn’t go around the decisions: what states the product has, what the error says, what you tell someone after they publish a class. That was always the actual job.
My philosophy for UI has always been simple. The UI should always, always tell you what the issue is, give you an exit from the situation, and reassure you about what you just did.
None of that changes with agents. What changes is that there are now two readers.
“No results found” used to be written for a person. Now an agent reads it too, and it can only act on what the copy tells it. “No results for ‘evening’. Try a time, like 6 to 9 pm” helps both of them. The person knows what to try next, and the agent stops guessing. That’s a fix you can make tomorrow.
No results found
No results for “evening”.
This search takes a time. Try 6 to 9 pm.
Search 6–9 pmThe agent reads it too
search_classes(day: "Thu", from: "18:00", to: "21:00")
3 classes
same copy, two readers
The confirmation has to carry everything: what happened, where it lives, what happens next, the invoice. Not because a person will read all of it, but because the agent needs it to give that person the one line they actually need.
The other pushback is, “We’ll skip the UI and just ship an MCP. The agent is the interface now.” Okay, but then what’s your moat? Brand is not just the output. Brand is product. Brand is user experience. Brand is trust. If you’re one MCP away, the agent can swap you for the next one, and the user won’t even notice.
Trust gets built in those small moments: the toast, the “class created.” If the agent does all the reassuring, the agent gets the trust. And the blame. Whoever shows the confirmation owns the trust.
Somebody has to ask why
There’s one more thing, and it’s not about the AI. It’s about us.
You can spin up a website over a weekend now, and it looks amazing. You can add this feature, that feature, and the AI will happily build all of it. It never pushes back. It does whatever you ask.
Building used to be slow enough that someone in the room asked, “Why do we need this feature?” Now it’s fast enough that nobody has to. With FOMO, growth targets and pressure to ship, nobody does.
- AI summaries built in 40 min
- Dark mode built in 1 h
- A second dashboard built in 2 h
- Team leaderboard built in 25 min
- Export to PDF built in 1 h
- Chat widget built in 3 h
why do we need these?
So someone has to choose to. Someone has to have the vision, be opinionated about where the product is going, and say no. Then test it, and iterate.
For three years we judged AI by how much it surprised us. The next three, we’ll judge it by whether we can check it. And whether we can check it comes down to the same thing it always has. Do you know your customer? Do you know what they need at that specific moment? It always, always comes down to that.