Accessibility conformance report (VPAT)
This is Kumkuat's Voluntary Product Accessibility Template (VPAT), WCAG 2.1 edition, based on the ITI VPAT 2.5Rev template. It is Kumkuat's own assessment of the web application, not an independent auditor's opinion.
| Product name | Kumkuat |
| Product version | Current (SaaS, app.kumkuat.ai) |
| Product description | AI-powered communications intelligence platform for testing messaging against synthetic audiences, analysing documents and managing personas |
| Report date | June 2026 (revised October 2026) |
| Contact | support@kumkuat.ai |
| Evaluation methods | Code review, component inspection, automated scan (Lighthouse/axe), keyboard-only navigation walkthrough |
| Applicable standard | WCAG 2.1 Level AA |
| Technology | Flask/Jinja2 server-rendered templates, Basecoat UI components, Tailwind CSS v4, vanilla JavaScript, Firebase Authentication |
Summary
| Conformance level | Criteria |
|---|---|
| Supports | 28 |
| Partially Supports | 14 |
| Does Not Support | 0 |
| Not Applicable | 4 |
Strengths
- Keyboard accessibility. All custom interactive components (dropdown menus, select boxes, tabs, popovers, sidebars) support arrow keys, Home/End, Escape and Tab navigation.
- ARIA. Custom components use ARIA roles, states and properties throughout.
- Semantic HTML. Landmark elements, a heading hierarchy and labelled form fields.
- Responsive layout. Text resizes and content reflows without loss.
- Focus management. Focus is managed when modals, popovers and navigation open and close.
Areas for improvement
- Colour contrast. Formally measure contrast ratios across light and dark themes, including primary buttons, muted text and accent colours.
- Automated testing. Add axe-core or similar automated accessibility checks to the release pipeline.
autocompleteattributes. Add input-purpose values to standard form fields.- Skip navigation. Verify or add a skip-to-main-content link.
- Status announcements. Announce every dynamic status change (job progress, document processing) through live regions.
- AI-generated content. Mark the language of AI-generated text that is not in English, and keep its formatting accessible.
Remediation. We will address the areas for improvement and update this report as they are resolved. An independent accessibility audit has not yet been commissioned.
Conformance level definitions
| Term | Meaning |
|---|---|
| Supports | The functionality has at least one method that meets the criterion without known defects, or meets it with equivalent facilitation. |
| Partially Supports | Some functionality does not meet the criterion. |
| Does Not Support | The majority of functionality does not meet the criterion. |
| Not Applicable | The criterion is not relevant to the product. |
Table 1: WCAG 2.1 Level A
Perceivable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 1.1.1 Non-text Content | Partially Supports | Images use meaningful alt attributes (persona names, logo descriptions). Some dynamically generated content (charts, AI-generated visualizations) may lack text alternatives. |
| 1.2.1 Audio-only and Video-only (Prerecorded) | Not Applicable | The application does not include prerecorded audio-only or video-only content. |
| 1.2.2 Captions (Prerecorded) | Not Applicable | The application does not include prerecorded multimedia content. |
| 1.2.3 Audio Description or Media Alternative (Prerecorded) | Not Applicable | The application does not include prerecorded video content. |
| 1.3.1 Info and Relationships | Partially Supports | Semantic elements (main, nav, header, footer, section, article) are used throughout. Form labels are associated with inputs, and ARIA roles are implemented on menus, tabs and listboxes. Some complex data tables may lack full th scope or caption markup. |
| 1.3.2 Meaningful Sequence | Supports | Content follows a logical reading order in the DOM, and server-rendered templates keep source order consistent with the visual layout. |
| 1.3.3 Sensory Characteristics | Partially Supports | Instructions generally do not rely on sensory characteristics alone. Some colour-coded indicators (signal status, alert severity) also use position or icons, but have not been fully reviewed for colour-only reliance. |
| 1.4.1 Use of Color | Partially Supports | Colour indicates alert severity, signal status and audience scores. Icons and labels often accompany it, but a formal review has not confirmed that colour is never the only differentiator. |
| 1.4.2 Audio Control | Not Applicable | The application does not auto-play audio. |
Operable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 2.1.1 Keyboard | Supports | All interactive components (dropdown menus, select boxes, tabs, popovers, sidebars, modals) support arrow keys, Home/End, Escape and Tab. Focus is managed when modals open and close. |
| 2.1.2 No Keyboard Trap | Supports | Components return focus on close. Modals and popovers dismiss with Escape, and background content is made inert while sidebars are open. |
| 2.1.4 Character Key Shortcuts | Supports | No single-character key shortcuts are implemented. |
| 2.2.1 Timing Adjustable | Partially Supports | Sign-in sessions expire on a schedule set by the platform, and users cannot extend a session before it expires. Background processing has no user-facing time limits. |
| 2.2.2 Pause, Stop, Hide | Supports | No auto-updating, moving or blinking content. Toast notifications use aria-live="polite" and stay up long enough to read. |
| 2.3.1 Three Flashes or Below Threshold | Supports | No content flashes more than three times per second. |
| 2.4.1 Bypass Blocks | Partially Supports | Navigation uses nav, main and landmark regions. A skip-to-main-content link has not been verified. |
| 2.4.2 Page Titled | Supports | Every page has a descriptive title. |
| 2.4.3 Focus Order | Supports | Tab order follows the visual layout, and components manage focus with tabindex. |
| 2.4.4 Link Purpose (In Context) | Supports | Links have descriptive text or surrounding context that makes their purpose clear. |
| 2.5.1 Pointer Gestures | Supports | All functionality works with a single click or tap; no multi-point or path-based gestures are needed. |
| 2.5.2 Pointer Cancellation | Supports | Controls use standard click events, which cancel when the pointer moves off the target before release. |
| 2.5.3 Label in Name | Supports | Visible labels match, or are contained in, the accessible names of controls. |
| 2.5.4 Motion Actuation | Not Applicable | No functionality is triggered by device motion. |
Understandable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 3.1.1 Language of Page | Supports | <html lang="en"> is set on all pages. |
| 3.2.1 On Focus | Supports | No component changes context when it receives focus. |
| 3.2.2 On Input | Supports | Form submission requires an explicit action, and no unexpected context changes occur on input. |
| 3.3.1 Error Identification | Partially Supports | Validation errors are shown visually. Their programmatic association with fields (aria-describedby, aria-invalid) has not been fully verified. |
| 3.3.2 Labels or Instructions | Supports | Form fields have associated labels, and required fields and input expectations are indicated. |
Robust
| Criterion | Conformance level | Remarks |
|---|---|---|
| 4.1.1 Parsing | Supports | Server-rendered templates produce well-formed markup. (Deprecated in WCAG 2.2; still part of 2.1.) |
| 4.1.2 Name, Role, Value | Supports | Custom components use appropriate ARIA roles (menu, tab, listbox), states (aria-expanded, aria-selected, aria-checked, aria-hidden) and properties (aria-controls, aria-labelledby, aria-activedescendant). |
Table 2: WCAG 2.1 Level AA
Perceivable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 1.3.4 Orientation | Supports | Usable in portrait and landscape; no content is locked to one orientation. |
| 1.3.5 Identify Input Purpose | Partially Supports | Standard fields (name, email, password) have not been fully reviewed for autocomplete values. |
| 1.4.3 Contrast (Minimum) | Partially Supports | Body text generally meets the 4.5:1 minimum. In dark mode, primary buttons use white text on the brand orange, which measures 2.48:1, below the minimum. Muted text, accent colours and the light-mode button styling have not yet been formally measured. |
| 1.4.4 Resize Text | Supports | The responsive layout adapts to text resized up to 200% without loss of content or functionality. |
| 1.4.5 Images of Text | Supports | Text is rendered as live text; logos are the only exception. |
| 1.4.10 Reflow | Supports | Content reflows at 320 CSS pixels wide (400% zoom at 1280 px), and the sidebar collapses on small viewports. |
| 1.4.11 Non-text Contrast | Partially Supports | Buttons, inputs and form controls have visible borders and focus indicators. Chart and visualization colours have not been audited for 3:1 contrast. |
| 1.4.12 Text Spacing | Supports | No fixed-height containers clip text when spacing is increased. |
| 1.4.13 Content on Hover or Focus | Supports | Popovers and tooltips dismiss with Escape, stay visible while hovered, and persist until focus moves or they are dismissed. |
Operable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 2.4.5 Multiple Ways | Supports | Pages are reachable through the sidebar, direct URLs, workspace switching and search. |
| 2.4.6 Headings and Labels | Supports | Pages use descriptive headings in a logical hierarchy, and form labels describe their purpose. |
| 2.4.7 Focus Visible | Supports | Focus is shown with outline styles, and custom components use :focus-visible indicators. |
Understandable
| Criterion | Conformance level | Remarks |
|---|---|---|
| 3.1.2 Language of Parts | Partially Supports | The interface is English. AI-generated text in other languages is not marked with a lang attribute. |
| 3.2.3 Consistent Navigation | Supports | The sidebar appears in the same place, in the same order, on every signed-in page. |
| 3.2.4 Consistent Identification | Supports | Components with the same function use the same labels and icons throughout. |
| 3.3.3 Error Suggestion | Partially Supports | Common inputs (email format, required fields) suggest corrections. Some complex cases (document upload, API errors) may not suggest a fix. |
| 3.3.4 Error Prevention (Legal, Financial, Data) | Partially Supports | Destructive actions (deleting workspaces, removing personas) ask for confirmation. Bulk operations have not been fully reviewed for confirmation and reversibility. |
Robust
| Criterion | Conformance level | Remarks |
|---|---|---|
| 4.1.3 Status Messages | Partially Supports | Toast notifications use aria-live="polite". Some dynamic updates (job processing status, document ingestion progress) are not yet confirmed to be announced to assistive technology. |
This report was produced through code review, component inspection and functional testing of the Kumkuat web application. Accessibility questions: support@kumkuat.ai.