Ethan McNamara

Engineering · Review tools

Review / Annotate

Point to exactly what you mean.

Prototype 54s film 5 stages · 2 paths Illustrative data

01

In plain English

What it is
A feedback tool for pointing to an exact part of a page and explaining what needs to change.
How it works
Reviewers would select the relevant text or section, leave a comment, and check the next version. If the target becomes unclear, the feedback stays open until someone resolves it.
Why it matters
To make feedback easier to act on and keep approval separate from simply finishing an edit.

02

The product film

Point it out. Send it back. A task, a deliberate gesture and its result, inside a reconstructed Signal Studio. It plays on its own while it is on screen; pause it, scrub it, slow it down, or read it as stills.

Scene rendered by preview-review-blueprint.js · 54s · 4 beats · 3 stills

03

What it is worth

Point. Comment. Send it back.

Point to the exact parts of the page that need attention. Leave your comments where they belong, then send one clear review back to the person making the changes.

  • Show the exact elementSelect the part of the page you mean.
  • Keep comments in contextPut each note beside the thing that needs changing.
  • One clear handoffGive the person making the changes the whole review.

04

How it is built

A reviewer points at an exact part of a page and says what needs to change. The gesture has to make the target unambiguous, because the whole value of the feature is that the comment survives the next version of the document.

ease-out cubic
cubic-bezier(0.33, 1, 0.68, 1)
Selection forms
1000ms
Comment attaches
900ms
Anchor resolves
1100ms

The selection is drawn with <code>clip-path</code> rather than a background colour, so it can reveal along the text the way a highlighter does, and so it composites on the GPU.

The anchor is the point of the film. When the target text moves, the comment does not silently reattach to whatever is nearest — it stays visibly unresolved. Motion is used to show the anchor failing to find its home, which is a state most tools hide.

The exception path is not a separate animation. It is the same timeline with one different input, which is also how the system is meant to work.

05

The working model

The annotation records what a reviewer saw. Matching that context to a new revision and accepting the edit are separate decisions.

The boundary that matters Isolate untrusted HTML and validate annotation messages. Uncertain matches require a person; only a permitted reviewer records approval.

Two paths: Standard flow and Two possible anchor matches · 5 stages each

06

How it fits together

A person acts, the system checks, a result follows — and one other path, for when the check does not pass. This describes proposed responsibilities and decisions, not deployed infrastructure.

Read the diagram source
%% Director-friendly architecture. Maturity and limits are recorded in accDescr.
flowchart TB
  accTitle: How Project Review works
  accDescr: A reviewer points to an element in an isolated page. Signal keeps the feedback with its original location and version. When the page changes, it reconnects only a clear match; uncertain feedback stays available for the reviewer to reconnect. The reviewer must explicitly accept the change before approval is recorded. A private extension exists; this broader workflow is proposed.
  A(["Reviewer<br/>Points to a page element"])
  B("Feedback record<br/>Keeps the original context")
  C{"New version<br/>Location still clear?"}
  D(["Reviewer<br/>Accepts the change"])
  E("Approval record<br/>Separate from editing progress")
  X("Keep feedback<br/>Reviewer reconnects it")
  A -->|Isolated page| B
  B -->|Page updated| C
  C -->|Clear match| D
  D -->|Explicit approval| E
  C -->|Unclear match| X
  classDef human fill:#faf7f2,stroke:#bf8c53,color:#24211c;
  classDef work fill:#ffffff,stroke:#a3a5ad,color:#25262a;
  classDef decision fill:#f3efff,stroke:#967bcb,color:#30244c;
  classDef result fill:#f0f6ff,stroke:#7b9dca,color:#1d365b;
  classDef exception fill:#fff5ec,stroke:#ce9b63,color:#64431e;
  class A,D human;
  class B work;
  class C decision;
  class E result;
  class X exception;

07

The case study

Feedback should retain its meaning even after the thing it describes changes.

The problem

Screenshots and positional descriptions detach feedback from the source. After a layout change, “the number near the top” becomes difficult to interpret, and a completed edit can be mistaken for stakeholder approval.

The insight

An annotation needs more than coordinates. It needs an element identity, revision identity, and a record of the context the reviewer actually saw.

The system

A private founder-facing Chrome extension provides an existing foundation. The proposed reusable stakeholder layer adds stable element IDs, artefact revisions, and context snapshots. Revision matching would reconnect unambiguous anchors, preserve uncertain feedback, and distinguish a reported implementation from a reviewer’s approval.

The rationale

Precise feedback can shorten clarification loops and preserve decision context. Separating implementation from approval also makes the remaining review work easier to understand.

Responsibilities

Isolated artefact
Versioned HTML with stable element identities where available.
Annotation bridge
Validated selection events carry identity and observed context.
Revision resolver
Reconnect certain anchors; retain unresolved and ambiguous feedback.
Review record
Separate implementation progress from stakeholder approval.

The boundary

Reviewed HTML is untrusted content. Render it in an isolated surface and accept only a narrow, validated annotation message contract.

The trade-off

Stable IDs improve continuity but require cooperation from artefact generation. Text and structural hints can assist matching; they should not silently attach feedback to a plausible but different element.

When it fails

The element is removed

Preserve the annotation with its original revision and context. Mark the anchor as unresolved rather than deleting the feedback with the element.

Two elements look identical

Surface an ambiguous match for explicit reassignment. A low-confidence guess must not become a misleading annotation on the new revision.

An edit is marked complete

Move feedback to implemented, awaiting review. Only the permitted reviewer’s action records approval; completing code does not imply acceptance.

Evidence Private extension prototype exists · reusable stakeholder review layer is proposed · demonstration uses synthetic data