Release readiness

Compare approved design with staging

Unlint turns the differences between an approved design and the staging build of the same screen into findings a team can own, fix, and verify — and says whether the release is ready.

One screen, three pictures

Every image below came out of a real check against the checkout fixture in this repository. The third is the comparison itself: its dense regions become findings.

Approved design
The approved checkout design.
Staging
The staging build of the same checkout screen.
Difference
The pixel differences between the approved design and staging.

How a check works

  1. Step 1

    Add a screen

    An approved design — a Figma frame or a PNG you exported — the staging page that should match it, and the viewport to compare them at.

  2. Step 2

    Run a check

    Unlint opens staging in headless Chrome at that viewport, compares it with the approved design pixel by pixel, and runs axe-core WCAG A and AA rules on the same page.

  3. Step 3

    Resolve and verify

    Each difference becomes a finding carrying both crops. Give it an owner, fix it, and run the check again: what is gone is verified, what comes back reopens with its history.

What a check produces

The numbers below are the ones the demo run actually scored, not an illustration.

Readiness 71% Design parity and finding health.
Release decision Not ready Not ready, Ready with exceptions, or Ready.
Findings 5 Each with the crops that prove it.
Design parity 97% How much of the screen matches.

Ownership, not a backlog

A finding nobody owns cannot be verified. Assigning it moves it to Needs fix; the owner moves it to Ready to verify; the next check verifies it — or reopens it and hands it back.

A report you can print

Readiness, the decision, and every open finding with its evidence and owner — as one page that prints or saves as a PDF.

Where AI is, and where it is not

Capture, pixel comparison, the accessibility rules, readiness, design parity and the release decision are deterministic: the same inputs give the same result, with no model involved. A model is optional, and only ever writes the wording of a visual finding from the two crops of a changed region. With none configured — the default — rules write that wording instead, and the check is otherwise identical.

Every finding in the demo was written by rules.

Unlint is a self-hosted studio workspace. The private workspace runs on its operator's machine, so it is reachable only while that machine is online — this page is not.

Capture, comparison, accessibility rules, readiness and the release decision are deterministic.