Find what gets in the way of using your product.

Describe a task in your product. Variantly tries it from the perspectives you name, keeps every screen, and reads each one for what slowed someone down and what shut someone out. You decide each issue, your coding agent gets a fix brief, and a recheck confirms the fix.

Not open yet

Free checks and new accounts aren’t open yet. Leave your work email and we'll write once, when Variantly opens.

One email, when Variantly opens.

Watch it workTrying “Invite a teammate with the right access.” as New administrator · step 4 of 7
Step 4
Pressed Send invitation.
Transcript
Nothing announced; the confirmation has no role.
Focus
Stayed on the button.
Rules
1 failure: status message not announced (4.1.3).
Reading
The message is gone in 3 seconds. The try sends the invitation a second time at step 6.
  1. Step 1 /sign-in0 failures
  2. Step 2 /app1 failure
  3. Step 3 /app/team0 failures
  4. Step 4 /app/teamReading
  5. Step 5 /app/teamNext
  6. Step 6 /app/teamNext
  7. 390 same try, on a phoneNext
  8. Keyboard only same try, no pointerNext

An example try on a demo product, redrawn by hand. No review was run, and nothing here is live.

Invite a teammate with the right access.Try 1 of 2 as New administrator, 3 October 2026 · step 5 of 7, after “Send invitation”

demo-target.test/app/team

Showing the usability layer.

1. The confirmation disappears after 3 seconds.

Someone who looks away can't tell the invitation went out. Try 2 sent it a second time.

Proposed by AIUsability
2. Send invitation can be pressed twice.Usability · try 2, step 6
3. Role defaults to Member without saying what Member can do.Usability · step 3
The confirmation isn't announced.

WCAG 4.1.3, status messages. A screen reader hears nothing about the invitation.

Set by ruleAccessibility
Email address has no visible label when filled.

WCAG 1.3.1, at step 2.

Proposed by AIAccessibility
Focus order: Email address, Role, Send invitation.

The confirmation never receives focus, so anyone not looking at that spot misses it.

Focus trace · steps 2 to 4
What a screen reader hears
Page loaded.
Team, heading.
(nothing about the invitation)
Transcript · derived from the accessibility tree

Example screen redrawn from a demo product, not from a real review.

7 steps, every one captured. Steps 5 and 6 are where it went wrong.

Same screen, different perspectives.

Describe who is trying the task. Variantly works through it once for each perspective you name and keeps what that try ran into.

Try it as
Task
Something a person comes to your product to do, and how you'd know it worked.
Perspective
Who is trying it, described in a line or two.
Try
One perspective working through one task once. A try isn't a person, so it doesn't replace research with people.
Trying as New administratordemo-target.test/app/team · step 5

Sent the invitation at step 4. At step 6 the confirmation was already gone. Try 2 sent it a second time.

One capture, read for usability and accessibility.

The same moment, checked two ways: did it slow someone down, and did it shut someone out.

What a sighted person sees

Step 5. The confirmation shows for 3 seconds, then disappears.

Usability

Someone who looks away can't tell the invitation went out, and may send it again.

What a screen reader hears

The same moment, from a transcript built from the accessibility tree. It isn't a real screen reader.

  1. Page loaded.
  2. Team, heading.
  3. Missing: nothing about the invitation is announced.
Accessibility · WCAG 4.1.3

The status message isn't announced, so a screen reader user never learns it worked.

From an issue to a fix you can prove.

What the recheck saw sits beside the issue, not a commit message.

  1. A person decides

    A rule or AI raises each issue. You mark it Act on it, Check with people, or Intended behavior, with the evidence beside it.

  2. Your coding agent fixes it

    Every issue you act on becomes a fix brief: what to change, where, and what the recheck will look for.

    • Claude Code
    • Codex
    • Cursor
    • MCP server
  3. A recheck looks again

    The same task runs again from the same perspective. It records whether the condition was seen, not seen, or couldn't be told; it never closes the issue for you.

Step 6, after Send invitation

Fix brief
Where:   /app/team, #invite-flash
Change:  render the message in <div role="status">;
         remove the 3000 ms timeout; keep a Dismiss button.
Recheck: message present at step 6; transcript includes
         "Invitation sent to sam@demo-target.test."

Open Act on it, decided by Ledgerly reviewer, 3 October 2026. Waiting for the recheck.

Example screen redrawn from a demo product, not from a real review. The decision and the recheck are part of the example.

Every screen it saw, kept.

Every issue links back to its capture, so anyone can check it.

Steps try 1 of 2

  1. 1Opened Team
  2. 2Typed sam@demo-target.test into Email address
  3. 3Left Role as Member
  4. 4Pressed Send invitation
  5. 5Saw “Invitation sent to sam@demo-target.test.”
  6. 6On the next screen the message was gone
  7. 7Reloaded; the invitation is listed as Pending

Accessibility tree step 5, excerpt

heading "Team"
textbox "Email address"
combobox "Role": Member
button "Send invitation"
(no status region)

Screen reader transcript step 5

Page loaded.
Team, heading.
(nothing about the invitation)

Focus trace steps 2 to 4

1  Email address
2  Role
3  Send invitation

Decision Ledgerly reviewer, 3 October 2026

Act on it. Both readings point at the same element. One change closes both.

Recheck will look for step 6

The message present at step 6, and the transcript includes “Invitation sent to sam@demo-target.test.”

Example screen redrawn from a demo product, not from a real review.

Evidence you can check, as you ship.

What the product does today, and what it never does on its own.

Built to be checked

  • A person decides every issue. AI proposes; it never closes anything on its own.
  • Every issue links to its capture: the screen, the steps, and what was on it.
  • Nothing runs on signed-in pages until you confirm, with a test account you control.
  • Gaps are listed. Every review says what it didn't cover.

Stays true as you ship

  • Replayed on a schedule. Starter and Team replay every night; Report only, once a month. When a screen changes, the affected report rows go back to a person.
  • No per-seat fee. Everyone at your company can sign in and see the same tasks, issues and evidence.
  • Ready when a buyer asks. Your accessibility conformance report (ACR: VPAT® 2.5, OpenACR) is set from accessibility scans and recordings of your product, never from a task review's issues, and every row says who set it. How a report row is set.

Buy the report once, or keep reviewing.

Starter and Team include the accessibility conformance report when billed yearly. Compare plans and coverage.

Report only

$800 once

Billed once

  • Without a subscription: an ACR in VPAT® 2.5 and OpenACR formats, scoped and dated. Optional renewal $500/year. Included in Starter and Team billed yearly.
See Report only

Starter

$100/month

Billed $1,200/year · two months free, save $240

  • Or $120/month, billed monthly. One product, an included usage allowance, and the accessibility conformance report when billed yearly.
See Starter

Team

$250/month

Billed $3,000/year · two months free, save $600

  • Or $300/month, billed monthly. Multiple products, a larger shared usage allowance, and the accessibility conformance report when billed yearly.
See Team

Free check: Accessibility results for your public pages, private to you.

See where your product gets in the way.

Start with your public pages, free and private. Nothing runs on signed-in pages until you add a test account and confirm.

Leave your email for when Variantly opens.