a stand-in user, on your live product
understudy sends a stand-in user through your live product — or your website — someone with a goal, a short attention span and somewhere else to be. It gets stuck where a real person gets stuck, gives up where they'd give up, and hands you a report where every finding cites a screenshot you can open.
runs in claude code and claude cowork · drives a real browser · never sees your credentials
[00:40] The menu says Meals, Body, Reports, Chat, Pages, Skills. That is a lot of things and I don't know what half of them are.
[02:41] It worked. I typed what I ate in a normal sentence and it gave me the calories back. That's the thing I'd have had to look up myself.
[05:10] I'm being sold something I can't name.
[07:00] I had to read the legal page to find out what the feature does.
She reached the thing the product is for in under three minutes — and still couldn't tell you what half of it was.
the product is fictional; the shape is not.
one traversal, many scorings
Driving the product is the expensive part, so understudy does it once and scores that single recording through as many lenses as you asked for. Adding a question costs minutes, not another hour in the browser. A product gets five lenses; a website gets seven, and a comparison with competitors you name.
Where they hesitated, backtracked, and gave up.
Console errors, failed requests, dead ends — with repro steps.
Time to first value, steps to get there, the point they stopped.
What they expected on arrival, against what they found.
Three ideal customer profiles from the evidence — each scored, each with the case against it, and a persona to run next.
What it is, who it's for, what to do next — and how many seconds that took, or whether it never happened.
Whether the button you want clicked is the one they see, at every scroll depth, and what stops them.
Proof, pricing, who is behind this, what happens to their data — the objections a sceptic raises and whether the site answers them.
The same lenses on competitors you name, then a matrix of where you lead, trail or match — with their logos, their scores and their evidence.
Core Web Vitals, page weight, image hygiene, third-party weight — mobile and desktop separately, labelled as lab numbers.
Crawlability, indexability, titles, canonicals, structured data, internal links, sitemap and robots.
Schema.org coverage, answer blocks that extract cleanly, entity clarity, llms.txt. Static markup only, and it says so.
The icp lens reads both kinds of run. Competitors are always yours to name — understudy never guesses who they are, because a wrong set produces a confident, useless comparison.
the icp lens
Most lenses ask whether the product works. icp asks who it works for — on the evidence of what it is, not on what the market is supposed to want. It reads what the stand-in user saw and did: the site's own words, its proof, its pricing, the flows the product actually has. From that it derives three ideal customer profiles and argues with each of them.
Unique attributes the persona noticed → who cares most about each → five to seven candidate segments, labelled by where they came from (named by the site, implied by the product, the persona's own read, adjacent). Every candidate is scored on fit (pain, alignment, evidence, clarity) and propensity (reach, trigger, willingness to pay, openness to switching), 1–5, with ? where the run cannot tell — never a guessed 3.
What they use instead, the switching cost, the one fact that would kill the profile, and the cheapest one-week test — labelled as reasoning, kept apart from the findings. The trap segment (easy to sell, would churn) is named so nobody targets it by accident, and every candidate considered is listed, including the dropped ones.
goal: "Sell my next cohort by Friday" · gives_up_when: "I have to build a page first"The person is invented and labelled so — a face for the profile, never a name from the run. No market research: no web search, no reviews, no competitor pages. Where the evidence does not reach, the profile says not inferable. If fewer than three segments clear the bar, you get fewer, with the reason. On a website run the visit adds a short sweep of pricing, customers, integrations and “for whom” pages so the profiles rest on what the site says about its own audience. When the run ends, understudy offers once to save the three re-run personas as a target.
what you get
The run folder holds everything as markdown — every screenshot, log and lens report — and that is canonical. At the end you choose a rendered copy, and the two forms do different jobs.
A cover with the site's own icon, the overall score and the finding counts. What the product is, how the run was produced, the Top 5 to fix first with what each costs the buyer, what a buyer could and could not establish, the personas in their own words — verbatim, each line checked against the log — the profile cards, then every lens report with its evidence. What you forward.
One self-contained HTML file, opens offline, branded with the site's icon and accent. A dashboard with a score ring per check; a findings explorer with severity, check, persona and status filters and a detail drawer; a session replay per persona — the log line by line with the screen that was showing; the profile cards; a full-screen Present mode driven by the arrow keys; and triage — mark each finding accepted, rejected or fixed with a note, then export as JSON, CSV or markdown.





Every screen is a render of a fictional product — the test fixture that ships with the tool — greyed so nothing reads as a real client. Click one for full size.
Neither scores or rewrites anything: every number is read from the lens files, every quote and screenshot is the run's own. A report whose evidence dies on send is worse than one with no evidence, so both embed their screenshots — which also means that once you forward one, it is as sensitive as the run itself.
two invariants
An agent that knows what it's looking for finds it every time. So the persona is told a goal and nothing else — no heuristics, no severity scale, no previous findings. A separate reviewer scores the recording afterwards. Nineteen words of analyst vocabulary are banned during the session and checked mechanically afterwards; one slip fails the run.
No screenshot, log line or network trace means the finding is dropped — and that holds hardest for findings that seem obviously true, because those are the ones nobody checks. Anything dropped goes in a list at the end, so there's somewhere honest to put a hunch.
screenshots/07-memories.png · session.log:53two commands, or a few clicks
understudy is a Claude plugin. It runs in Claude Code — Anthropic's terminal app — and in Claude Cowork, the agent in the Claude desktop app. Both come with a Claude subscription. It does not run in the claude.ai chat window, because it needs a browser it can drive.
It also needs Playwright MCP, a browser add-on for Claude Code — one command, once — because understudy drives a real browser and refuses to fall back to fetching pages over HTTP and calling it a session.
# once, in a terminal — gives Claude Code a browser claude mcp add playwright npx @playwright/mcp@latest # then, inside Claude Code /plugin marketplace add dariobianchi00/understudy /plugin install understudy # then /understudy:run https://your-product.com
Cowork installs plugins from the same GitHub repo, through its own menu. A plugin installed in the Claude Code terminal is not visible to Cowork, so add it there as well.
https://github.com/dariobianchi00/understudy.claude plugin install playwright@claude-plugins-official), or add Playwright to Claude Desktop's local MCP config — Cowork reads local MCP servers from claude_desktop_config.json when a session starts./understudy:run.Cowork's plugin support is new and the menus move; if a step above has changed, the plugins page in Claude's docs has the current one.
It interviews you first — one question at a time — then shows you the plan and the time it will take, and waits. Reports land in a folder you choose on your machine. understudy itself uploads nothing and has nowhere to upload to. The one thing that leaves your machine is what the Claude model reads in order to score the run — the screenshots and logs — through your own Claude account, exactly as anything you paste into Claude does.
four questions
It sends a stand-in user with a goal through your live product in a real browser, records where they hesitate, get stuck or give up, and scores that one recording through as many lenses as you ask for — usability, bugs, onboarding, content, ideal customer profiles, clarity, conversion, trust, page speed, SEO and answer-engine readiness.
No. It never handles a credential: at a login screen it stops and hands you the browser. Reports and screenshots stay in a folder you choose on your machine; understudy uploads nothing. What the Claude model reads to score the run goes through your own Claude account, as anything you paste into Claude does.
Yes. In Cowork go to Customize → Plugins → Yours, press + to add the GitHub repo as a marketplace, and install understudy there; a terminal install does not carry over. Cowork also needs the Playwright browser plugin or a local Playwright MCP entry in Claude Desktop's config.
Scoring the same recording twice with the same reviewers reproduces about 30% of individual findings and 43% of the serious ones; the themes are stable. Treat any single finding as one careful reading and open its evidence before acting on it.