EMK Signal — video takes

Start with the "New story" card — that's the active direction and the shared place to publish finalized frames from any session. The WIP card below it is the previous (now superseded) redesign pass, kept for reference. Below both, the four full-length takes recorded so far (14 were recorded chasing fixes; these four span the real differences), latest first and collapsed — click a take's name to expand it.

First full-draft assembly new

All nine beats' Story A+ clips (takes/aplus/), concatenated into one MP4 for the first time — narration muxed in per beat, bridged with the white-flash cut per docs/VISUAL-STYLE.md. First draft, not final — beat 7 is provisional (stale on-screen text/timing, see the page). Watch it here →

New story — visual rework start here

Every Claude session working on this project: publish newly-finalized frames here, not just locally. This replaces the WIP card below as the active direction — a different creative pass (Ascend-matched lockups, hybrid light/gradient stage), not a continuation of it. See the decision log before adding anything.

WIP in progress

Each scene is being redesigned and approved individually, screenshot by screenshot, before any of it is spliced into a real render.

take-4 — current full-length take

take-4.mp4 · frames · srt · contact sheet

Review
# Take 14 — review (Layer B rebuild + leads-list correction)

`videos/take-4.mp4` · 1:02.2 · seams all 0.0s except beat 2 (0.1s, system jitter, not a
desync) · VIDEO_SEEK 2.167 · frames `docs/take-4-frames.html`

This take answers two rounds of feedback on take 04:
1. **"Crop, don't ring"** — every ring/box/rectangle from take 04 is gone. Every beat is now
   crop (2–3×) + dim-mask spotlight + dark-band label, per `docs/VISUAL-STYLE.md`'s rewrite.
2. **The buying-signal moment belongs on the Leads list, not Actions** — beat 4 now opens on
   the lookalike-customers dialog (tight crop, match reason lit, rest of the page dimmed),
   then cuts to the **Leads list**: the lead score cell on the right counts up live
   (78 → 92), the row's badge flips from "Lookalike" to "Buying signal", and the row
   physically rises to the top of the real, re-sorted table — the product's own refetch,
   not an animation standing in for one.

