UXCascade: Scalable Usability Testing with Simulated User Agents
This repository is an unofficial implementation of the system described in:
UXCascade: Scalable Usability Testing with Simulated User Agents Steffen Holter, Eunyee Koh, Mustafa Doga Dogan, Gromit Yeuk-Yin Chan arXiv:2601.15777 [cs.HC], 2026 https://arxiv.org/abs/2601.15777
UX evaluation bottlenecks are growing as AI-assisted workflows let designers generate interface variations faster than they can be reviewed. UXCascade addresses this by simulating diverse user persona agents on a target web interface and aggregating their usability feedback into a structured, interactive analysis tool.
The core workflow follows five stages:
① Explore — review agent goals and task outcomes
② Observe — inspect trait-based behavioral distributions
③ Isolate — drill into specific usability issues and their root causes
④ Propose — generate targeted HTML fixes via a chat interface
⑤ Evaluate — re-simulate a single step to assess the impact of a fix
Key components:
| Agent | Role |
|---|---|
| Simulation Agent | Drives a live browser session as a persona-grounded user |
| Tagging Agent | Labels each reasoning step with a cognitive intent tag |
| Issue Detector | Extracts structured usability issues from think-aloud traces |
| Editor Agent | Generates DOM-level HTML patches from natural-language instructions |
| Preview Agent | Re-runs one simulation step on the patched HTML to evaluate the fix |
Define the target URL, persona trait dimensions (e.g. age group, tech literacy, device type), and task goals. UXCascade automatically generates all trait combinations and spins up one LLM agent per persona–goal pair, running them in parallel against the live interface.
Each agent navigates the site as that persona, recording every action, screenshot, and reasoning step. The result is a rich, multi-perspective dataset of how different types of users experience the same UI — without recruiting a single human participant.
Filter and triage usability issues by severity (S1–S4) across all agent runs. Each issue includes the affected element, root cause, suggested fix, and UPT taxonomy codes — with a one-click path to the fix workflow.
Replay any agent's browsing session step by step. Each step shows the agent's on-screen action, annotated reasoning, and behavioral tags — making it easy to spot exactly where and why a user gets stuck.
Describe a UI change in plain language. The Editor Agent translates the instruction into precise DOM-level patches (CSS selector + action + value) and shows a live preview of the modified interface.
After applying a patch, the Preview Agent re-runs the affected simulation step and produces a Difference Report — comparing the agent's action before and after, and estimating whether the issue was resolved.
┌─────────────────────────────┐
│ Experiment Setup │
│ Persona Traits + Goals │
└────────────┬────────────────┘
│
▼
┌─────────────────────────────┐
│ Simulation Phase │
│ browser-use Agent │
│ Raw HTML / Actions / │
│ Screenshots / Reasoning │
└────────────┬────────────────┘
│
▼
┌─────────────────────────────┐
│ Annotation Phase │
│ Tagging Agent │
│ Issue Detector Agent │
└────────────┬────────────────┘
│
▼
┌─────────────────────────────┐
│ Refinement Phase │
│ Editor Agent → DOM patches │
│ Preview Agent → re-sim │
└─────────────────────────────┘
The frontend is built with React 19 + TypeScript + Vite, and the backend with FastAPI + Python 3.13. Storage uses PostgreSQL for structured data and MinIO for screenshots.
The easiest way to get everything running:
git clone https://github.com/your-org/UXCascade.git
cd UXCascadeCopy the backend environment file and fill in your API keys:
cp backend/.env.sample backend/.env
# Edit backend/.env and set ANTHROPIC_API_KEYStart all services (PostgreSQL, MinIO, backend, frontend):
docker compose up --build -d| Service | URL |
|---|---|
| Frontend | http://localhost:5173 |
| Backend API | http://localhost:8000 |
| API docs (Swagger) | http://localhost:8000/docs |
| MinIO console | http://localhost:9001 |
If you use this implementation in your research, please cite the original paper:
@article{holter2026uxcascade,
title = {UXCascade: Scalable Usability Testing with Simulated User Agents},
author = {Holter, Steffen and Koh, Eunyee and Dogan, Mustafa Doga and Chan, Gromit Yeuk-Yin},
journal = {arXiv preprint arXiv:2601.15777},
year = {2026},
url = {https://arxiv.org/abs/2601.15777}
}This implementation is released under the MIT License.
The paper itself is published under CC BY-NC-ND 4.0.



