Skip to content

Accessibility statement generator, backed by live audit data #63

Description

@georgekaran

Reads better after #62 — a statement that can name the standard it targets is worth more than one that cannot.

Context

An accessibility statement is a standard artefact: most public-sector sites are required to publish one, and plenty of private ones do it voluntarily. The usual tool for producing one is a form that fills a template — you answer six questions, you get a page of prose, you paste it into your site, and it is wrong within a month because nothing behind it changes when the site does.

tabstop is the only kind of product that can fix that specific problem, because it is already re-auditing those pages every night.

The idea

Generate a statement that cites the pages we monitor and links to their live results, so the document stays true on its own:

This statement covers the following pages, which are automatically re-audited daily:
example.com/, example.com/pricing, example.com/contact

Last audited: 2 August 2026. Current results

The static parts stay static — contact route for accessibility problems, known limitations, feedback commitment. The evidential parts stop being a snapshot.

That is a genuinely better artefact than the template version, and it only works if you have monitored pages, which makes it a signup reason rather than a lead magnet.

Scope

In

  • Generate a statement from the account's monitored pages, in Markdown, HTML and plain text.
  • Editable prose sections: organisation, contact route, known limitations, feedback commitment, review date.
  • A public, stable URL showing current audit status for the cited pages, linkable from the statement.
  • Regenerate when the monitored set changes.

Out

  • Legal review of any kind. See below.
  • Conformance claims. See below.
  • Statements covering pages we do not monitor. The whole value is that the citation is real.

The two things that make this dangerous if done carelessly

1. A statement is a commitment, not marketing copy. In several jurisdictions it is a regulated document, and overstating in one is a liability for the customer, created by us. So the generator must never assert a conformance level on the user's behalf. "Fully conformant with WCAG 2.1 AA" is a claim only the organisation can make, after testing we do not do — the honest default is "partially conformant" with the known limitations filled in from real findings, and the user free to edit.

2. We are not lawyers, and the output must say so. Not as a buried footnote — as a line the person generating it reads.

The awkward consequence worth accepting up front: the most useful version of this feature is also the most conservative one. A generator that produces a bolder statement than the evidence supports is a worse product, however much better it demos.

Implementation notes

  • Everything needed is already stored: monitored URLs, last audit time, current and previous scores, findings. This is a presentation feature over existing data.
  • The public status URL overlaps with the share page at /r/:uuid (Public share page at /r/:uuid #23) but is not the same thing — a share link is one audit of one page, this is a standing statement about a set. Worth deciding whether it reuses that route or earns its own.
  • Known limitations can be seeded from real findings rather than typed from scratch. That is the part no template tool can do, and probably the feature's best moment: "we know about these, here is the plan" is a stronger statement than boilerplate.
  • Regeneration has to be explicit. A statement that silently rewrote itself would be a document whose text nobody had approved.

Acceptance criteria

  • Generates a statement in Markdown, HTML and plain text from the account's monitored pages.
  • Cites the monitored URLs and links a live status view.
  • Defaults to a partial-conformance framing and never asserts full conformance automatically.
  • Known limitations can be seeded from current findings and edited.
  • Carries a plain, visible statement that this is not legal advice.
  • Regeneration is an explicit action, and the previous text is not overwritten without the user seeing the change.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:serverBackend API and domain code under server/area:webFrontend under web/enhancementNew feature or requestv2Deferred past launch; not required for v1

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions