Skip to work
IntuitLead product designer

Building a user observation system with an AI design process

Intuit was founded on watching customers work. The Experts on Intuit’s customer success team are observed when a select few visit the office, or through scheduled observations, but most of their experience is never seen. Two projects each had half the answer. I merged them, and led the design of a platform that turns every Expert session into something you can find and feel.

The session view: a recorded Expert session playing back with the Expert’s webcam inset over it, a scrub bar underneath, and the call transcript running alongside.
Role and Team
  • Daniel – Design lead and acting PM
  • Contract designer
  • Design technologist
Timeline
2026
Platform
Internal web platform

AI in every part of the process

I baked AI into the entire design process: concept explorations and prototypes, planning user research session scripts, summarizing user research insights, and building the real components and experiences we shipped instead of handing them off to engineering. AI in the workflow is letting us explore more, use our time on creative and strategic work, and stay closer to the details of what goes into our users’ hands.

The tools the work runs on

Overlapping application windows under the Claude and Cursor wordmarks: a terminal filled with command output, a code editor sitting beside a component browser, a tall web page of issue detail, and a list of pull requests.
Claude Code running the plugin locally, Cursor open beside Storybook, an HTML exploration of the issue page, and the pull requests that shipped.

The problem

Intuit founder Scott Cook watched users work in their homes to build deep empathy for the problems they faced. Follow-Me-Homes are a core part of Intuit’s DNA and origin story. For the customer success team, the people doing that work are the Experts, and their experience directly shapes the customers they serve. Intuit has invested in Immersion Studios, where five to ten Experts travel to the office each week to work on site. The team is invited to observe and meet them, but some Experts make the trip and nobody comes.

“I wish I could put a GoPro on my head”

A leader sitting in the studio said she wished she could put a GoPro on her head and walk around, so other leaders could see what she was seeing. Then she started talking about her kids watching Twitch. She was imagining a world where the team could hop into the world of our Experts and see their struggles and their successes. How could we remove the barriers to spending time with the people doing the work?

Exploring Twitch and other video platform patterns

Three browser windows side by side: a Twitch stream page with chat and a viewer count, a YouTube feed of video thumbnails, and a Vimeo search results page.
Twitch, YouTube, Vimeo: none of them built for this, but each modeled a piece of it, live viewing, a recorded library, search, worth pulling from as reference.

Two projects, each with half the answer

That leader’s experience led to an exploratory project on how to virtualize the studio: adding cameras for recording, and making it possible to visit Experts at home by sending out observation camera kits. Real faces and real feeling, but still a small sample, with questions like how to handle personally identifiable information still open.

Another project was already running to build an internal RUM system, real user monitoring, so technical teams could watch replays of Experts using their core tools. Any session, with PII masked. Powerful and built for scale, but it lacked the human element.

Project 1: Recordings of a small sample

A grid of 160 pale dots. Five are filled dark, and one near the middle is pale blue with a dark ring around it.
A handful of sessions get recorded. The one you needed is somewhere in the rest.

Project 2: Every session captured

The same grid of 160 dots, now all filled in mid gray. Eight are picked out dark, scattered across it, and one of those keeps the pale blue ring.
Everything is captured, so you filter down to exactly the sessions you came for.

Scale first, story on top

There was no designer on the RUM project and its lead asked for my help. The virtual Follow-Me-Home project was running in my group with a contract designer and a design technologist, and I was asked to guide them.

I pitched combining the two. RUM as the foundation, unlocking every session and handling PII, with the human layer on top: invite the Expert to turn on their webcam, capture the room audio, and fold in the systems that already record calls, chats, and screenshares so playback carries the conversation and a live transcript. The webcam is always an invitation, and Experts can decline, mute, or stop at any point.

Early concepts (I love a whiteboard)

A whiteboard sketch. On the right, a browser session on its own, and the same session drawn next to a camera view of someone at a desk. Two arrows curve left into a single platform frame labeled Replay, with a scrub bar and a side panel.
Both sources land in one place. The session replay carries the screen, the camera and call audio carry the person.

Before and after

To set the foundation for bringing the projects together, I did a pass of the RUM system to align it with our design system. Working directly in the code with Claude and Cursor, I brought the experience into line with Intuit’s patterns. I set experience-oriented rules for the AI agents: use an existing component wherever one exists, and when something genuinely new is needed, compose it out of components that already do. New primitives are a last resort, not a starting point.

Before: A list of custom cards

The sessions list before the pass. A dense filter bar of URL, Session ID, Auth ID, Op, and date fields sits above rows of raw browser session strings, each with a full URL, a user agent string, and an error count badge.
Every field the system captured, printed as it came off the wire.

After: A table from Intuit’s design system

The same list after. A header reads Sessions with a platform filter and search. Rows carry a platform icon, status, start date and time, duration, user, and session ID in aligned columns.
A list pages pattern built using an Intuit design table with filtering and sorting built in.

The brief was already in the Slack thread

A Slack conversation with our engineering lead turned up a new design problem. A change to how we process PII meant loading states were going to show up more frequently. The thread already held the constraints and the reasoning, so I pointed Claude at it and turned it into a Jira epic, a story, and a design exploration task. I assigned it to the contract designer minutes later. AI as a design operations tool tightens the gap between spotting a problem and getting it into a team member’s hands.

