Real Estate AI Studio.
In-house tooling · August 2026

Clipper

Long-form in.
Ranked vertical clips out.

We replaced our clip-cutting subscription with five scripts that run on a laptop. No watermark, no per-seat plan, and a caption colour we actually control. One stage calls a paid API. Everything else — transcription, silence removal, reframing, rendering — is local and free at the margin.

A vertical 1080 by 1920 video frame with the caption 'It cut 31 percent' burned in, the word 31 highlighted in gold.
A real frame the pipeline rendered — cut from a test pattern, so the framing and the safe zones are easy to check. One caption line, the active word in the brand gold.
≈$0.00
Marginal cost per clip
50s → 42s
Dead air removed, measured
1080×1920
Every render, captions burned
133
Tests on the cut logic

Stage 3 · Tighten

The cut list is the product

Dead air is measured between word boundaries, not by listening for quiet. The transcriber already knows exactly when each word starts and stops, so a cut can never clip the soft consonant off the front of a word the way an energy-based pass does.

source  2.00s8.98s of tape10.98s
clip  0.00s6.88s posted · 3 gaps and one “um” gonedrawn to the same scale
2.10s saved
kept removed — 2.10s over 3 cuts what gets posted
threshold 0.35s
The gap length worth cutting. Measured on real footage, not guessed at.
floor 0.20s
A cut smaller than this is skipped and counted. Below it, editing starts sounding like a dropped frame.
fillers
“um” always goes. “like” only goes when the speaker paused around it — otherwise it is just English.
output
A cut list, not a re-encode. Change your mind about the accent colour and nothing is re-transcribed.

The pipeline

Five stages, one paid call

Each stage is a pure function that reads and writes JSON, so any one of them can be re-run, swapped or inspected without touching the others.

  1. 1

    Transcribe free

    transcript.json words + speakers

    faster-whisper small, int8, on the CPU, with word-level timestamps. pyannote labels who is speaking — skip that and stage 4 loses the thing that makes it look edited.

  2. 2

    Select ~1¢

    candidates.json ranked in / out points

    The whole transcript goes to Claude once — not once per clip — and 5–8 ranked candidates come back with hook, payoff and standalone scores. This is the only stage that costs anything.

  3. 3

    Tighten free

    edl.json a cut list, not a render

    Silences measured between word boundaries, never from an audio energy pass, so a soft consonant is never clipped off the front of a word.

  4. 4

    Reframe free

    track.json a crop rect per frame

    YuNet finds the face; four filters in series decide where the camera goes. On a speaker change it cuts instead of panning.

  5. 5

    Render free

    clip.mp4 + POST-BRIEF.md

    One ffmpeg pass: cut, crop, scale to 1080×1920, burn word-level captions through libass. Then a brief telling you what to check.

Stage 4 · Reframe

Where the camera goes

Finding the face is the easy half. Cropping straight to the detection gives you a jittery handheld look that reads as amateur, so four filters sit between the detector and the crop.

Talking head — tracked

  • 01A deadzone ignores movement under 2% of frame width. Faces micro-move constantly.
  • 02A one-euro filter smooths the crop centre — still when the subject is still, responsive when they move.
  • 03Travel is capped near 40 px per second. A camera operator does not snap.
  • 04When the speaker changes, it cuts. Panning between two people is the single most obvious tell of an auto-reframer — and only knowing who is talking makes the cut possible.

Slides — static

When faces are found in fewer than 30% of sampled frames, the source is not a talking head. Tracking switches off entirely and the frame is pillarboxed against a blur. This is not a nicety: crop a slide and you cut the numbers off the edge.

A vertical frame showing a full 16:9 test pattern contained against a blurred background, with a burned-in caption reading 'The slide shows 42'.
Static fallback on the same test source: the whole 16:9 frame survives, edge to edge.

Stage 2 · the only invoice

What the thinking costs

Picking the moments is a reading-comprehension job, so the whole transcript goes out once per source and ranked candidates come back. Per-token rates below are August 2026 list prices; the dollar columns apply them to this pipeline’s actual prompt shape.

Model In $/MOut $/M 3-min source60-min source 100 × 60-min
Claude Sonnet 5 in use $2.00$10.00$0.0104$0.0410$4.10
Claude Haiku 4.5 $1.00$5.00$0.0052$0.0205$2.05
Grok 4.6 $2.00$6.00$0.0072$0.0378$3.78
Grok 4.3 $1.25$2.50$0.0035$0.0226$2.26
Gemini 3.7 Flash $0.75$3.75$0.0039$0.0154$1.54
Gemini 2.5 Flash-Lite $0.10$0.40$0.0004$0.0020$0.20

Token counts estimated from the real prompt: a 60-minute source is about 16,500 tokens in and 800 out. Gemini’s rate is introductory and doubles on 1 January 2027.

Yes, Gemini Flash and the cheaper Grok tiers cost less per token. Over a hundred hour-long sources the whole spread is about four dollars. The subscription this replaced cost more than that every month, so the model choice is a quality decision now, not a cost one — and the pipeline reports what each run actually spent.

Scope

What we deliberately did not build

The expensive parts of the product we replaced are the parts we do not need.

A web UI

It is a command line tool. The interface is the costly half of the thing we cancelled.

A job queue

At this volume it runs in a session and finishes before a queue would have booted.

A virality score

Nothing on the market is validated. Rank your own variants and measure real retention after posting.

Our own transcriber

Speech recognition is solved. We use the solved thing.

Running it

Two commands

terminal
# let it pick the moments
    clipper run source.mp4 -o out/

    # or cut a window you already know, skipping the paid stage
    clipper run source.mp4 -o out/ --manual 62:118 --title "Token budgeting"

    # every clip lands with a brief telling you what still needs a human eye
    out/01-token-budgeting.mp4
    out/01-token-budgeting.POST-BRIEF.md