Draft — not yet in force. This document is being prepared and has not been finalized. It does not currently form an agreement, and the details it refers to are incomplete.
In short: A criterion-by-criterion report against WCAG 2.2 Level AA and the Revised Section 508 standards, in the VPAT format US public procurement asks for. It is a self-assessment, it says "Partially Supports" where that is the truth, and the accompanying plain-language statement lists the same problems in the same words. Organizations are welcome to attach it to their own proposals.
| Product | Viewshed — A web application for running public consultations: building and publishing surveys, collecting responses in a browser or on a shared tablet, publishing project pages and results, and producing reports. |
| Report version | 1.0 |
| Report date | August 2026 |
| Contact | [hello@example.com] |
| Evaluation methods | Self-evaluation. Manual keyboard-only operation of every public page including one required question of each type; screen reader spot checks on the survey runner and a project showcase; contrast computed from source colour values rather than estimated by eye, in both light and dark appearance; testing at 200% zoom and at a 320 pixel viewport width; and automated checks (axe-core, plus a keyboard traversal harness and source-level rules) that run against the public components on every change. |
The following surfaces were reviewed page by page:
The signed-in authoring application, where an organization's own staff build surveys and design pages, has not had the same page-by-page review. It is covered by the automated checks that run on every change and has no known failures, which is not the same as having been assessed.
| Term | Meaning |
|---|---|
| Supports | The functionality meets the criterion without known defects. |
| Partially Supports | Some functionality does not meet the criterion. The remark says which, and what is available instead. |
| Does Not Support | The majority of the functionality does not meet the criterion. |
| Not Applicable | The criterion is not relevant to this product. |
Criteria introduced after WCAG 2.0 are marked with the version that introduced them, so a buyer working to 2.0 or 2.1 can read only the rows that apply to them.
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.1.1 Non-text Content | A | Partially Supports | Interface images, icons and charts carry text alternatives, and every chart also carries a written description of its figures. Images uploaded by an organization depend on that organization writing a description: the editor provides the field beside every upload, prompts for it, and offers an explicit 'decorative' choice, but cannot write the words. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | A | Partially Supports | The platform can embed audio or video supplied by an organization. It provides no captioning or transcript tooling, so an alternative for that media is the organization's responsibility. |
| 1.2.2 Captions (Prerecorded) | A | Partially Supports | Video embedded in a survey or project page is hosted elsewhere and supplied by the organization, so its captions travel with it and are outside our control. The platform renders the embed accessibly — it is reachable, labelled and keyboard-operable — but adds no captioning tooling, so an organization embedding uncaptioned video will publish uncaptioned video. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | A | Partially Supports | As with captions, an audio description or text alternative for embedded media is the responsibility of whoever produced that media. The platform provides a text block that can carry a transcript beside any embed, but does not require one. |
| 1.3.1 Info and Relationships | A | Supports | Headings, lists, tables and form labels are marked up semantically. The matrix question uses row and column header cells with scope, and native radio groups per row. Embedded content nests its headings under the containing document rather than restarting the outline. |
| 1.3.2 Meaningful Sequence | A | Supports | Reading order follows DOM order throughout; no CSS reordering carries meaning. |
| 1.3.3 Sensory Characteristics | A | Supports | No instruction depends on shape, size or position alone. |
| 1.4.1 Use of Color | A | Supports | Charts label each series on the mark itself as well as in the legend. Required questions say 'required' in words rather than relying on a red asterisk. Selected states carry text or ARIA state, not colour alone. |
| 1.4.2 Audio Control | A | Not Applicable | Nothing plays audio automatically. |
| 2.1.1 Keyboard | A | Supports | Every question type can be answered without a pointer, verified by an automated traversal that completes a survey containing one required question of every kind using focus and activation only. Drawing and signature questions accept a typed alternative; the image-marking question accepts arrow keys; the before/after comparison has a keyboard slider; maps pan and zoom from the keyboard. |
| 2.1.2 No Keyboard Trap | A | Supports | Dialogs close with Escape and return focus to what opened them. The traversal harness fails if focus is lost or cannot leave a component. |
| 2.1.4 Character Key Shortcuts (2.1) | A | Supports | No single-character shortcuts; the command palette uses a modifier combination. |
| 2.2.1 Timing Adjustable | A | Supports | The only time limit is a shared tablet clearing itself for the next person. It shows a visible countdown, can be extended without limit by anyone present, and can be triggered immediately. |
| 2.2.2 Pause, Stop, Hide | A | Supports | The live results screen can be paused. All decorative animation stops when the operating system requests reduced motion, including anything that would otherwise loop. |
| 2.3.1 Three Flashes or Below Threshold | A | Supports | Nothing in the interface flashes, blinks or strobes. The only animation is brief motion on chart marks and page transitions, all of which stops when reduced motion is requested. |
| 2.4.1 Bypass Blocks | A | Supports | Every public page carries a skip link as its first stop and a main landmark for it to target. |
| 2.4.2 Page Titled | A | Supports | Every page sets a distinct title, including shared results pages, which previously all inherited the product name. |
| 2.4.3 Focus Order | A | Supports | Focus follows dialogs in and returns on close. Trying to continue with a blank required question moves focus to a summary naming each one. |
| 2.4.4 Link Purpose (In Context) | A | Supports | Link text describes its destination, including image links, which carry the description of what enlarging them gets you. |
| 2.5.1 Pointer Gestures (2.1) | A | Supports | No path-based or multipoint gesture is required; map panning and the comparison slider both have keyboard equivalents. |
| 2.5.2 Pointer Cancellation (2.1) | A | Supports | Activation happens on release throughout. |
| 2.5.3 Label in Name (2.1) | A | Supports | Where a control has visible text, its accessible name contains that text. |
| 2.5.4 Motion Actuation (2.1) | A | Not Applicable | Nothing responds to device motion. |
| 3.1.1 Language of Page | A | Supports | The document language is declared. |
| 3.2.1 On Focus | A | Supports | Focus alone never changes context. |
| 3.2.2 On Input | A | Supports | Changing a value never submits or navigates without an explicit action. |
| 3.3.1 Error Identification | A | Supports | Validation errors are announced, identified in text, tied to the control they concern, and listed in a summary that names each unanswered question as a link to it. |
| 3.3.2 Labels or Instructions | A | Supports | Every input has a persistent visible label; placeholders are examples rather than labels. |
| 4.1.1 Parsing | A | Not Applicable | Removed from WCAG 2.2 and no longer applicable. Markup is generated and validated by the framework. |
| 4.1.2 Name, Role, Value | A | Supports | Custom controls expose role, name and state. Tabs name the panel they control, accordions report expanded state, and grouped controls carry a group name — with required status conveyed through the group's name where ARIA does not permit the attribute. |
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 1.2.4 Captions (Live) | AA | Not Applicable | No live audio or video is produced by the platform. |
| 1.2.5 Audio Description (Prerecorded) | AA | Partially Supports | An audio description for embedded video is the responsibility of whoever produced that video, since the media is hosted elsewhere and supplied by the organization. The platform can carry a written description alongside an embed but neither generates nor requires one. |
| 1.3.4 Orientation (2.1) | AA | Supports | Nothing is locked to an orientation. |
| 1.3.5 Identify Input Purpose (2.1) | AA | Supports | Name and email fields declare their autocomplete purpose so a browser or password manager can fill them. |
| 1.4.3 Contrast (Minimum) | AA | Partially Supports | Every colour in the interface we control is computed rather than chosen, and meets the minimum in both light and dark appearance; text placed on a themed background derives its colour from that background rather than assuming white. An organization may still choose brand colours with poor contrast: the editor shows the measured ratio and warns, and deliberately does not override the choice. |
| 1.4.4 Resize Text | AA | Supports | Tested at 200% with no loss of content or function. |
| 1.4.5 Images of Text | AA | Supports | Text is text. Charts are SVG with real text elements, not pictures of numbers. |
| 1.4.10 Reflow (2.1) | AA | Supports | Tested at a 320 pixel viewport width without two-dimensional scrolling. Wide content such as tables and charts scrolls within its own container rather than the page. |
| 1.4.11 Non-text Contrast (2.1) | AA | Partially Supports | Control boundaries, focus indicators and interface graphics meet 3:1. Chart series colours in the lighter shipped themes do not — several sit between 1.2:1 and 2.9:1 against the chart panel. The figures remain available: every value is printed beside its mark, every series is labelled on the mark, and each chart carries a text description. Two shipped themes, 'High contrast' and 'Charcoal', clear the threshold on every colour including the chart palette. |
| 1.4.12 Text Spacing (2.1) | AA | Supports | No loss of content when spacing is overridden; layout uses relative units. |
| 1.4.13 Content on Hover or Focus (2.1) | AA | Supports | Tooltips are dismissible, hoverable and persistent. |
| 2.4.5 Multiple Ways | AA | Supports | Public content is reachable from the organization's portal, from a direct link, and from a QR code; results pages are linked from the project they belong to. |
| 2.4.6 Headings and Labels | AA | Supports | Headings describe their section and follow a single outline per page. |
| 2.4.7 Focus Visible | AA | Supports | A single focus indicator is defined once in the base layer and applies everywhere. Its colour is computed to meet the contrast minimum against the surface behind it in both appearances. A source-level check fails the build if any component removes the indicator without providing a replacement. |
| 2.4.11 Focus Not Obscured (Minimum) (2.2) | AA | Supports | Assessed by inspection rather than exhaustively. The interface uses few sticky elements, and the ones present sit clear of the focus path in the layouts tested. |
| 2.5.7 Dragging Movements (2.2) | AA | Supports | On public pages nothing requires dragging: ranking uses buttons, the comparison slider accepts arrow keys, map panning accepts arrow keys, and markers are placed with a button and positioned with arrow keys. |
| 2.5.8 Target Size (Minimum) (2.2) | AA | Partially Supports | Controls are 24 by 24 CSS pixels or larger, with one exception: the matrix question's selection control is 22 pixels and relies on the spacing exception, which has been reasoned about but not verified at every viewport width. |
| 3.1.2 Language of Parts | AA | Supports | A survey translated into another language marks the translated content with that language, so a screen reader pronounces it correctly. Interface chrome remains in the page language and is marked as such by omission. |
| 3.2.3 Consistent Navigation | AA | Supports | Navigation keeps its order and position across pages. |
| 3.2.4 Consistent Identification | AA | Supports | The same function carries the same name throughout. |
| 3.2.6 Consistent Help (2.2) | AA | Supports | Help and support sit in the same place on every signed-in page. Public pages carry a route to the organization responsible and to this report. |
| 3.3.3 Error Suggestion | AA | Supports | Messages say what to do, not merely that something is wrong. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | AA | Supports | Destructive actions confirm first, deletion is archival and reversible, and billing changes show what will be charged before they are made. |
| 3.3.7 Redundant Entry (2.2) | AA | Supports | A part-finished survey is restored on return, and previously entered information is not asked for twice within a process. |
| 3.3.8 Accessible Authentication (Minimum) (2.2) | AA | Supports | Sign-in is email and password with no puzzle or cognitive test, and password managers can fill and submit it. |
| 4.1.3 Status Messages (2.1) | AA | Supports | Saving, validation results, live response counts and streamed assistant replies are announced without moving focus. Streamed replies are announced once complete rather than per token, which would otherwise restart the utterance continuously. |
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 302.1 Without Vision | A | Partially Supports | The whole workflow is operable with a screen reader. Charts, maps and images carry text equivalents; images uploaded by an organization depend on that organization describing them. |
| 302.2 With Limited Vision | A | Partially Supports | Meets the contrast minimums in the interface we control and reflows at 320 pixels and 200% zoom. Chart series colours in the lighter themes are faint — see 1.4.11. |
| 302.3 Without Perception of Color | A | Supports | Colour is never the only carrier of meaning; chart series are labelled on the mark. |
| 302.4 Without Hearing | A | Supports | The platform conveys nothing by sound. |
| 302.5 With Limited Hearing | A | Supports | No information is conveyed by sound and nothing depends on hearing it, so no amplification, volume control or visual alternative is required of the platform. |
| 302.6 Without Speech | A | Supports | Nothing requires speech. |
| 302.7 With Limited Manipulation | A | Supports | Everything is operable from the keyboard, nothing requires dragging or a timed response, and the only time limit can be extended indefinitely. |
| 302.8 With Limited Reach and Strength | A | Supports | Targets are 24 pixels or larger apart from one noted exception, nothing requires sustained pressure, simultaneous keys or a dragging movement, and every control is reachable with a keyboard or switch. |
| 302.9 With Limited Language, Cognitive, and Learning Abilities | A | Partially Supports | Plain language throughout, consistent navigation, progress shown, answers restored on return, and errors that say what to do. The wording of an organization's own questions is theirs, and is the largest factor in how understandable a survey actually is. |
| Criterion | Level | Conformance | Remarks and explanations |
|---|---|---|---|
| 402 Closed Functionality | A | Not Applicable | Not closed functionality — the platform runs in the user's own browser with their own assistive technology. |
| 403 Biometrics | A | Not Applicable | No biometric identification. |
| 410 Hardware | A | Not Applicable | Software only; no hardware is supplied. |
| 501–503 Software — interoperability with assistive technology | A | Supports | A web application using platform accessibility services through standard HTML and ARIA. It does not disrupt platform features, and user preferences for colour, contrast, font size and reduced motion are respected. |
| 504.2 Authoring Tool — content creation | A | Supports | Content produced by the platform conforms to the level reported here. An organization publishing a survey or project page gets accessible output by default. |
| 504.3 Authoring Tool — prompts | A | Supports | The editor prompts for the accessibility information only the author can supply: a description field beside every image upload with an explicit decorative option, and a measured contrast ratio with a warning beside every colour choice. It warns rather than blocks, and offers a one-click switch to a palette that meets the standard. |
| 504.4 Authoring Tool — templates | A | Supports | Shipped themes are tested; two of them meet the standard on every colour including the chart palette, and every preset that does is marked as such where it is chosen. |
| 601–603 Support Documentation and Services | A | Supports | This report and a plain-language accessibility statement are published, and both name known problems rather than only strengths. Support is offered by email with no requirement to use any particular channel; a person who cannot use a page can report it and be heard another way. |
Organizations running consultations on behalf of a public body are welcome to attach this report to a proposal or a procurement response. It describes the Viewshed platform; it does not describe the content an organization publishes through it, which is theirs — the split is set out in the accessibility statement.
A downloadable copy is available at /legal/accessibility/vpat/download. If you need it in another format, or need something clarified for a specific solicitation, write to [hello@example.com].
If something in this product stops you taking part in a consultation, please tell us — reporting a barrier does not require knowing which criterion it falls under.