| Beat | CONTENT | PRODUCT | OVERLAY | PACING | Notes |
|---|---|---|---|---|---|
| 1 Leads → 3× hero row → 4 labels → pull back | 10 | 10 | 10 | 10 | Dark bands stack one at a time in the dimmed right margin, never over the row beneath. |
| 2 Name + tagline | 10 | 10 | 10 | 10 | Largest type in the video; product visible through the darker scrim. |
| 3 Sources converge → enriched crop | 10 | 10 | 10 | 9 | Cards fully dissolve before the crop; "Complete the picture" sits in a dimmed band below the tile strip, not on it. |
| 4 Lookalike dialog → **Leads list score rise** | 10 | 10 | 10 | 9 | The label now has ~0.9s of real dwell (was 0.29s — see log) and sits in genuine dimmed margin below the card. Score-count, badge flip and row-rise are all real product state. Densest beat in the video by design (Pushkar's brief: two camera events max). |
| 5 Contact crop + 3 channel bands | 10 | 10 | 10 | 10 | — |
| 6 Email crop, sentence lift × 2 | 10 | 10 | 10 | 10 | Callouts dock in the ragged-right margin beside each lifted line. |
| 7 Draft footer → task row → 3 SCC cards | 10 | 10 | 10 | 9 | All three Command Centre crops now land on the correct subject (see the zoomRegion rewrite below) with the fact stated on the band, e.g. "375 human replies · 31% want to talk". |
| 8 Push-in → end card | 10 | 10 | 10 | 10 | Slow 1.05× push through the whole line; end card renders (logo path bug fixed). |

## Bugs found and fixed this pass (see `docs/OVERNIGHT-LOG.md` for full detail)

1. **`zoomRegion` used `transform-origin` math**, which is element-local — invisible on the
   app's viewport-aligned `#root`, but wrong by a full `scrollY` on the Command Centre's
   document-flow wrapper. All three SCC crops landed on the wrong block. Rewritten as
   translate+scale from a measured, untransformed origin — works for any element at any
   scroll position.
2. **Beat-2/end-card logo 404'd** — the `src` resolved relative to the current *route*
   (`/signal/actions/...`) instead of the app root. Fixed to `location.origin + '/emk-signal-logo.svg'`.
3. **Beat-4 dialog label never appeared** — `rectOf`'s text search scopes to `#root` by
   default; the Radix dialog portals to `document.body`, outside it, so the query silently
   returned null and the whole label branch was skipped. Fixed by scoping the query to
   `[role="dialog"]`.
4. **Once visible, the label had only 0.29s of dwell** before the scheduled cut fired —
   diagnosed by instrumenting real elapsed time inside the beat (not guessed): dialog-open
   overhead alone consumed 1.46s of a 4.32s beat. Trimmed the cursor-move and settle waits,
   moved the cut trigger to 2.0s.
5. **The label also sat on dimmed data** (the stats row), violating "never over a row,
   field or data". Fixed by widening the crop's bottom margin so the label docks in real
   empty space below the card.

## QC: could an LP at the back of a rehearsed room read the subject of every frame?

Yes, on all 46 checkpoints. The one beat that stays dense (4) is dense by Pushkar's own
brief — two camera events, no more — and the score-rise frame (`b4-row-moving-up.png`) is
now the frame that carries the whole argument: a real number, a real badge, a real re-sort,
on the screen where the audience actually looks for it.

**Take 14 is the corrected best take**, replacing take 04.
take-3

take-3.mp4 · frames · contact sheet

Review
take-2

take-2.mp4 · frames · srt · contact sheet

Review
# Take 04 — review

`videos/take-2.mp4` · 1:02.08 · seams all 0.0 s · VIDEO_SEEK 2.159
Frames `docs/take-2-frames.html` · sheet `docs/takes/take-2/sheet.png`
Sync probe `docs/takes/take-2/sync/b2-strip.png`: the beat-2 scrim is absent at mark −0.2 s and present at +0.2 s (scheduled at +0.05 with a 300 ms fade) → picture within 0.2 s of the voice. Send probe `sync/b7-strip.png`: pull-back complete at +2.5 s with the real "Draft ready in Outlook" panel and the "Draft pushed to Outlook" toast in frame, no floating overlays.

| Beat | CONTENT | PRODUCT | OVERLAY | PACING | Notes |
|---|---|---|---|---|---|
| 1 | 10 | 10 | 9 | 10 | The four L pills sit over the Falchetti row (the row beneath). Acceptable by the style rule (not the pointed-at data); a 9 because a purist would want them in the gutter. |
| 2 | 10 | 10 | 10 | 10 | |
| 3 | 10 | 10 | 9 | 9 | "Complete the picture" is tight against the stats strip; 0.7 s of the beat between the cards clearing and the zoom is deliberate breathing room. |
| 4 | 10 | 10 | 10 | 9 | 4.3 s carries the dialog, a cut, the re-sort and two labels; dense, not rushed, but the densest beat. The row rise is the real table re-sorting on real data. |
| 5 | 10 | 10 | 10 | 10 | |
| 6 | 10 | 10 | 10 | 10 | |
| 7 | 10 | 10 | 10 | 9 | Eight things in 11.3 s. The SCC arrives at ~5.6 s, inside "Command Centre" (5.5–6.3) — 0.2 s of margin. |
| 8 | 10 | 10 | 10 | 10 | |

Pixel-level: no frame shows Service Key / ServiceKey / Servion / Carle / Vivira / test / demo / lorem / TBD / placeholder; no Outlook banner; EMK logo on every product frame; no loading state; cursor only in beats 3, 4, 5, 7; no clipped overlay.

## Final pacing pass (against `refs/` and the "product launch" brief)

Compared with the Ascend reel (one idea per ~6 s, full-frame lockups) and the L3 walkthrough (continuous product, one cursor), take 04 sits between them: continuous product, one idea per cue, labels that leave before the next idea. Nothing changed after this pass — the remaining 9s are judgement calls for Pushkar (see `docs/MORNING-REPORT.md` §4), not defects, and each fix would cost a re-record for no certain gain.

**Take 04 is the best take.**
take-1

take-1.mp4 · frames · contact sheet

Review
# Take 01 — review

`videos/take-1.mp4` · 1:02 · from `recordings/emk-signal-2026-09-24-21-33-40.webm`
Frames: `docs/take-1-frames.html` · sheet `docs/takes/take-1/sheet.png`
Seam report: all 0.0 s; no beat over. VIDEO_SEEK 2.203.

Scores 0–10. CONTENT · PRODUCT · OVERLAY · PACING (see `docs/QC-CHECKLIST.md`).

| Beat | C | P | O | Pa | What is wrong |
|---|---|---|---|---|---|
| 1 Leads → zoom → labels → pull back | 7 | 10 | 5 | 8 | Zoom lands on the Viridea row on cue. The four labels are S-size pills under a 2× UI: they read as afterthoughts, and they sit across the Falchetti row text. Need the L size, aligned under the Viridea row. |
| 2 Name + tagline | 10 | 10 | 9 | 10 | Product visible through the scrim, lockup on "EMK Signal", sub-line on "proprietary", gone on "just that". Logo inverted to white reads fine. |
| 3 Sources → profile → Complete the picture | 5 | 10 | 3 | 6 | Cards pop in on their words (CRM 1.9, Outlook 2.4, slide 3.3) but are small and parked on the header. The "enriches" moment fails: the page shrank to half size (zoom scale < 1 from an oversized region) and no ring/label appeared (anchors "TOTAL EMP." / "LEAD SCORE" are CSS-uppercased; the finder is case-sensitive). |
| 4 Similar customers → signal → row rises | 9 | 10 | 7 | 9 | Dialog + "Find similar prospects" on cue. On "buying signals" the real table re-sorts and Marco Bellini lands at the top (priority 131) with "Identify why now" and the source callout. Ring wraps only the contact cell; label covers the row beneath. |
| 5 Contact view: role, details, channels | 9 | 10 | 8 | 9 | Role and email + phone ringed on cue; Email / LinkedIn / Call talking points on their words beside the real tabs. Crop cuts the topbar in half. |
| 6 Italian draft, two sentences | 8 | 10 | 5 | 8 | Both sentences highlight with the rule on cue; both callouts are clipped at the right frame edge, and the draft is not zoomed (same scale<1 bug), so the Italian is small. |
| 7 Edit → send → Tasks → three SCC crops | 4 | 8 | 3 | 5 | Edit works (real Regenerate; phrase highlighted; "Draft updated" toast). Send is clicked but the cut comes before its toast. Tasks zoom is right but the ring wraps the whole list and the annotation floats below it. **All three Command Centre crops land on the wrong sections** (the page finishes rendering after the scroll, so the target moves), the sticky bars float mid-frame under the wrapper transform, and the injected cursor sits at 0,0 on the new document. "Zoominfo" was visible in one crop (raw lead-source value; scrubbed now). |
| 8 Account view → end card | 10 | 10 | 9 | 9 | Account view held; end card logo → line → rule in the last three seconds. |

**Pixel-level:** cursor at 0,0 on the SCC (fixed: install off-screen); callouts clipped (fixed: flip left when they would overflow the safe area); no Service Key / Servion / test strings on any frame; one vendor name (Zoominfo) on the SCC (scrubbed).

## Fixes carried into take 02

1. Text finder: case-insensitive, skips `<script>/<style>` text, can climb to a `TR` or to the first ancestor taller than N px (rows) or wider than N px (cards).
2. `zoomRegion` never scales below 1.
3. Callouts flip to the left of their anchor when they would leave the 48 px safe area.
4. Cursor installs off-screen on every document.
5. Beat 1 labels at the L size, under the Viridea row.
6. Beat 3 cards larger and centred; ring + label anchored on the real stats strip and Lead Intelligence tiles; zoom to the two cards.
7. Beat 4 ring on the whole row; label + source callout in the filter strip above the table so no row is covered.
8. Beat 5 crop from y = 0.
9. Beat 6 zoom 1.5 on the draft card.
10. Beat 7 Tasks ring on the row; push clicked earlier and the cut after its toast; SCC: wait for layout to settle, scroll the block under the sticky bars, scale that block alone from its top-left, ring the owner and waiting cells of the first stalled row by position.

video-script.docx · product screens