Aman Khatri — Product Designer

Case study · Accessibility at scale · Enterprise AI · Design leadership

Proving AI works for everyone, at the speed AI ships

AI products now change every sprint, but accessibility is still checked by hand, a few screens at a time. For any company selling AI to enterprises and governments, that gap is a risk to revenue, a legal risk and a risk to its reputation. On Infosys Topaz AI Next, with 7 AI capabilities and 385 screens, two-thirds of the accessibility checks had never been run. I designed and led a system that makes accessibility testing as fast and repeatable as the product itself.

  • 1 in 6people worldwide live with a significant disabilityWHO
  • Jun 2025the European Accessibility Act became enforceable across the EUEU
  • VPATthe proof of conformance enterprise and public-sector buyers ask forProcurement
The live Infosys Topaz AI Next landing page, with a hero carousel reading: AI hype is everywhere. Proof's rare. See what's actually working.
Before: 64.8% of 20,690 checks had never been evaluated. After: 54 of 55 criteria settled with evidence on the landing page.
Role
Accessibility Lead. I set the strategy, method, governance and remediation plan.
Product
Infosys Topaz AI Next: Home, Fabric / Harmony, Digital Worker, Value Discovery, Neural Connect, Document AI, Engage
Standard
WCAG 2.2, Levels A and AA, 55 criteria per screen
Tools
Lighthouse, Claude (Cowork), Claude in Chrome, W3C WCAG 2.2 guidance
Phase
Phase 1 complete. Phase 2 (full platform rollout) is scheduled.
  • Accessibility strategy
  • Systems thinking
  • Design systems
  • Stakeholder alignment
  • AI-assisted workflows
  • Risk and governance
  • Business case

Executive summary

30-second read

Challenge

AI Next had automated accessibility scans on all 385 screens, but no reliable picture of how accessible it really was. 64.8% of 20,690 checks had never been evaluated.

Strategy

I built a three-layer audit system: machines scan, Claude tests the live product in a real browser, and a human makes the judgment calls. All 55 criteria are covered, and every verdict comes with evidence.

Results

A platform-wide baseline across 7 AI capabilities. A full audit of the product's front door, with 54 of 55 criteria settled. And 13 failures traced to 10 design-system fixes.

Impact

The method covers about 98% of criteria per screen, up from about 36%. It needs an estimated 80–88% less human effort than testing by hand, with the full platform planned for 12 weeks (see the effort model).

Outcome of Phase 1: a complete, defensible accessibility picture of AI Next, and a plan leadership can act on.

01 — The challenge

A score is not an answer

Enterprise buyers increasingly expect accessible AI products, and every AI Next capability had a Lighthouse score. Our dashboard marked all seven audits “complete.”

But automated scanning can settle only about 20 of the 55 WCAG 2.2 A and AA criteria on a screen. It can find low-contrast text and unnamed buttons. It can't tell whether a keyboard user gets trapped, whether focus is visible, or whether an error message explains how to fix the problem. On a platform full of AI workflows, those are exactly the moments that decide whether someone can finish a task.

How I framed it

The question wasn't “what's our score?” It was “can a person using a keyboard, a screen reader or a magnifier actually use our AI products, and can we prove it?” That changed the job from running a scan to designing an audit system.

02 — Strategy

Three layers, one source of truth

I gave every one of the 55 criteria an owner, matched to whoever is best at testing it.

LAYER 1 · AUTOMATED

Machines scan

Lighthouse runs across every screen of all 7 capabilities and settles about 20 criteria per screen, such as contrast, names, labels and language.

385screens scanned
LAYER 2 · AI-RUN TESTING

Claude tests the product

Claude works in a real browser. It presses Tab, zooms, resizes, injects CSS, measures colors and reads the accessibility tree, covering 34 criteria that scans can't.

34criteria per screen
LAYER 3 · HUMAN JUDGMENT

I make the calls

I decide borderline cases, anything with side effects, and final sign-off. Flash-rate safety (2.3.1) goes to specialist tooling and is never guessed.

