Contract work for Prolific: turning raw footage from body-worn cameras into synced, checked and documented scenes, ready to train AI models.
No client footage on this page: the scenes are real homes and real people. Every image here is a diagram I drew.
People wore cameras on their head or body, or held them, while doing everyday things at home: cooking, cleaning, playing board and card games. Each scene had 2 to 6 cameras rolling at once, with a clap at the start and at the end to sync them.
My part was everything between the raw upload and an accepted scene: sync, trim, quality checks, the acceptance review, a mosaic of all cameras, and a report per scene. It started with one test scene and continued as an hourly contract, renewed batch after batch through August and September.
Different camera brands, sometimes in the same scene. Frame rates like 50 next to 59.94 or 25 fps, 1080p next to 1440p, H.264 next to HEVC.
Each camera’s clock runs at its own pace. I measured up to 55 ppm between units: about 80 ms over 25 minutes. A take can start in sync and end out of tolerance.
Some sessions had no sync clap at all, or only on one camera. In a kitchen, plenty of sounds are louder than a clap.
Some cameras wrote rotation flags that turned an upright image sideways, and many had their clock unset (dates in 1970).
At least 1080p and 24 fps, zero post-production (no cuts, color, stabilization, audio work or blur), no visible personal data, nobody outside the consent list.
Each camera starts recording at a different moment. The clap is the shared mark: once it lines up on every track, the whole take lines up — at least at the start.
Clocks drift. A fixed offset keeps the error growing until it leaves the tolerance. Checking against the closing clap shows it; conforming the timing — not just shifting the file — keeps the whole take inside.
A coarse offset from the whole audio track first, then refined on sharp sounds that every camera hears: the clap, knocks, doors. Sound reaches each mic at a different time (3.4 m of distance is already 10 ms), so I average many events instead of trusting one. Tolerance: 33 ms. Typical worst-case residual per scene: 0.4 to 20 ms.
If the time between the first and last clap differs between cameras, the clocks drifted. Then shifting is not enough: I conform the timing (timestamps rescaled, same frames, picture untouched) and measure again. In one scene the end-of-take error went from 41 ms to 6.8 ms.
Every camera cut to the exact same start and duration. Streams are copied, not re-compressed; only the few frames before the next keyframe get re-encoded (usually 0 to 5 per file). Audio is copied from the original.
Resolution, frame rate, audio, motion blur and a full decode check — measured on the delivered cut, not on the source. If a number goes in the report, it was measured on that file.
Personal data on screen, people outside the consent list, phone calls, and the activity thresholds (hands on objects, moving around, two-person conversation). When the source itself was wrong — like a bad rotation flag — I delivered it faithful and flagged it instead of “fixing” it.
A synced grid of all cameras, same duration, plus a short report: offsets, measured residuals, flags and spoken language (detected with Whisper). Uploaded to Google Drive and checked against the local copy.
The measurable parts (offsets, drift, resolution, frame rate, blur) ran as scripted checks in Python and ffmpeg. The judgment calls I made by eye, scene by scene.
Each scene shipped as identical-length camera files plus a mosaic of all of them, so anyone reviewing can see at a glance that every view shows the same moment. The layout adapts to the number of cameras and their orientation.

Video editor and motion designer from Santa Fe, Argentina. For more than 8 years I've worked with brands in Latin America and abroad on video, marketing, automation and AI. Since 2026 I also work on video data for AI training.