Primate · 2026

Primate

Browser testing for pull requests

Primate reads a code diff, checks the affected pages in a browser, and posts screenshots and bug reports on the pull request.

My role
Co-founder and engineer
When
About 6 months · 2026
Team
Conor Roberts, Jeremy Bell, and me
Built with

Background

After a Linkedin post about another one of my projects, an engineer from Stripe reached out to me and pitched this idea. We ended up spending about six months building and growing it along with another co-founder.

My work

Figuring out which pages to check

A big part of my work was figuring out where a code change actually showed up in the app. We used a crawler to build a sitemap, then built a reverse dependency graph from the frontend imports. If a component changed, we could follow the graph back to the pages that used it. If the change was already in a page, we could just go there.

The review agent

I spent a lot of time building and researching the review loop: how the agent decided what to check, used the browser, and reported what it found. I also looked into visual prompting strategies like Set-of-Mark to help it understand what it was looking at on the page.

Browser tooling

We didn’t want to pay for a browser provider, so I built our own browser sandbox and browser-use commands from scratch in Python using Pydantic and Playwright.

The landing page

The landing page

Tests requested in a PR comment

A developer asks @primate to test the account switcher. The bot queues the run and replies with a link.

A developer asks @primate to test the account switcher. The bot queues the run and replies with a link.

A bug caught during review

Primate caught an upside-down “Join the Waitlist” button and attached a screenshot to the report.

Primate caught an upside-down “Join the Waitlist” button and attached a screenshot to the report.

Reviewing a PR on a phone

Conor reviews the new landing page from his phone using the desktop, tablet, and mobile screenshots in the PR.

Where it got to

We didn’t make it work as a business. We had a few design partners and interest from startups, but unfortunately never got a paying customer. I learned a ton from this experience. I went deep into trying to perfect the agent loop, spent a ridiculous amount of time building our own browser tooling, and learned what it takes to try to grow and promote a product.