Claude, convert this to a design task

A three-step diagram. Under the Slack logo, a cropped, redacted screenshot of a Slack thread fades out toward the bottom. An arrow leads to the Claude logo over a block of monospace prompt text that also fades out. A second arrow leads to the Jira Software logo over a card labeled Design task, with a status chip, lines mocking a description, and two blank fields below it.
A Slack thread held the constraints. I pointed Claude at it, and it read the conversation into an epic, a story, and a design task.

A window, not a page

The session view is where you actually watch. Everything you need is in view at once: the replay, and the tooling around it like the transcript. This is the main window into the Expert experience. The current design is a v1, and I am looking forward to revisiting it to explore better handling of white space, bringing captions into the video, separating out the technical tooling in the panel, and adding capabilities like comments.

Ten arrangements of the same view

Ten quick wireframes drawn on a whiteboard in two rows. Each is a different arrangement of a session recording, one or two camera views, an events list, and a side panel.
Screen with one camera or two, events beside or below, panel to the side or under. Working the arrangement out before building it.

From: Split tooling and information below the fold

The session view before. The replay sits alone on the left with no camera or document content loaded. On the right, separate Console and Network tabs show error entries. A Behaviour Events list starts below and is cut off, requiring a scroll to reach it.
The tooling was split across tabs, and the events list needed a scroll to reach at all.

To: One panel, with everything in reach

The session view after. A document the customer is viewing fills the center. On the right, a single panel with Transcript, Activity, Console, and Network tabs shows a live call transcript beside a video feed of the Expert. Nothing on the page requires scrolling.
The transcript joined the same panel as the developer tools, and the whole view now fits without scrolling.

Rebuilding the issues view

Where design enters the process changes from feature to feature. For the issues detail view, engineering showed me a v1 for rework. I pulled the summary data into a section, added a plain-language description written for a human reader, migrated the chart to our data-vis library, and expanded the information about the technical assets each issue touches.

Working on it in the code with AI let me uncover things that would otherwise have been easy to miss, like the chart generating its bars from the wrong bucketing of data. Getting in front of technical issues like these is not flashy, but it is some of the most meaningful experience improvement we can make.

From: Data on a screen (and a broken bar chart)

The issues detail page before the rework. One card holds an error label, an identifier, occurrence and session counts, first and last seen dates, and two rows of asset chips. A stack trace card and a related sessions table sit below it.
Everything the system knew, laid out flat. The counts, the stack trace, and a row of asset names with nothing to say which of them mattered.

To: Information all users can understand (and a working bar chart)

The same page after. An Overview card leads with a written summary of the error, then the counts, then a daily bar chart of occurrences. An assets table below it carries capability, owner, and developer portal columns.
An overview that opens with what actually went wrong, the chart rebuilt on our data-vis library, and assets listed with the team who owns each one.

Where engineering and user experience meet

Issues, the grouping of problems the system identifies, were being created with IDs that hard-coded the type into the ID. I argued for an identifier agnostic of categorization, so we can mature the labels and groupings over time as we learn. How the system is built shapes the experience it can support. I am proud of a relationship with engineering where design gets to influence something as deep in the plumbing as an ID format.

From categorization baked in

An issue identifier reading js underscore error underscore a8cb32de.
The type is part of the identifier. Renaming or splitting a category means rewriting every identifier that used it.

To a flexible identifier

The same identifier with the type prefix gone, reading a8cb32de.
The same issue, with the category held separately. The grouping can mature without touching an identifier that already exists.

A transcript that feels “right”

The transcript scrolls with the call. I looked at how YouTube, Zoom, and Spotify’s lyrics solve the same problem, then built it in code against mock data and dialed it in.

Scroll turned out to need decisions I would not historically have known to make until after seeing a first coded version: when focus moves to the next line, when the transcript scrolls up, where to land when you jump to a new call, what to do when someone has scrolled manually but the current line is still in view. These only get design thinking when you are experiencing them. Nobody would have filed a bug about any of it. That is the win from bringing design deeper into development.

The scroll, running

Nineteen seconds of it running. Every decision in this beat is one you can only judge by watching it move.

What the accessibility team asked for

I have been running interviews as the alpha opens up, using AI to prepare the sessions, work back through the recordings and transcripts, and cut the moments worth showing other people. The clearest signal so far is appetite: everyone we have shown it to wants access. A useful note came from a session with someone on our accessibility team, who asked for the transcript as captions over the replay rather than beside it. Better for them, better for anyone watching.

Transcript beside the replay

A wide landscape replay panel with a narrow transcript panel to its right, holding six stacked lines, the second highlighted.
What we shipped. Reading and watching are in two places, so attention keeps moving between them.

Transcript over the replay

The same landscape replay panel on its own, with a dark caption bar laid over the lower part of it.
What the accessibility session asked for. The words land where you are already looking.

Alpha shipped

This is a current project. We have just started inviting users into a closed alpha, and I am eager to learn from how they use it. I am excited to bring the team closer to the people we serve.