1.2%of rows needed me
Three-layer accessibility audit architecture Screens from 7 AI capabilities flow into Layer 1, an automated Lighthouse scan, and Layer 2, Claude testing in a real browser under guardrails. Both write evidence into one audit workbook with 55 rows per screen. Layer 3, designer review, makes judgment calls and signs off. Outputs are a platform dashboard and conformance report, and design-system fixes. Fixes loop back to Layer 2 for re-testing, and a row only becomes Pass when measured. Flash-rate testing goes to specialist tooling. Re-test: Fail becomes Pass only when measured INPUTAI Next7 capabilities385 screens LAYER 1 · AUTOMATEDLighthouse scan~20 criteria per screenevery screen, every capability LAYER 2 · AI-RUN TESTINGClaude in a real browser34 criteria: structure, keyboard,viewport, time, content, flowsGuardrails: no credentials,no risky submits, no guessing EVIDENCEAudit workbook55 rows per screenquery · value · key press LAYER 3 · HUMANDesigner reviewjudgment callsside effects · sign-off 2.3.1 flash-rate→ specialist tooling OUTPUTPlatform dashboardand conformancereport (VPAT) OUTPUTDesign-system fixestokens · componentsship once, reach all
How the system runs. Layers 1 and 2 write evidence into one workbook, Layer 3 decides, and every fix loops back for a measured re-test.

What Layer 2 tests

STRUCTURE · 5

Read the code

Accessibility tree, landmarks, names, live regions

Criteria covered (5)
  • 1.3.2 Reading order
  • 2.4.1 Skip repeated blocks
  • 2.5.3 Visible label matches name
  • 4.1.3 Status messages announced
  • 1.4.11 Control contrast
INTERACTION · 10

Keyboard and pointer

Traps, focus, hover content, dragging, cancelling a tap

Criteria covered (10)
  • 2.1.1 Works by keyboard
  • 2.1.2 No keyboard traps
  • 2.4.7 Visible focus
  • 2.4.11 Focus not hidden
  • 3.2.1 No surprises on focus
  • 3.2.2 No surprises on input
  • 2.5.1 No complex gestures required
  • 2.5.2 Taps can be cancelled
  • 2.5.7 Alternative to dragging
  • 1.4.13 Reachable hover content
VIEWPORT · 4

Bend the layout

320px reflow, zoom, orientation, text spacing

Criteria covered (4)
  • 1.3.4 Any orientation
  • 1.4.4 Text resizes to 200%
  • 1.4.10 Reflows at 320px
  • 1.4.12 Survives text spacing
TIME · 2

Watch it run

Timeouts and content that moves on its own

Criteria covered (2)
  • 2.2.1 Adjustable time limits
  • 2.2.2 Pause moving content
CONTENT · 5

Read like a person

Headings, instructions, images of text, ways to find pages

Criteria covered (5)
  • 1.3.3 Not relying on shape or position
  • 1.4.5 Real text, not images of text
  • 2.4.6 Descriptive headings and labels
  • 2.5.4 No motion-only controls
  • 2.4.5 More than one way to find pages
FLOWS · 8

Walk the journeys

Errors, suggestions, sign-in, and consistency across screens

Criteria covered (8)
  • 3.3.1 Errors identified
  • 3.3.3 Fix suggestions
  • 3.3.4 Error prevention for key transactions
  • 3.3.7 No re-entering information
  • 3.3.8 Sign-in without puzzles
  • 3.2.3 Consistent navigation
  • 3.2.4 Consistent naming
  • 3.2.6 Consistent help

Guardrails I set before the first test

  • Never handle credentials. Claude reuses my signed-in session.
  • Never submit forms that create records or send anything. It captures a screenshot and logs the form instead.
  • Never guess beyond what its tools can measure, and never overwrite a verdict the scanner already settled.
  • Never decide a borderline case alone.

Should we buy an audit, or build a capability?

Options

  • Hire a one-off external audit
  • Have designers test by hand
  • Build a repeatable system using AI

Chose

A repeatable three-layer system

Why

AI products change every sprint, and a one-off audit is out of date by the next release. A system can re-test after each fix and keep accessibility verified over time.

