Inspiration

Traditional usability testing is valuable, but slow, expensive, and hard to run continuously.

We wanted usability testing to feel more like automated software testing: launch a swarm of AI users, watch them use your product, and see exactly where they struggle.

That became Friction.

Because every click tells a story.


What it does

Friction sends autonomous AI personas through a live website and gives each one a task to complete.

As they navigate, Friction captures:

  • where they hesitate or fail
  • screenshots and interaction evidence
  • repeated issues across personas
  • severity-ranked UX findings

The result is a replayable UX stress test, with graph and gallery views, that clearly shows where users struggle, why it happened, and what to fix.

Our long-term loop is fully automated:
Deploy → Stress test → Find friction → Suggest solutions → Create pull requests


How we built it

Agents
Multimodal AI agents visually inspect the website, choose actions, interact with the page, and record evidence.

Analysis
Findings across persona runs are grouped to surface repeated friction while filtering out false positives and intentional design patterns.

Frontend
React, TypeScript, Vite, Tailwind CSS, and shadcn/ui.

Realtime
Server-Sent Events stream live agent progress into the control room.

Pipeline
Website → Personas → Agent runs → Evidence → UX findings


Challenges we ran into

  • Making agents behave like real users instead of exploiting hidden page information
  • Distinguishing real UX issues from intentional product or business decisions
  • Running many agents concurrently without excessive memory or API cost
  • Streaming many live agent sessions reliably through SSE

Accomplishments that we're proud of

  • Built autonomous agents that visually test real websites
  • Combined findings across multiple independent personas
  • Grounded UX findings in screenshots and real interaction traces
  • Built a live interface for watching agents test a product in real time

What we learned

  • Giving an AI a browser is easy; making its failures meaningful is much harder
  • Task completion alone is not enough — hesitation, backtracking, and confusion matter too
  • Multiple independent personas produce stronger signals than a single AI critic
  • Agent systems quickly become infrastructure problems involving concurrency, streaming, memory, and cost

What's next for Friction

  • Scale to 15+ concurrent agents with generated personas and simulated locations
  • Add stronger cost guardrails and false-positive filtering
  • Turn persona runs into Playwright E2E tests
  • Automatically create pull requests from validated findings
  • Develop complex browser annotations, where arrows, shapes, and other visuals are drawn

Built With

Share this project:

Updates

Submission history