Take Two: approval belongs to a version

Building a video review demo where comments retain their original evidence, fixes need verification and approval identifies the exact cut.

I built Take Two around one rule: approval belongs to a specific cut.

A revised video can change more than its filename. A longer opening moves everything that follows. A comment at ten seconds in the first cut may refer to a different shot in the second. The review needs to preserve what that comment originally meant.

In Take Two, submitted versions keep their own media and history. Feedback remains attached to its original version, timestamp and annotation. Required changes carry forward into the next review with that evidence intact, while the editor can point to a proposed fix in the revised cut.

Addressing a change and verifying it are separate actions. The editor records the fix; the reviewer checks it. Open and addressed requirements continue to block approval. When the reviewer approves, the decision records the exact submitted version. Reopening the review adds another event and preserves the earlier approval.

That distinction also shapes the comparison screen. Two cuts can play side by side with linked elapsed time, but the app does not assume their scenes match. Original evidence and proposed fixes keep their own positions.

The less visible work was making the flow survive interruptions. Unsent comments, replies and edits retain their drafts. Conflicting changes across tabs produce a recovery choice. Failed local writes keep pending work visible, and repeated recovery-copy attempts reuse the same operation identity.

The interface stays focused on the film: a large player, nearby feedback, warm neutral surfaces and coral accents. Two original motion-graphic cuts make the review and revision flow available immediately.

Take Two is built with React, TypeScript, Vite and IndexedDB. The public demo runs locally in the browser, with fictional projects and a role switch for exploring both sides of the workflow.