Wayford

who gets across ·

It works perfectly. For Ada.

Every app works for the people who built it. Wayford sends an AI agent through your web app toward one goal, under on what it can read, tap and take in, enforced in code. It shows who gets across, and the assumption behind every no.

How it works

· ·

· ·

Readable isn't reachable.

Scanners check rules. Test bots check flows. Neither tells you who it works for.

Most teams test as Ada: every limit off, every pattern known, never lost in a menu she designed. People who get stuck rarely tell you. In one UK survey of disabled internet users, most said they simply leave.

stops here

The paragraph above is 16 px, like most text on this page. Zoya's text limit is 24 px, so that text never reaches her AI.

measured in your browser

Give it a goal. See who gets across.

A URL, one sentence in your user's words, and a cast. Never the clicks.

Wayford sends an AI agent toward the goal once per and . Success is checked by URL or element, never by the agent saying so. You get a rate per persona, the (the first limit value where fewer than half get through), and evidence a developer can check step by step, with the same perception decisions for the same seed.

  1. 00

    Target · the goal

    Your user's words, and a success URL the code checks.

  2. 01

    Cast · the limits

    Five sets of limits, each with its source.

  3. 02

    Lens · what the AI gets

    The page as each persona's filter leaves it.

  4. 03

    Race · same goal

    Same goal, same model, same instructions.

  5. 04

    Report · the rate

    Ten seeds each: and .

  6. 05

    Boundary · the margin

    The first limit value where fewer than half get through.

  • Hourglass for a budget of 120 s.

    Ada

    The control, with every limit switched off.

    • Every element reaches her AI, and she knows every interface pattern.
    • Only her time is capped: 120 s per goal ().
  • Hourglass for a budget of 120 s.

    Kai

    Sees the page clearly, on a desktop.

    • Takes in 11 things on a page at once and remembers his last 2 steps ().
    • Knows only everyday shop words, not the hamburger, kebab, breadcrumb, tabs or accordion ().
  • Phone in hand for a mobile device. Hourglass for a budget of 90 s.

    Milo

    Proficient, in a hurry, on a phone.

    • A link or button under 44 px never reaches his AI ().
    • Knows every pattern, takes in 20 things at once, has 90 s and scrolls when stuck ().
  • Glasses for a contrast threshold of 3:1. Hourglass for a budget of 120 s.

    Vera

    Less practised, on a desktop.

    • Text under 3:1 contrast may not reach her AI ().
    • Text under 16 px never reaches her AI ().
    • Targets under 32 px never reach her AI ().
  • Glasses for a contrast threshold of 7:1. Hourglass for a budget of 180 s.

    Zoya

    Every limit, at its strictest.

    • Text under 24 px never reaches her AI ().
    • Targets under 48 px never reach her AI ().
    • Takes in 5 things at once and knows no patterns ().

Limits, not characters. No job titles. No diagnoses.

  • names its source

Hover, focus or tap any underlined term for what it means and where it comes from.

stops here

On , every way to your past orders goes through a link under 44 px; Order archive is 36 px. Milo's limit is 44 px, so none of those links ever reaches his AI.

evidence: the route table

We don't ask an AI to pretend. We take things away from it.

A persona is a filter in code, not a prompt.

Filter

Plain code between the browser and the model. An element below a on contrast, text or target size never reaches the model. Under a , the run seed decides, once per element. Zero inside. Every limit names its source, or says it's our assumption.

proof in our repo: perceive.ts · every source

Seed

Every perception decision and comes from the run . Same seed, same page, same decisions. The model's answers don't replay, so we report a rate.

proof in our repo: same seed, same text · seeded numbers

Dial

Tighten one limit over the same seeds and get the first value where fewer than half the runs get through: the . A number for a feature.

proof in our repo: boundaryOf

Of the tools we checked, none had all three. Same instructions for every persona, word for word, enforced by a test.

the closest we found, UXAgent: its paper · its code

proof in our repo: the tools we checked · the same-request test

· on Quillmere, our test shop

It's right there.

What you're looking at: Quillmere, our own small demo shop, built for testing Wayford. We know every route to each of its goals, so a result can be checked against the truth. Below, a copy of its Deliveries page, and what the AI was given about it.