03 — Platform baseline

Seven AI capabilities, one honest picture

Layer 1 ran across the whole platform. For the first time we could see all seven capabilities side by side, and see how much the scanner simply couldn't tell us.

Platform result dashboard titled Automated scan results across AI Next: 7 capabilities, 385 screens, 20,690 total checks, 573 known fails, with a table of pass, fail, partial and not-evaluated counts for each capability.
Real artifactThe platform result dashboard, combining all seven capability workbooks. It was the first view of the whole platform on a single screen.
View the dashboard data as a table
Automated results by AI capability (20,690 checks; 3,846 not applicable)
CapabilityScreensPassFailPartialNot evaluated
Home5301937131 (47.6%)
Fabric / Harmony74421160592,591 (63.7%)
Digital Worker81533102342,728 (61.2%)
Value Discovery66344171422,325 (64.0%)
Neural Connect102782121403,542 (63.0%)
Document AI*7195372231 (60.0%)
Engage*5031174231,849 (82.0%)
Total3852,44070030713,397 (64.8%)
Lighthouse accessibility report scoring 25 of 29, flagging that buttons do not have an accessible name, with failing elements button.menu-toggle and button.custom-toolbar-more-options-select.
Real artifactLayer 1 output for one of 385 screens. The report itself notes that automatic detection “can only detect a subset of issues.” That subset is where Layer 2 begins. The internal URL has been cropped out.

* Document AI and Engage figures are derived estimates. 573 of the 700 failures are exact counts from five capability workbooks.

What I noticed

The same automated failures kept coming back across screens: missing main landmarks, low-contrast text, buttons with no name, fields with no label. That pattern told me early that the fixes would belong in the design system, not on individual screens.

04 — Calibration

Earning trust before scaling

Before pointing Layer 2 at our product, I calibrated it against a public benchmark site. Claude ran all 55 criteria on 6 screens, for 330 checks in total, and graded how confident it was in every row.

  1. 9criteria flagged for human review after the first pass
  2. 3 movesmeasure every gap, cite W3C guidance on judgment calls, and read the real accessibility tree
  3. 4 / 330rows still needed a human call (1.2%)
Excerpt of the audit workbook showing rows for WCAG criteria 1.1.1 through 1.4.1, each with applicability, conformance, remarks, non-conformance and the manual testing evidence used.
Real artifactThe evidence standard in practice. These are actual rows from the front-door audit workbook, in the team's familiar six-column format. The last column records how each verdict was reached.

The turning point came when Claude reversed its own call. It had marked a link as meeting the 24px target size without measuring it. On a second check it measured the link at 82.4 × 18.5px and changed its answer to Fail. A re-run days later gave identical results. That's when I knew the method was safe to scale.

How do you get leadership to trust an AI audit?

Options

  • Rely on the AI's confidence scores
  • Have a person re-check every result
  • Make every claim checkable

Chose

Make every claim checkable

Why

Every row records the exact query, value or key press behind it, and judgment calls cite the W3C documentation. Trust you can verify scales. Trust you have to assume doesn't.

05 — Full audit

All 55 criteria on the product's front door

The AI Next landing page is the first screen every buyer and user sees. I audited it with all three layers together, for a full A and AA picture.

  • Pass 21
  • Fail 13
  • Partial 3
  • Not evaluated 1 (flash-rate)
  • +17 not applicable
The live AI Next landing page hero carousel with numbered annotations on the previous and next arrows, the pagination dots, the GET IN TOUCH link, and the carousel as a whole.
Live product
  1. 1The arrows are plain <div> elements, with no button role, no name and no keyboard access (Works by keyboard, 2.1.1 · Name, role and value exposed, 4.1.2)
  2. 2The dots are unlabeled <div> elements that can't be focused (Works by keyboard, 2.1.1 · Name, role and value exposed, 4.1.2)
  3. 3The link is set apart by color alone, with text-decoration: none (Not color alone, 1.4.1)
  4. 4The carousel autoplays every 5 seconds, loops forever, and has no pause control (Pause moving content, 2.2.2)

A carousel that never stops

Fail · Pause moving content (2.2.2)

