# Peeve highlights the answer, then clicks it.

> The user asks. The cursor moves through your real interface at human speed, narrating, while they watch.

Canonical: https://peeve.ai/product/show/

01. **The user asks** — In their own words, from inside your product. No keyword matching, no menu of canned intents.
02. **Peeve finds the element** — By reading the live accessibility tree and scoring candidates against a stored fingerprint.
03. **It moves, pauses, clicks** — 600–900 px per second, then a 200ms highlight ring before every click.

## How does Peeve know where a button is?

Peeve stores each element by role, accessible name, landmark position and neighbours, never by CSS class or XPath. At runtime it reads the live accessibility tree and scores candidates against that fingerprint. Above 0.85 it acts. Between 0.60 and 0.85 it checks a screenshot first. Below 0.60 it stops and says so.

## What happens when your interface changes?

Nothing breaks silently. Confidence drops, the route is flagged, and Peeve re-captures it on the next session that visits. A renamed button merges automatically. A restructured page waits for a 30-second confirmation in your dashboard.

## Can the user take over?

Any mouse or keyboard input pauses Peeve within 100 milliseconds. The cursor greys, the trail freezes, and a Paused pill appears. It never resumes without being asked.

## Why does the cursor move slowly?

So the user learns the path. Peeve travels at 600–900 pixels per second and pauses 200 milliseconds with a highlight ring before every click. The pause is also a safety mechanism: it's the window in which a user can stop an action they didn't want.

## What Show doesn't do

- Cross-origin iframes
- Canvas-only interfaces
- Native mobile apps
- Anything outside the routes you allow
