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.
Team
- 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.
- Step 1 /sign-in0 failures
- Step 2 /app1 failure
- Step 3 /app/team0 failures
- Step 4 /app/teamReading
- Step 5 /app/teamNext
- Step 6 /app/teamNext
- 390 same try, on a phoneNext
- 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.
demo-target.test/app/team
Team“Team, heading”
Showing the usability layer.
Someone who looks away can't tell the invitation went out. Try 2 sent it a second time.
Proposed by AIUsabilityWCAG 4.1.3, status messages. A screen reader hears nothing about the invitation.
Set by ruleAccessibilityWCAG 1.3.1, at step 2.
Proposed by AIAccessibilityThe confirmation never receives focus, so anyone not looking at that spot misses it.
Focus trace · steps 2 to 4Page 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.
- 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.
Team
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.
Team
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.
- Page loaded.
- Team, heading.
- Missing: nothing about the invitation is announced.
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.
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.
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
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
Team
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
- 1Opened Team
- 2Typed sam@demo-target.test into Email address
- 3Left Role as Member
- 4Pressed Send invitation
- 5Saw “Invitation sent to sam@demo-target.test.”
- 6On the next screen the message was gone
- 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.
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.
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.
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.