← All projects
Founder
Funnel analysis with zero AI guesswork, and every claim traceable to the page.
2,108 funnels x-rayed into measured facts, with no LLM in the loop.
Win: Same funnel in, same score out — 12,962 evidence items, zero AI guesswork.
The results
- 2,108
- Funnels x-rayed
- 12,962
- Evidence items, no LLM
- 51-endpoint API
- Free, no signup
What was in the way
Funnel analysis is either an expensive manual teardown or an AI that confidently makes things up. Neither is repeatable. Paste the same page into a chatbot twice and you get two different answers, none of them tied to what is actually on the screen. I wanted a funnel read a machine could trust: same input, same output, every claim pinned to the exact copy or CSS it came from. That ruled out the easy build. A language model would have shipped in a weekend and been wrong in a way nobody could audit.
What it is
Paste a URL and UXXRAY walks the funnel the way a visitor would, homepage through checkout, and reports the conversion tactics it finds: money-back guarantees, proof placement, pricing transparency, urgency. It checks 25 tactics on every funnel; the average funnel uses 3.7 of them. Every tactic is tied to the real evidence on the page, the exact line of copy or the computed style, and the funnel gets a 0-100 coverage score. Results are public in a ranked league, exportable as JSON and design tokens, and readable by AI agents through a free API with no signup. 2,108 funnels are already in there, and the corpus makes uncomfortable reading: only 329 of them put proof above the fold.
What I built
A deterministic crawler that walks a multi-step funnel and reports an honest outcome — measured, blocked, no funnel found, or structure unreadable — instead of returning a number no matter what. A detection layer that ties each of the 25 tactics to the exact copy or computed CSS it was measured from, now 12,962 stored evidence items. A scoring model built on that evidence rather than inference, so nothing in the path calls a language model. Underneath: Cloudflare Workers with D1, R2, Browser Rendering and Durable Objects, a 51-endpoint public API, and a hosted MCP server whose tools are generated from the same endpoint registry that drives the OpenAPI document, so the two cannot drift. It re-crawls unattended three times a day. 1,139 tests run as the gate.
The outcome
Live and free, no signup, with the whole API open. The discipline is the product: every published corpus number comes from one derivation module, written after five copies of the same classifier quietly drifted apart, and a population the system cannot compute is published as null with a stated reason rather than dropped — 8 of the 16 it declares are absent and say why. Percentages ship with their own denominator and a warning against misreading them. A product whose whole claim is measurement does not get to round its own numbers.