Agentic AI · Processing Transparency · ServiceNow Otto · 2023–Present

Making AI’s
Work Legible

Designing how an agent communicates while it thinks, decides, and acts

In a conversation between two people, a pause usually means someone is thinking. Agentic AI changed the meaning of that pause: Otto was no longer just retrieving an answer, it could search systems, consult policies, make decisions, create records, route work, and act on someone’s behalf. I led the design of how that work becomes legible across model design, content design, and product design.

What this produced

0customer escalations asking to disable processing updates after the redesign shipped. Companies had been turning the feature off entirely before.
A Spec That TraveledThe processing-state specification outlived the project it was written for, and is still the reference for how Otto describes its own work.

The model had to describe what it was doing. The language had to translate that behavior into human terms. The interface had to make the work visible enough to trust, without turning system machinery into the main experience.

I challenged the assumption that the problem was latency, partnered with research to understand what users actually needed during the wait, turned those findings into model-behavior rules, and owned the product direction for AI Steps, a shipped pattern that made agentic work visible without forcing users to inspect it. After launch, customer escalations asking to disable processing updates dropped to zero.

Role
Staff Designer, Conversation Design Lead · Strategy, Model Behavior, Content Systems, Product Direction, Research Direction
Timeline
2023 – Present
Impact
Disablement escalations dropped to zero · shipped across Otto
Collaborators
UX Research, Engineering, Product, Visual Design, Motion Design
The shipped AI Steps pattern in Otto: a collapsed steps panel above the answer, describing the work in task language.
The shipped pattern: AI Steps, describing the work in task language. What it replaced comes later. It is the argument of section 02, not the opening image.
01 / Agentic AI Turned Loading Into a Trust Problem

Everything between “I understand” and “here’s what I did”

Processing transparency is everything the AI communicates between “I understand what you want” and “here’s what I did.” For a simple chatbot, that space might only need a spinner. For an agent, it can contain understanding, retrieval, policy checks, comparisons, decisions, actions, and verification.

01Understand
02Investigate
03Decide
04Act

The system may perform dozens of backend operations inside that middle space. The design problem is deciding what a person needs to know in order to understand what is happening and judge whether the AI is doing the right thing.

As Otto became more capable, the loading experience evolved in stages.

Stage 01 · 2023
Three-dot loader

Something is happening.

Stage 02 · 2024
Skeleton loader

Something more substantial is happening.

Stage 03 · 2025
Technical processing labels

The system can show execution, but only from its own point of view.

Stage 04 · 2026
AI Steps

The system describes work in terms users can understand.

The turning point was that agentic AI changed what the wait meant. Users were no longer simply waiting for an answer. They were waiting while the AI acted on their behalf.

The AI had become more capable. The way we communicated its work had not become more understandable.
Earlier loading patterns

The first loaders worked because the system’s job was limited. A spinner or skeleton state communicated enough when Otto was retrieving or generating a response within a few seconds.

But once Otto began interpreting records, consulting policies, making decisions, routing work, and creating or changing data, generic loading states stopped communicating what users needed to know.

The technical-label phase tried to solve that by exposing execution, but it exposed the wrong layer. It made system activity visible without making the work understandable.

02 / The Transparency We Had Was Making Things Worse

More information, less understanding

The technical processing state looked transparent internally. Every agent, workflow, tool, and system operation could produce a visible step. Users might see:

Executing AI Agent ‘fetching_user_details’
Payload ID rId-00432 processed by CAB agent
Rationalizing
Initializing case handler / Writing to HRSD table
Architecture exposed No user goal No hierarchy High cognitive load
The original Now Assist processing panel: an expanded 'View AI Steps' list showing raw backend names like 'Used the tool WPS Fetch User Location' and 'Used the tool WPS Knowledge Graph,' next to the live chat thread mid-response.
What actually shipped before the redesign: real tool and agent names, straight from the backend, with no translation layer between them and the user.
Actual product · before the redesign

From an engineering perspective, the system was showing its work. From a user perspective, the work was mostly meaningless. Usability research found that people struggled with terms like “Payload ID,” “Used tool,” and “Rationalizing.” Customers escalated the experience. Some asked for the information to be reduced. Others asked for processing updates to be removed or turned off entirely.

The contradiction

We added processing detail to increase transparency. Users responded by asking us to hide it. That told me the real question was not “how much of the system can we expose?” It was “what information actually helps someone trust the work?”

Why technical transparency failed

The issue was not that the information was inaccurate. It was accurate from the system’s perspective and unhelpful from the user’s perspective.

