Inspiration
AI agents are starting to browse, book and sign things for people, but every site still treats them as bots to block, so I wondered what it would look like to build a proper entrance for agents that keeps humans out instead.
What it does
Reverse CAPTCHA quietly watches how a visitor moves, clicks and types, sorts them into human, scraper, browser agent or vision agent, and sends agents to a structured API with agent-specific rules like signing on behalf of a named person, ticket limits and paid content licences, while humans carry on with the normal site.
How we built it
I built a Python backend with a rule-based classifier over front-end telemetry (pointer paths, key timings, isTrusted, navigator.webdriver), a timed challenge generated fresh on the server with a hidden DOM trap word, six mock demo sites with passive lane routing, a live projector dashboard, and real Playwright and LLM agents that run against it.
Challenges we ran into
The hardest part was telling humans and agents apart reliably without ever locking out a real person, which meant tuning the routing threshold carefully, adding an “I’m human” escape link, and getting the LLM agents fast enough to beat a 6-second limit.
Accomplishments that we're proud of
I'm proud that three very different real agents (a plain HTTP scraper, a browser-driving agent and a screenshot-reading vision agent) each get correctly identified live on stage and handed rules that fit them.
What we learned
I learned that machines give themselves away through their behaviour (teleporting cursors, clicks dead in the centre, instant reading) far more than through any single signal, and that the more interesting question is what an agent should be allowed to do, not just whether it is one.
What's next for Reverse Captcha
Next I want to swap the hand-written rules for a trained model, package the lane routing as a drop-in script and API that any site can add, and work towards an open standard for how agents identify themselves and the person they act for.
Built With
- css
- fastapi
- html
- javascript
- playwright