Read straight from the plugin's live configuration. There's no pause control anywhere on the page.

{ autoplay:true, autoplayTimeout:5000, loop:true }

Focus is invisible

Fail · Visible focus (2.4.7)

I tabbed to four elements in a row, and none showed an outline, shadow or border.

outline:none · box-shadow:none

Images and controls without names

Fail · Text alternatives, names (1.1.1, 4.1.2)

54 of 112 images have no alt text, and the search buttons and menu toggle have no accessible name.

<button><i class="fa-search"></i></button> // name: ""

Placeholders used as labels

Fail · Labels, autofill (3.3.2, 1.3.5)

More than 39 fields have no label and no autocomplete. Five of the page's 21 H1s are empty.

<input placeholder="E-mail"> // no label
The live GET IN TOUCH lead form, with six input fields outlined, each showing only placeholder text such as First Name, E-mail and Company Name.
Live product
  1. 5Each field uses its placeholder as its only label, and the label disappears once you start typing. There's no <label> and no autocomplete (Labels and instructions, 3.3.2 · Autofill for personal fields, 1.3.5)

Where the AI stopped and I stepped in

To test error handling, someone had to submit a live lead form. When Claude tried, the platform's safety layer stopped it, so I submitted the form myself with clearly labeled test values. Claude then inspected what came back:

The live lead form after submitting test values, showing inline error messages such as The input value must be between 4-100 characters, Please enter valid email id, and This is a required field.
Real test
  1. 6The error text is clear and appears right next to each field

What assistive technology receives

<input>
aria-invalid: not set
aria-describedby → nothing
<span> error
role: none · aria-live: none
not linked to its field, never announced

Partial · Errors identified (3.3.1) The errors are specific, but assistive tech can't see them. Pass · Fix suggestions (3.3.3) The messages suggest how to fix the input. Fail · Status messages announced (4.1.3) No live region exists anywhere on the page.

06 — Before → After

What changed

Not evaluated · automated scan alone, all 385 screens64.8%
Not evaluated · three-layer audit, front door1.8%
Before and after comparison
DimensionBeforeAfter
CoverageAbout 20 of 55 criteria settled per screen54 of 55, using all three layers
EvidenceA score and a “Not Evaluated” labelThe exact query, value or key press behind every row
Human effort225–290 hours of testing by hand34–46 hours of review (modeled)
UnknownsHidden behind “complete”Named, each with a reason
OutputA list of failing screens10 component fixes that reach every screen

07 — Design system

Fix the system, not the screen

I traced every failure back to the component or token that caused it. Ten fixes close all 16 open findings on the front door. Because they live in shared components, they'll reach every screen that uses them.

Remediation plan: 13 failures and 3 partial passes
System fixChangeWho it unblocksResolves
Focus ring tokenA 3px :focus-visible outline on every controlKeyboard users
  • Visible focus 2.4.7
Link styleLinks underlined by defaultPeople with color blindness or low vision
  • Not color alone 1.4.1
Text fieldA required label, errors linked to their field and flagged as invalid, and autocompleteScreen reader users, people with cognitive disabilities
  • Labels and instructions 3.3.2
  • Autofill for personal fields 1.3.5
  • Errors identified 3.3.1
Status regionA shared role="status" region for resultsScreen reader users
  • Status messages announced 4.1.3
CarouselReal, labeled buttons, a pause control, and no autoplayKeyboard users, people with attention or motion sensitivity
  • Pause moving content 2.2.2
  • Works by keyboard 2.1.1
  • Name, role and value exposed 4.1.2
Icon buttonaria-label required, or the build failsScreen reader users
  • Clear link purpose 2.4.4
  • Name, role and value exposed 4.1.2
  • Text alternatives 1.1.1
ImageAlt text required, or the image explicitly marked decorativeScreen reader users
  • Text alternatives 1.1.1
Page templateA skip link, one <main>, one H1, and a lint rule against empty headingsKeyboard and screen reader users
  • Skip repeated blocks 2.4.1
  • Structure and relationships 1.3.1
  • Descriptive headings and labels 2.4.6