The execution chain mirrored backend architecture: agents, tools, APIs, payloads, databases, and routing logic. But users were not trying to decode the architecture while they waited. They were trying to understand whether Otto had understood them, whether useful progress was happening, and whether the final result would be trustworthy.

That distinction became foundational: transparency and trust are related, but they are not the same design problem.

03 / I Reframed the Problem From Latency to Value of Automation

The problem wasn’t the wait. It was uncertainty during it

The organization was focused on latency. As AI tasks grew more sophisticated, responses naturally took longer, and the concern was that users would abandon a slower experience. I thought we were measuring the wrong thing. If an AI takes ninety seconds to complete something that would otherwise take a person an hour, is ninety seconds actually slow?

I partnered with UX Research on studies exploring latency and output quality, and pushed the framing from wait-time tolerance to perceived value of automation.

Time to response

How long before the AI answers.

Time to outcome

How long before the task is actually complete.

The research showed that users tolerated longer waits when the result was meaningfully better, the task seemed complex enough to justify the time, and the system communicated what it was doing.

It took a while, but if I knew this is the amount of information it would give me, it’s totally fine.
Participant · latency and output-quality study
The problem wasn’t simply the wait. It was uncertainty about whether anything valuable was happening during it.

That shifted my design lens. I mapped the waiting experience around user trust rather than system execution.

What the user is asking themselves, and when
Did it understand me?
Is it making progress?
Does the work make sense?
Why did it make that choice?
Can I trust the result?
Am I still in control?

Six questions, asked in order, all of them about trust rather than time

Users were not trying to inspect the system. They were trying to decide whether to trust the outcome.

See the research behind the reframe

The study originally asked how long users would wait before the experience became unacceptable. I reframed the work around a sharper question: when does waiting feel worthwhile because the AI is reducing effort?

The strongest patterns were:

Better outcomes justified more time

Participants preferred higher-quality, more complete results even when they took longer.

Expected effort shaped expected latency

Users understood that complex work should take more time than simple work.

Communication changed the wait

People were more comfortable when they understood what the AI was doing and why the work was taking time.

This made processing transparency part of the value proposition of automation, not just a loading-state problem.

04 / I Used Research to Find the Right Abstraction

Task, not technology

To find out what users actually understood, I partnered with UX Research on a card sort using real examples of Otto processing steps. We asked three things: What can users understand? What do users actually want to see? Which backend operations feel like one piece of work?

The card sort revealed that users did not create a simplified version of our architecture. They created a different representation entirely. They grouped work around what the AI was accomplishing, not which component was executing.

The useful level sat between technical and generic.

Too technicalExecuting ‘relationship_rules_engine’
Right level“Checking related incidents.”
Too generic“Working on your request.”

This was the key model-design insight: we were not just simplifying labels. We were deciding which level of system behavior should become visible to a human.

See the card-sort methodology

The card sort focused on processing steps Otto was already exposing. We wanted to know which labels made sense without architectural knowledge, which pieces of information helped users judge progress, and which steps users naturally grouped together.

The important finding was not simply “users dislike jargon.” It was that their mental model of the work was organized differently from the system’s execution model.

Scattered system cards
Executing AI Agent ‘fetching_user_details’Executing agent XRS-142Initializing case handlerWriting to HRSD tableRunning routing policy evaluator

The system model: organized by which component ran.

User-generated clusters
Understand the problemFind relevant contextFigure out what to doTake action

The user model: organized by what the AI was accomplishing.

System model vs. user model

classifierAPIdatabaserules enginerouting agent
understandinvestigatedecideact

That research gave us the evidence to stop organizing processing around execution and start organizing it around intent.

05 / The Content System

Teaching the system to describe itself

To ensure that every step shown to users carried the right level of detail, communicated in a human-legible way, I authored the processing-state specification. The document defined research-backed behavior rules that engineers could implement through prompting and generation logic. It also carried eval criteria, so they could check the success of the end result.

What was in it:

Behavioral rules for generated steps Internal event to user message translation patterns Product vocabulary standards Examples and counterexamples Evaluation criteria
Inside the processing-state specification
Internal event
Generated message
execute_agent(fetch_user_details)
“Finding your contact information.”

The behavioral rules were research-backed.

Rule 01
Task, not technology

Name what is being accomplished, not the mechanism.

Rule 02
Active and present tense

The user is watching work happen, not reading a log of it.

Rule 03
Specific when it earns it

Detail is how you show real context was found.