The goal: "you want to see what you ordered three months ago". For , the last way there is the pale Order archive link. It's on the page. But at , one of our ten test seeds, the AI testing as Vera never received it: her contrast limit filtered it out before the AI read the page.

about Quillmere, in our repo: its goals and three routes

quillmere · /deliveries · a copy

stops here

The pale Order archive link measures 2.0:1, under Vera's 3:1. Her limit is : between 1.5:1 and 3:1, the seed decides. At seed 2 the link never reaches her AI; on 4 of our 10 seeds it arrives .

evidence: the calibration

Quillmere's /deliveries, in its own colours. The filter runs on this copy in your browser, with the engine's seeded code as it stood on 10 Oct 2026, copied from it. The same seed gives the same filter decisions; the AI's answers can differ.

copied from our repo: random.ts · band.ts · mask.ts

What the model read

The exact text the AI was given about this page, after the persona's limits were applied: one line per thing on the page, with where it sits, in pixels.

    The engine's own text for this page at 1280 × 720.

    filtered out

      The rule, the number, the source. You argue with an assumption, not with an AI's mood.

      A rate, not an anecdote.

      The same ten seeds for every persona, on Quillmere's hard goal. Two numbers, never one score.

      is how often the filter left a way through, and it reproduces exactly. In the app a second number sits beside it: , how often the agent made it. The gap between them is a hypothesis about finding the way, drawn dashed. There, every square opens its run at the exact step.

      's way stays open

      Two of the three routes stay open for him on all ten seeds. Whether his AI finds one, past a menu icon and a word it doesn't know, is a hypothesis: from here his line is dashed.

      how route open is computed, in our repo: routeOpenSeeds

      Got through is the agent's half. It comes from stored runs and sits beside each strip in the app's report. This page draws only the filter's half, the part that reproduces exactly.

      How much margin?

      Turn the dial. See where the goal tips.

      Route open on under half the seeds, first at a cap of 8

      The boundary is the agent's number: the first value where under half the runs get through. It comes from stored runs, so this page draws the filter's line only.

      Kai's attention cap sweep on Quillmere, our test shop

        The sweep tightens one limit over the same seeds and marks the first value where fewer than half get through. Kai's is , so we swept it on Quillmere's hard goal. Today the sweep runs on contrast and attention.

        the sweep, in our repo: its two axes · the boundary rule

        Why not ask ChatGPT to play Vera?

        You can't tell an AI to un-see a link.

        a prompted persona

        It reads the whole page and plays along. Ours never receives what its limits remove.

        a scanner like

        It checks elements against rules. It can't say which goal closes for whom, or catch a route closed by how much someone takes in at once. The W3C notes that automated testing often cannot assess whether people with cognitive or learning disabilities can use the content (W3C COGA note, 2021).

        a test bot

        It tells you the flow passes. For whom?

        A hypothesis generator, not a prediction.

        Under these assumptions, this route is closed. Check the assumptions; the rest follows.

        We claim

        • a measurement;
        • hypotheses, each linked to its evidence;
        • the same perception decisions for the same ;
        • a source on every limit, or the words "our assumption".

        We don't claim

        • how real people behave;
        • a replacement for user research;
        • compliance;
        • that the model's answers replay.

        A model given less input still reasons well. A person leans in, zooms, asks someone. The model doesn't, unless a rule says so.

        Today: no logins, no forms that save, no cookie banners, no bot checks, .

        No people were impersonated in the making of this page.

        One flow, before its next release.

        Bring us one public flow. We'll show who gets across, and why the others stopped.

        A pilot: one public, read-only flow, no login, a goal in your user's words. You get the report, the evidence and the assumption behind every no.

        For teams about to ship. Product and UX teams before a release. Accessibility specialists audit the assumptions.

        Since 28 June 2025 the European Accessibility Act applies to e-commerce and consumer banking (Directive (EU) 2019/882, Articles 2 and 31). Compliance checks what's readable. We show who still gets there.

        What it is not: a , a pass/fail suite, a compliance certificate.

        made it

        Every limit is off, so all three routes stay open for her on all ten seeds, as they should for the control. The others stopped above.

        Wayford is a village on the River Axe, in Somerset (Wikipedia). Its name reads as way and ford, where a road crosses water. The current is the same for everyone. Whether you cross depends on your height, your footing, your nerve. Nobody changes the river.

        Wayford. One interface. Who gets across?