Border tokenControl borders at 3:1 contrast or betterPeople with low vision
  • Control contrast 1.4.11
Target tokenA 24×24px minimum hit areaPeople with motor impairments
  • Targets at least 24px 2.5.8

What counts as “done”?

Options

  • Engineering marks a ticket closed
  • The automated score goes up
  • The fix is measured again

Chose

The fix is measured again

Why

After each fix ships, Claude re-runs the exact check that failed. A row only flips to Pass when it can be measured, so the workbook never claims more than it can show.

08 — Leadership and alignment

Six groups, one plan

An AI-run audit inside an enterprise needs a yes from people who are measuring very different risks. I designed the program around each one.

How I brought each stakeholder along
StakeholderWhat they neededWhat I delivered
My managerIs it accurate, and what will it cost?A leadership deck, a pilot-first plan, and human hours spelled out month by month
IT securityAn AI extension inside our networkA scoped security exception: one asset, one intranet host, no credential handling
Accessibility reviewersCan we check this?Their existing workbook format, with evidence and a confidence grade on every row
EngineeringWhat exactly do we change?Fixes at the component and token level, each with a check they can repeat
MarketingNo junk leads in our systemNo automated form submissions, and one labeled test that I sent myself
People with disabilitiesCan I complete my task?Every fix mapped to the people it unblocks

09 — Rollout

Twelve weeks to every AI capability

Phase 2 brings all three layers to every screen. It starts with the smaller capabilities, runs a five-screen calibration pilot in each, and has a review checkpoint after every wave.

Scroll sideways to see all 12 weeks.

385screens across 7 AI capabilities
260–340hours of testing run by Claude (modeled)
3–4 h/wkof expert review, 34–46 hours in total (modeled)

10 — Business impact

What this is worth to the business

36% → 98%

Coverage per screen

From about 20 of 55 criteria settled to 54 of 55, shown on the front-door audit.

Measured · see effort model, row G
80–88%

Less expert effort

34–46 hours of review instead of 225–290 hours of testing by hand.

Modeled · see effort model, rows A–C
12 wks

Instead of more than a year

If the same 3–4 hours a week went into testing by hand, it would take 56–73 weeks.

Modeled · see effort model, rows E–F
10 → 385

Fixes that compound

Each fix lands in a shared component, so it improves every screen that uses it.

Basis: failures traced to shared templates
Audit-ready

Evidence buyers can check

Because every verdict is reproducible, the results can feed an Accessibility Conformance Report (VPAT) for enterprise procurement.

Basis: evidence recorded on every row
Risk, quantified

Exposure made visible

Accessibility rules in procurement and regulation build on WCAG. 13,397 unknowns became a measured backlog with an owner.

Basis: platform baseline

How the effort numbers were calculated

Coverage is measured. The effort and timeline figures come from a planning model, not from timed results. Every input is shown below so you can check the arithmetic, or swap in your own assumptions.

Effort model: inputs, formulas and how confident each number is
RowFigureHow it's calculatedStatus
A225–290 h manual baseline385 screens × 35–45 min each for a trained tester to run the 34 manual criteriaAssumption
B34–46 h human reviewTotal of six activities: setup 1–2 h · calibration review 3–5 h · borderline calls 10–14 h (about 58 screens × 10–15 min) · 7 capability checkpoints × 1–1.5 h = 7–10 h · QA spot-check of 19 screens × 15 min = 4–5 h · weekly syncs 9–10 hEstimate
C80–88% less human effort1 − B ÷ A, calculated at both ends: 1 − 46/225 = 80%, and 1 − 34/290 = 88%Derived
D260–340 h Claude timeRow A's per-screen time (225–290 h), plus cross-screen passes (7 × 3–4 h = 21–28 h), plus roll-ups (16–24 h)Estimate
E12 weeks rolloutRow D spread across 12 weeks is about 22–28 h a week of Claude testing. The pace is set by the weekly human review, not by Claude.Plan
F56–73 weeks by handRow A ÷ 4 h a week. This compares the two approaches with the same human time budget.Derived
G36% → 98% coverageLighthouse settles 20 of 55 criteria per screen, from the workbooks. The three-layer audit settled 54 of 55 on the landing page.Measured