Rule 04
No internal terminology

Agent IDs, API paths, model names and tables never leak.

Rule 05
Product vocabulary

Say incident, request, change. The words users already have.

Rule 06
Glanceable

Processing is read in peripheral attention, or not at all.

I wasn’t writing processing strings. I was designing the translation layer between machine execution and human understanding.

What the system actually says now

The spec’s output is not a set of strings I wrote. It is the shape every generated step has to take. Run those rules over one HR request, the same request whose raw execution chain opens section 02. This is what has to come out the other side:

Every line is a task rather than a component, in the present tense, specific where specificity proves real context was found, with no agent, tool or table names, in the vocabulary the product already uses, incident, policy, case, and short enough to read out of the corner of an eye.

06 / The Visual System

The pattern for showing work as it happens

The interface then had to decide where that generated information lived, how much attention it demanded, and how it changed over time. I owned the product direction: what information belonged, how prominent it should be, when it should be collapsed or expanded, and how the pattern should scale. I worked with visual design on color, line treatment, hierarchy, shimmer, and visual patterns, and with motion design on where movement clarified active work versus where it became noise.

Two questions were tangled together in those explorations, and they came apart once I stopped treating them as one: how the work should be shown, and where on the message it should sit. They have different answers, and either can be got right while the other is wrong.

Decision 01 · How to show it

Option 01

Status line that cycles through the steps

  • WorksOne line, always current. It moves, so it never reads as a system that has stalled.
  • CostsEvery step it already did is gone. You can see the moment, never check the work.
Option 02

Thinking spinner that expands on demand

  • WorksNearly silent by default, with the whole trace one click away for anyone who wants it.
  • CostsClosed, it says no more than a spinner, and nothing signals that opening it is worth the click.
Option 03

Spinner and a changing status line

  • WorksCombines 01 and 02: liveness and the current step at a glance, the full list still on demand.
  • CostsTwo moving things in one row. The motion has to stay very quiet or it competes with the answer.
Option 04

Progress card

  • WorksA count and a bar answer “how much is left?” directly, which no other option does.
  • CostsA bar promises an estimate. The system could not reliably produce one.
Option 05

Expanded workflow card

  • WorksThe right amount of evidence when the AI is doing something consequential.
  • CostsFar too heavy as a default. A one-line answer arrives buried under its own receipts.

None of these is wrong. They are answers to different questions about how much of the work a person should be asked to hold.

Decision 02 · Where to put it

Placement A

Above the message

  • WorksSeen first, and it holds still while the answer streams in underneath it.
  • CostsPuts the waiting above the result, so waiting becomes the main event.
Placement B

Below the message

  • WorksSits with the newest content, which is exactly where someone following a growing answer is looking.
  • CostsOnce the answer runs long, the record of the work is somewhere off the bottom of the screen.
Placement C

Split, part at the top and part at the bottom

  • WorksSplits the two jobs. The named step stays where it can be found; liveness follows the bottom, where the reading is.
  • CostsTwo places to look instead of one, and both have to stay quiet enough to ignore.

The placement question is not cosmetic. It decides whether the record of the work or the liveness of the work gets the position a reader’s eye is already in.

Pick one directionAnswer both: option 03, split across the message

What we shipped

Option 03 × Placement C

AI Steps, collapsed by default Shipped

  • WorksThe shimmer names the current step at the top and opens to the full list; the spinner carries liveness at the bottom. Neither job is asked to do the other one.
  • CostsTwo places to look, and one more thing to open. That was the trade we chose to make.
Recreation · UI rebuilt in CSS; the steps are verbatim from the shipped product

Meaningful activity surfaces at the top; liveness stays visible at the bottom, wherever the user is reading.

Glance

See the latest active AI Step.

Monitor

Know work is still happening as the response continues.

Inspect

Open AI Steps when deeper detail is needed.

Make the AI’s work visible enough to build trust, but quiet enough that the result stays primary.
Implementation examples and earlier visual explorations

Implementation examples

Before
After
Executing AI Agent ‘fetching_user_details’
Finding your contact information
Executing agent XRS-142
Checking your open incidents
Initializing case handler / Writing HRSD table
Creating your HR case
Running routing policy evaluator
Finding the right team

Product rules from the explorations

  • Keep the answer primary. Processing should support the response, not compete with it.
  • Keep AI Steps available but collapsed. Users should be able to inspect work without being forced into inspection.
  • Show the latest meaningful step. The shimmer should surface what the AI is actively doing now, not every backend event.
  • Use motion to clarify liveness. Motion should communicate active work or state change, not decorate the wait.
  • Avoid false precision. Use estimates, percentages, or progress bars only when the system can support them reliably.
