Sanghyun Lee
← Back to work

A natural-language analytics agent for enterprise learning teams

AI Reporting

Designed in codebase

Designed and shipped a chat-first AI agent that lets enterprise admins query their learning data in plain English — replacing a slow, manual reporting process. Sole designer, working in code alongside two engineers.

Role
Lead Product Designer · Design Engineer
Contribution
Strategy · Interaction · Visual · Design Systems · Front-end
Platform
Enterprise SaaS · AI Agent · Data Viz
Year
2026

61%

Conversations went multi-turn

2.4

User turns per conversation

5

Enterprise orgs in beta

134

Messages in first two weeks

This is real Wipfli data. The chart it generated is basically what we sell as a product.
Sales / CS lead, during beta testing

The bottleneck

Every data question went through Customer Success by hand — often a monthly wait. To ground the redesign, I seeded it with 26 real customer questions.

What made it hard

A surface with no established pattern, a non-technical audience, and an agent still changing week to week — was this a chatbot, a dashboard, or a BI tool?

Decision 1 — Conversation is the product, not a feature

I made the conversation the landing experience, not a modal bolted onto a dashboard — and in beta 61% of conversations went multi-turn, people reasoning with their data rather than running one-off lookups.

Decision 2 — A display-data layer for legibility

The agent returned accurate-but-unreadable raw values. One reusable display layer — glanceable axes, rich tooltips, humanized field names — made every chart legible.

The display-data layer turns raw values into a glanceable chart.

Decision 3 — Work as a design engineer

I designed in the codebase and shipped my own PRs, so the hard states survived to production: calm error handling, streaming, and the polish that usually dies in handoff. I also authored the design rules our coding agents follow, so the system's patterns hold even when AI writes the first draft of the code.

Designing in code with Claude Code — shipping the hard states myself instead of handing them off.

Results

Shipped to five customers; in the first two weeks, 61% of conversations went multi-turn at 2.4 turns each. Demand pointed to the next data investments.

What I'd carry forward

Name scope cuts up front, treat post-launch work as continuous support, and protect designing in code — it's why design intent survived to production.