Accessibility Conformance Report
WCAG edition, based on the VPAT® Version 2.5 format (Rev. 2.5, WCAG)
To attach it to a purchase, use your browser's Print command and save it as a PDF.
| Name of product/version | inspectorjay, October 2026 release (the deployed build's revision is shown at /healthz) |
|---|---|
| Report date | October 20, 2026 |
| Product description | Web application for county civil-engineering inspectors: an installable inspector app (PWA) for phones, an admin website for supervisors and staff, and emailed read-only inspection reports for contractors and owners. |
| Contact information | 6A LLC, hello@inspectorjay.com. Each agency also sets its own contact, shown on its workspace's public accessibility statement at /accessibility. |
| Notes | Covers every screen of the inspector app, every admin page, the sign-in pages, the public accessibility statement, and emailed report pages (/r/…). Third-party map tiles (OpenStreetMap) are images inside the maps and are covered under 1.1.1. |
| Evaluation methods used | Automated: axe-core 4.14 (WCAG 2.0/2.1 A and AA rules) on every page and app screen, run on every change in continuous integration. Scripted browser tests (Playwright, Chromium): keyboard-only operation of the main tasks, focus management, reflow at 320 CSS px (equivalent to 400% zoom), WCAG 1.4.12 text spacing, reduced motion, page titles. Manual: code review of templates and scripts against each success criterion, and contrast measurement of borders and focus indicators. Not yet done: testing with VoiceOver (iOS) and TalkBack (Android) on real phones, and with JAWS or NVDA on Windows. Results below may change after that testing. |
Applicable standards and guidelines
| Standard/Guideline | Included in report |
|---|---|
| Web Content Accessibility Guidelines 2.0 | Level A (Yes), Level AA (Yes), Level AAA (No) |
| Web Content Accessibility Guidelines 2.1 | Level A (Yes), Level AA (Yes), Level AAA (No) |
| Web Content Accessibility Guidelines 2.2 | No |
Terms
- Supports: the functionality of the product has at least one method that meets the criterion without known defects, or meets it with equivalent facilitation.
- Partially Supports: some functionality of the product does not meet the criterion.
- Does Not Support: the majority of product functionality does not meet the criterion.
- Not Applicable: the criterion is not relevant to the product.
- Not Evaluated: the product has not been evaluated against the criterion (only allowed for WCAG Level AAA).
Table 1: Success Criteria, Level A
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.1.1 Non-text Content (Level A) | Partially Supports | Controls, icons and signatures have text names. Maps have labels and their information is also given as text (the project list, each photo's coordinates and distance from the site, the Today page's table). Exception: inspection photos are described by the inspector's note, which may not describe what the photo shows. |
| 1.2.1 Audio-only and Video-only (Prerecorded) (Level A) | Not Applicable | No audio or video. |
| 1.2.2 Captions (Prerecorded) (Level A) | Not Applicable | No audio or video. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) (Level A) | Not Applicable | No audio or video. |
| 1.3.1 Info and Relationships (Level A) | Supports | Headings, lists, data tables with header cells, labeled fields, fieldsets with legends, and dialogs are marked up as such. Repeating rows in the daily diary have a visible column header, and each field has its own name. |
| 1.3.2 Meaningful Sequence (Level A) | Supports | Reading order follows the visual order. |
| 1.3.3 Sensory Characteristics (Level A) | Partially Supports | Instructions don't depend on shape, color or position, except on the project form, where other projects' sites are described as dashed circles on the map. Their radius is also listed on the Projects page. |
| 1.4.1 Use of Color (Level A) | Partially Supports | Statuses, deficiencies and overdue items use text as well as color. Exception: on the supervisor's Today map, which inspector took a photo is shown by marker color (and on hover). The same people and sites are listed by name in the table below the map. |
| 1.4.2 Audio Control (Level A) | Not Applicable | No audio. |
| 2.1.1 Keyboard (Level A) | Supports | Every task works from a keyboard. A site's center can be typed instead of clicked on the map. A signature can be typed (“Type the name instead”) instead of drawn. The map-only information is also available as text. |
| 2.1.2 No Keyboard Trap (Level A) | Supports | The checklist item sheet is a modal dialog; Escape and its Back button close it. |
| 2.1.4 Character Key Shortcuts (Level A) | Supports | No single-character shortcuts, except the maps' own +/- zoom keys, which only work while a map has focus. |
| 2.2.1 Timing Adjustable (Level A) | Supports | No time limits on any task. Emailed sign-in codes expire after 30 minutes for security; a new one can be requested at any time and nothing typed is lost. Signed-in devices stay signed in for 180 days. |
| 2.2.2 Pause, Stop, Hide (Level A) | Supports | The supervisor's Today page updates every minute; an “Update every minute” checkbox pauses it. Nothing moves, blinks or scrolls automatically. |
| 2.3.1 Three Flashes or Below Threshold (Level A) | Supports | Nothing flashes. |
| 2.4.1 Bypass Blocks (Level A) | Supports | Admin pages start with a “Skip to content” link. App screens have a short header and use headings. |
| 2.4.2 Page Titled (Level A) | Supports | Every admin page has a descriptive title. Each app screen updates the page title (for example “Diary · Elm St culvert · inspectorjay”). |
| 2.4.3 Focus Order (Level A) | Supports | Focus moves to the new screen's heading when an app screen or admin page changes. Focus moves into the item sheet when it opens; the screen behind it is inert. |
| 2.4.4 Link Purpose (In Context) (Level A) | Supports | Link text, or the text around it, says where it goes. |
| 2.5.1 Pointer Gestures (Level A) | Supports | Maps have zoom buttons, so pinching isn't needed. Drawing a signature is path-based by nature, and it can also be typed. |
| 2.5.2 Pointer Cancellation (Level A) | Supports | Actions happen on release (standard buttons and links). |
| 2.5.3 Label in Name (Level A) | Supports | Accessible names start with, or contain, the visible label (for example the “Done” button is named “Done: Routine visit to …”). |
| 2.5.4 Motion Actuation (Level A) | Not Applicable | Nothing is operated by moving the device. |
| 3.1.1 Language of Page (Level A) | Supports | Pages declare lang="en". |
| 3.2.1 On Focus (Level A) | Supports | Focus never starts an action. |
| 3.2.2 On Input (Level A) | Supports | Changing a field never navigates or submits by itself. In the daily diary, opening another day uses an “Open day” button, so a date-picker slip can't discard typing. |
| 3.3.1 Error Identification (Level A) | Supports | Errors are described in text, announced as alerts, and name the field or item. |
| 3.3.2 Labels or Instructions (Level A) | Supports | Fields have visible labels or column headers. Required fields say so (for example “What's wrong? (required)” when an item fails). |
| 4.1.1 Parsing (Level A) | Supports | Pages are generated from templates that escape content, and pass the automated checks. (This criterion is obsolete in WCAG 2.2.) |
| 4.1.2 Name, Role, Value (Level A) | Supports | Native controls throughout. Status buttons expose their pressed state; the item sheet is a labeled modal dialog; scrolling tables are labeled regions. |
Table 2: Success Criteria, Level AA
| Criteria | Conformance Level | Remarks and Explanations |
|---|---|---|
| 1.2.4 Captions (Live) (Level AA) | Not Applicable | No audio or video. |
| 1.2.5 Audio Description (Prerecorded) (Level AA) | Not Applicable | No audio or video. |
| 1.3.4 Orientation (Level AA) | Supports | The app works in portrait and landscape; it doesn't lock orientation. |
| 1.3.5 Identify Input Purpose (Level AA) | Supports | Sign-in fields identify their purpose (autocomplete="email", one-time-code). Other fields collect information about projects and other people, not the user. |
| 1.4.3 Contrast (Minimum) (Level AA) | Supports | Text meets 4.5:1 (3:1 for large text) in both the light and dark color schemes, checked automatically on every page. |
| 1.4.4 Resize Text (Level AA) | Supports | Text is sized in relative units and works at 200% (and at 400%; see 1.4.10). |
| 1.4.5 Images of Text (Level AA) | Supports | No images of text, except a typed signature, which is shown as signature artwork; the signer's printed name is always shown as text beside it. |
| 1.4.10 Reflow (Level AA) | Supports | Every page and screen works at 320 CSS px wide without scrolling sideways (tested automatically). Wide data tables scroll within their own area and maps pan, which the criterion allows. |
| 1.4.11 Non-text Contrast (Level AA) | Supports | Field borders, card and button edges, and focus indicators are at least 3:1 against their background in both color schemes (measured). |
| 1.4.12 Text Spacing (Level AA) | Supports | Tested automatically with the criterion's spacing: no text is clipped. Photo captions in grids are cut to two lines by design, and the full note is on the photo's own screen. |
| 1.4.13 Content on Hover or Focus (Level AA) | Partially Supports | Map tooltips (site names, photo details) appear on hover and can't be hovered over or dismissed with Escape. The same information is shown as text on the page. No other hover content. |
| 2.4.5 Multiple Ways (Level AA) | Supports | Admin pages are reached by the main navigation, from lists and from the activity log. App screens are steps in the inspector's workflow (an exception), reached from the project list and “My day”. |
| 2.4.6 Headings and Labels (Level AA) | Supports | Headings and labels describe their topic or purpose. |
| 2.4.7 Focus Visible (Level AA) | Supports | The browser's focus indicator is kept on every control. Headings that receive focus when a screen opens (not controls) don't show one. |
| 3.1.2 Language of Parts (Level AA) | Supports | All interface text is English. Notes typed by users are shown as typed. |
| 3.2.3 Consistent Navigation (Level AA) | Supports | Admin navigation (a sidebar, or a menu button on narrow screens), and the app's header and main button, are in the same place and order on every page and screen. |
| 3.2.4 Consistent Identification (Level AA) | Supports | The same functions have the same names throughout. |
| 3.3.3 Error Suggestion (Level AA) | Supports | Errors say how to fix them (for example “Say what's wrong in the note, so it can be followed up”). |
| 3.3.4 Error Prevention (Legal, Financial, Data) (Level AA) | Supports | Saving a signature asks for confirmation (signatures can't be changed afterwards). Diary entries, which carry pay quantities, can be corrected, with every change kept. Deleting asks for confirmation, and nothing is permanently deleted. |
| 4.1.3 Status Messages (Level AA) | Supports | Upload status, “Saved” confirmations and admin flash messages are announced as status messages; errors as alerts. |
Table 3: Success Criteria, Level AAA
Not evaluated.
Legal disclaimer
This report describes the accessibility of the product as of the report date, based on the evaluation methods described above. It is provided for information and does not create any warranty.
VPAT® is a registered trademark of the Information Technology Industry Council (ITI).