Skip to content

Automating the human-review queue

Scope: every review item currently requiring a person in the PDF β†’ HTML β†’ PDF pipeline. Time-based media, flashing, and moving content are excluded β€” they don’t survive the round-trip.

Ceiling is how far automation can go, not how far it goes today:

AutoMachine decides. Never enters the queue.
FlagMachine decides the majority, escalates a bounded exception set.
AssistMachine drafts, human always confirms. Reduces minutes, doesn’t remove the item.
HumanStays.

Confidence on prevalence: M measured (published data), E estimate with reasoning, U unknown β€” nobody has this data. Most rows are E or U, because the corpora everyone cites measure what static scanners detect, which is precisely the complement of this list. That gap is itself an asset: nobody holds real prevalence data on the judgment criteria, and you’d be generating it.

Run costs are marginal cost per page at August 2026 inference prices, and will fall.


The structural point, before the tables

You generate the HTML. That means a large class of criteria are properties of your template, not of any document β€” focus indicators, reflow, text spacing, orientation, target size, bypass blocks, consistent navigation, and most of name/role/value are determined by the generator, identically, for every document it produces.

Test those once per template release against a fixture corpus, retain the evidence, and assert them for every document downstream. That’s not a shortcut; it’s a stronger claim than per-document sampling, and it’s how a build pipeline should treat an invariant.

Roughly eight to ten criteria move from per-document review minutes to zero this way, for about two weeks of work. Nothing else in this plan has that ratio.


HTML stage

Review itemWCAGWhat automates itCeilingHow commonRun costBuild
Reading order1.3.2A11y tree order vs. rendered geometry; then linearize and LLM-score coherenceFlagVery high in multi-column source E$0.0053–4 wk
Tab order2.4.3Drive Tab via CDP, record activeElement sequence, diff against reading orderAutoModerate E~$0.0011–2 wk
Keyboard traps2.1.2Tab 2Γ— focusable count, detect non-escaping cycles, verify Esc and Shift+TabAutoLow in generated HTML Eshares above3–5 d
Keyboard operability2.1.1Activate each control by keyboard, diff resulting DOM state against mouse activationFlagLow E~$0.0022–3 wk
Focus visible / not obscured2.4.7, 2.4.11Pixel-diff element bbox before/after focus; occlusion test via elementFromPointAutoTemplate-levelnegligible1–2 wk
Listen (announcement quality)1.1.1, 1.3.1, 4.1.2Synthesize announcement string from a11y tree (name/role/state), LLM-evaluate adequacyFlagn/a β€” method, not criterion$0.012–3 wk
Alt text adequacy1.1.1VLM on crop + page context; decorative/informative split first, then equivalence checkFlagNear-universal in PDF-derived E$0.01–0.043–4 wk
Complex images needing long desc.1.1.1Chart/diagram/map classifier gates a long-description requirementAssistHigh in gov/edu E$0.0052 wk
Table: data vs. layout1.3.1Content-type uniformity + header styling + VLM on rendered tableAutoVery high E$0.01part of below
Table: header assignment1.3.1Geometry-driven scope; headers/id proposal for spanned and nestedFlagVery high E$0.024–6 wk
Heading outline fidelity1.3.1, 2.4.6Computed font size/weight vs. tag level to find styled-not-tagged headings; LLM outline checkAutoHigh E$0.0031–2 wk
Link purpose2.4.4Generic-text detection, then LLM purpose-from-context on the remainderAutoHigh M$0.0021 wk
Color as sole indicator1.4.1Desaturate and diff; plus text pass for colour-referencing proseFlagModerate E$0.0022 wk
Sensory references1.3.3Text classifier for shape/size/position instructionsAutoLow–moderate Enegligible3–5 d
Text contrast over images/gradients1.4.3Sample rendered pixels behind glyph bboxes, worst-case ratioAutoHigh Mnegligible1–2 wk
Non-text contrast1.4.11Same engine, applied to borders and UI boundariesAutoHigh Mnegligible3–5 d
Form label adequacy1.3.1, 2.5.3Visible label vs. accessible name string comparisonAutoHigh where forms exist Enegligible1 wk
Form grouping1.3.1Geometric clustering + shared control names β†’ fieldset/legend proposalFlagHigh E$0.0032 wk
Error handling3.3.1, 3.3.3Submit invalid data, capture response, check programmatic association and textFlagHigh where forms exist E$0.0053–4 wk
Name, role, value (widgets)4.1.2Trigger widget, observe ARIA state transitions against visual state changeFlagTemplate-level$0.0033–4 wk
Status messages4.1.3MutationObserver; meaningful change outside a live regionFlagLow for static docs Enegligible2 wk
Reflow / text spacing / orientation1.4.10, 1.4.12, 1.3.4Render at 320px and 400%; inject spacing CSS; detect scroll and clippingAutoTemplate-level~$0.0011 wk
Target size, dragging alternatives2.5.8, 2.5.7Geometric measurement with exception classificationAutoTemplate-levelnegligible1 wk
Language of parts3.1.2Per-run language ID vs. lang attributesAutoLow–moderate Enegligible1 wk
Bypass blocks, multiple ways2.4.1, 2.4.5Landmark and skip-link presence; nav mechanism inventoryAutoTemplate-levelnegligible1 wk
Consistent nav / identification3.2.3, 3.2.4Cross-page diff of nav order and repeated-component namingAutoTemplate-levelnegligible1–2 wk