07 / What Shipped, and What Changed

Visible without becoming the main event

AI Steps in the shipped product. The panel stays collapsed until there is something worth showing, then reports the work in task language as it happens.
Actual product · screen recording, Otto
Product

AI work became visible without becoming the interaction. Glance, monitor, or inspect. The user picks.

Model behavior

The model got rules for translating execution into human-legible work, instead of leaking implementation detail.

System

The processing-state spec outlived the project and became the reference other work builds on.

What I think of what shipped

The content framework was a major improvement. The UI got cleaner, and it is still far from perfect. A lot was sacrificed on the UI to ship it. It needs to be more consolidated, it needs better estimates for how long a process will take and how complex it is, and it needs to make status easier to check both while the AI is working and after it finishes. Those three gaps are exactly what converged in the next design.

08 / What Comes Next: Workflow and Sources Concept · not shipped

What a user needs isn’t the reasoning. It’s the evidence

Agents are getting more autonomous, making judgment calls, writing to records, committing someone to an escalation. A list of completed steps stops being enough to act on. So in the future-state work that followed (internally, the AI Blueprint) I stopped asking “how much reasoning should the AI expose?” and started asking “what evidence does the user need in order to trust and act on the result?” That question sorts agentic work into four kinds of information.

Progress

What is the AI working on? Purpose: orientation.

Evidence

What information is it using? Purpose: verification.

Judgment

Where did it make a meaningful choice? Purpose: explanation.

Action

What did it actually do? Purpose: agency.

These should not all be represented the same way. A routine lookup does not deserve the same prominence as an AI deciding to escalate a critical incident.

What it would look like in product

Workflow and Sources is one place holding everything needed to trust a response, organized by the user’s intent rather than the system’s architecture. A full-width progress card while the work runs, openable mid-run to follow along, that collapses to a small button beside the finished answer, with every step and source still inside it and filterable to sources only.

Try it. Click the progress card to follow along live, then open Workflow and sources.

Otto
My laptop won’t connect to the VPN
Your Cisco VPN client is holding a stale auth token after your Mac woke from sleep. That’s why it won’t connect. Restarting the client clears it, so I’ve prompted the restart for you. You should be back online in a moment.
VPN connection troubleshooting
Understood the connectivity issue
Checked your device and network
Checked server status. All pools online, no regional outages, certificates valid
Verified your permissions
Checked your VPN entitlement and current group membership
Consulted the VPN ACL database
Found the likely cause
Analyzed your connection logs: client crashes after wake, auth tokens stale
whyYour last two connection failures resolved with a client restart. Same pattern here
Reviewed your device event stream against the known issue database
Personalized the solution
Your device: macOS Cisco VPN client v9.1.2 corporate WiFi
whyFiltering to only macOS + Cisco + corporate steps, skipping 40+ unrelated remediation paths
Working…

Every source, policy and claim is meant to be clickable and verifiable, and the layer is meant to scale from a one-line lookup to a multi-intent workflow without fragmenting.

The principle underneath it

Good transparency is not maximum visibility. It is calibrated visibility. For simple work, the best processing experience may be nearly invisible; for complex or consequential work, more of that evidence should become available.

09 / Closing

What this changed about how I design AI.

None of the larger ideas in this work arrived fully formed. I started with a product concern about waiting. I challenged the assumption that latency was the problem. That led to research showing that users cared about the value and legibility of the work. That made the existing processing experience look different: we were giving users technical transparency when what they needed was evidence of meaningful progress.

Rather than assume what should replace it, I partnered with research to card-sort the actual processing steps. Users showed us that their mental model was organized around goals rather than infrastructure, which gave me task, not technology. I translated that insight into a research-backed content model. Scale then forced me to turn the content model into model behavior. Shipping that behavior exposed another problem, understandable information can still overwhelm when there is too much of it, which led to the collapsed-by-default AI Steps pattern: visible enough to build trust, quiet enough to keep the result primary. The limits of that shipped pattern then pointed at the next question: not how much of the work to show, but what evidence a user needs in order to act on it.

Each idea came from finding the point where the previous solution stopped working. AI design is not just the design of an answer. It is the design of the relationship between what the system is doing, what the user can understand about it, and how much control they need at each moment. That relationship spans model behavior, content, interaction, and product architecture, and as AI becomes more autonomous, designing it well becomes increasingly important.