Why trust a model that isn't measured yet?

Conservative where it matters

Row B assumes about 15% of screens need a judgment call. The calibration run measured 1.2% of rows, so real review time is more likely to come in below the estimate than above it.

Biggest sensitivity

Row A's minutes per screen drive both the baseline and Claude's time. If testing by hand takes 25 minutes a screen instead of 35–45, the saving drops to about 70–80%. It's still large.

How it gets replaced

The Phase 2 pilot logs start and end times for every screen, plus every minute I spend reviewing. After the pilot, rows A–F are recalculated from real measurements.

11 — Conclusion

From a score to a system

Before this work, accessibility at AI Next was a dashboard score with a 65% blind spot. Now it runs as a program. Every criterion has an owner layer, every verdict has evidence, every failure has a design-system fix, and the platform rollout has a schedule, a cost and a definition of done.

Phase 1 proved the hard part: an AI agent can do rigorous, checkable accessibility testing on a live enterprise product while a designer keeps the judgment. Phase 2 is now an execution problem, not a research problem.

What I delivered in Phase 1

  • Platform baselineAutomated results for all 7 AI capabilities and 385 screens, in one view
  • Three-layer audit systemCovers all 55 criteria, with guardrails and an evidence standard
  • Calibration benchmark330 checks, with human review cut to 1.2% of rows
  • Full front-door auditAll 55 criteria on the product's landing page
  • Design-system remediation plan10 fixes resolving all 16 open findings
  • Rollout plan and approvalsA 12-week plan, a leadership deck and a security exception request

Accessibility didn't need more testers. It needed a better-designed system for testing, and someone to own the judgment.

12 — How I work

What this project says about me as a designer

  • I reframe before I execute

    The ask was to fill gaps in a spreadsheet. I made it about whether people can use our AI products, and whether we can prove it.Evidence: three-layer strategy, chapter 02

  • I design systems, not screens

    I traced 13 failures back to 10 shared fixes, so the impact reaches every capability.Evidence: remediation plan, chapter 07

  • I make risk visible and manageable

    I set guardrails before the first test, named the unknowns, and treated the AI's refusal to submit a live form as the system working.Evidence: guardrails and the human-in-the-loop test, chapters 02 and 05

  • I lead without authority

    Security, engineering, marketing and leadership each had a reason to say no. I designed the plan so each could say yes.Evidence: stakeholder plan, chapter 08

  • I speak the language of the business

    Coverage, effort, timelines and procurement readiness, all quantified and labeled honestly.Evidence: business impact, chapter 10

  • I use AI as a multiplier, not a crutch

    Claude does the hands-on testing, which comes to hundreds of hours across the full rollout. I own the method, the trust model and every judgment call.Evidence: calibration, chapter 04

Known limits, by design: screen-reader exposure is checked through Chrome's computed accessibility tree rather than NVDA, JAWS or VoiceOver. Flash-rate safety goes to specialist tooling. Both are listed in the plan, not left out of it.

Glossary

Terms used in this case study

WCAG 2.2, Level A and AA
The W3C's international accessibility standard. A and AA are the 55 checks most laws and buyers expect.
Criterion (for example 2.4.7)
One individual check in the standard, such as “Visible focus.”
Screen reader
Software that reads the interface aloud for blind and low-vision users.
Keyboard focus
The highlight that shows which control a keyboard user is on.
Accessibility tree
The browser's description of a page that assistive technology reads: names, roles and states.
Landmark
A labeled region, such as main content or navigation, that lets people jump around a page.
Live region (aria-live)
Code that tells a screen reader to announce updates, like an error message, as they appear.
aria-describedby
Code that links an error message to its field, so it's read out with that field.
Lighthouse
Google's automated audit tool. It can check only part of WCAG.
VPAT / ACR
A Voluntary Product Accessibility Template, or Accessibility Conformance Report. It's the document buyers request to see how well a product conforms.
Design token
A shared design value, like a color or focus style, that one change updates everywhere.