PDF stage

Review itemWhat automates itCeilingHow commonRun costBuild
Artifact vs. real contentPositional recurrence across pages + content classificationAutoVery high Enegligible2 wk
List structure (L/LI/Lbl/LBody)Bullet and numbering pattern detection vs. tag treeAutoVery high E$0.0022–3 wk
Tag order vs. content streamSame engine as HTML reading orderFlagVery high Esharedshared
Field tooltips, types, tab orderDeterministic from AcroForm dictionary + field geometryAutoHigh Enegligible2 wk
Radio group associationShared field name + geometric clusteringAutoHigh Enegligiblein above
Link–OBJR pairingStructural check against annotation arrayAutoModerate Enegligible1 wk
Bookmarks match outlineCompare outline tree to heading tagsAutoHigh Enegligible3–5 d
Language changes in documentPer-run language IDAutoLow–moderate Enegligibleshared
OCR quality on scanned pagesEngine confidence + VLM re-read of low-confidence regions, diffFlagHigh for scanned E$0.012–3 wk
Math and formulasFormula region detection, then MathML from source or generated altAssistLow overall, high in STEM U$0.014+ wk

What stays human

  • Authorial intent on ambiguous alt text and long descriptions. Full page context gets a model close; the residual is genuinely in someone’s head.
  • Scoping. What’s in scope, sample selection, what counts as representative, whether an exception applies. Principal-level, not reviewer-level.
  • Novel content patterns the models haven’t seen. Bounded and shrinking, but non-zero.
  • The conformance determination and remarks. Not a detection problem. At 100% detection accuracy you still need someone to assert conformance and be accountable for the assertion.

Build order

Ranked by review minutes eliminated per engineer-week, not by criterion importance.

Phase 1 β€” two weeks, retires the most items per day of work

The interaction harness plus the deterministic checks. Tab order and keyboard traps share one CDP harness. Bookmarks, Link–OBJR, non-text contrast, language of parts, and sensory references are each under a week and fully deterministic. Ship the template-level battery in the same phase β€” focus visible, reflow, text spacing, orientation, target size, bypass blocks, consistent navigation β€” since those convert to per-release assertions rather than per-document findings.

Phase 2 β€” six to eight weeks, the volume drivers

Reading order first; one engine serves both the HTML stage and PDF tag-order verification, and it’s the largest single line item in document review. Then artifact-vs-content and list structure, which together account for most tagging-layer review time. Then the decorative/informative split on images β€” not full alt adequacy, just the classification, which is the cheaper half and removes most of the volume.

Phase 3 β€” eight to twelve weeks, expensive but high value

Table semantics is the hardest thing on this list and the most valuable; budget conservatively. Announcement synthesis, the form error-handling harness, and OCR verification follow.

Deferred

Name/role/value, status messages, and math. The first two are template-level in your pipeline and low-yield per document; math is expensive and only matters for STEM portfolios. Revisit when a customer forces it.


Cost

Marginal inference and compute for a fully-instrumented page: roughly $0.01–0.02 for text-only pages, $0.05–0.08 for pages with images and tables. Against a manual remediation market of $3–8 per standard page, that’s well under one percent.

The conclusion to draw is that compute is never your constraint, and pricing per page against a marginal cost this low is leaving money on the table. Your real costs are engineering weeks and expert minutes β€” which is the same answer the unit-economics model gave from the other direction.

Instrument as you go. Every item routed to a reviewer is a labeled example. Log per criterion: escalation rate, reviewer override rate, time-to-decide, inter-reviewer agreement. Promote a criterion from Flag to Auto only when confirmation rate clears a threshold across a meaningful sample, and retain the evidence. That produces the substantiation file you’d need if anyone asks you to back a claim about what your automation achieves β€” and after the accessiBe order, that’s a live question rather than a hypothetical.