Back to projects
|
Case study · AI agents · Side project

Mimify

Agents with real user profiles that browse your site, get stuck where your people would and tell you why.

Role
Product, design and engineering · solo
Status
In beta
Mimify
AI agentsNode.jsPlaywrightClaude CodeMCPSQLiteMulti-LLM
Thesis

One false finding makes you distrust all the others.

The hard part isn't getting an agent to browse a website. It's making the report reliable enough to change code because of it.

01
The problem

Testing a flow with real users is slow and expensive: recruiting, scheduling, recording and drawing conclusions takes weeks, so small products almost never do it before shipping. Analytics arrive later and tell you where people drop off, but not why.

Web-browsing agents already exist, but a generic agent completing a task is nothing like a 60-year-old who distrusts the internet and opens the app on their phone. And if the report blames the site for a failure of the test itself, nobody trusts it again.

It needed something in between: as fast as an automated test, with the variety of a sample of people, and honest enough to say when a result doesn't count.

02
Tech stack

Local server with just three dependencies. No framework: API, live events over SSE and a UI in plain HTML, CSS and JS.

Each agent opens its own Chromium, mobile or desktop, with isolated cookies. It reads the screen as text with numbered elements, including whatever a banner covers.

The agents that set up studies (analyst, designer and profile creator) run the user's own claude headless, on their subscription and without touching their credentials.

MCP server and CLI to launch studies and read findings from Claude Code in another product's repo, or from CI.

Native node:sqlite, one row per study and one per agent. If the server dies mid-run, the study picks up where it left off.

Eleven providers (Anthropic, OpenAI, Gemini, Mistral, DeepSeek, Groq, OpenRouter, Jev…). Mixing models is deliberate: lack of variety is the biggest risk with synthetic users.

Tap or hover any technology.01 / 06
03
Key features
01

Conversational designer: describe what you want to test and an agent reads your site and your code (read-only), picks the avatars and leaves the study ready to launch.

02

Avatars with real context: money, tech skills, patience and distrust from 1 to 5, a goal and a device. If a profile is missing, another agent creates it.

03

Live tracking of every agent: where it is, what it's thinking and whether it's moving on, stuck or giving up.

04

P0–P2 findings with evidence in the agent's own voice, the proposed change and the code file and line to touch, ready for Linear.

05

Exit interview: you can ask each agent, in first person, why it left.

06

Study health: visits invalidated by the test itself (anti-bot, login, tool errors) are removed from the results, and the report says so.

07

Pilot with one or two agents before a large study, so you don't burn 40 visits on a broken environment.

08

Local, staging and production profiles: in production everything is look-only, with hard limits such as paying, buying or deleting an account.

09

Regression across versions: the same study on every branch or commit, with a command that fails CI if completion drops below a threshold.

04
Screens

Click to expand.

05
Architecture

A local Node server orchestrates everything. The setup agents (project analyst, study designer and profile creator) run on Claude Code and produce a declarative config: URL, funnel steps with verifiable rules, environment and avatars. The runner splits agents across the chosen models and launches them in parallel with per-provider limits. Each agent is an observe–decide–act loop over its own Chromium: the reader turns the page into text with numbered elements, the model replies with an action validated against a JSON Schema, and a local SMTP inbox receives verification emails. At the end, an analyst cross-references journeys, interviews and the repo's code to write the findings. Everything is stored in SQLite and streamed live over SSE.

06
Learnings
The first studies surfaced more bugs in the engine than in the sites: agents marking a step as done when they were actually hesitating, reports blaming the site for a failure of the test, and agents blind to charts. Each one was a false finding, and one was enough to stop believing the rest. So a good part of the work went into what you don't see: the health report, the pilot run, environment warnings and an optimism correction, because synthetic users drop off far less than real ones. Next up is calibrating it against Tesora's real analytics; until then, what it gives you is friction to review, not facts.

Other projects