Quality & validation

Validated Egocentric Video Data

Anyone can hand you hours of egocentric footage. Validated egocentric video data means every one of those hours has already passed an acceptance test written into your spec — sync checked, calibration solved, coverage confirmed, consent documented — before it is counted toward your delivery or your invoice.
Billing
Per validated hour
Review
Second reviewer, sampled or full
Rejects
Logged with reasons, recaptured at our cost
First batch
a median of 48 hours (deep coverage)
A reviewer at a two-monitor QA workstation checks an egocentric video timeline against the acceptance test written into the spec.
Validated egocentric video has already cleared the acceptance test in your spec before it ships.

Why validation matters

A raw hour and a validated hour are not the same product.

01

The acceptance rule is written down first

The skill spec names the exact task, the geometry that must stay in frame, the reject rule and one acceptance test a reviewer can apply, so footage is accepted or rejected against a standard agreed before capture, not a reviewer’s judgment call after the fact.

02

Only passing footage is billed

A take that fails QA is not billed. It is rejected, logged with a reason, and recaptured at Firsthand’s cost — so a coverage or hour number quoted to you is already the usable number, not a gross figure you still have to filter.

03

The reject log is visible, not asserted

The reject log, with reasons rather than just pass counts, is visible to you. That is what lets you audit the bar actually being held on your order instead of trusting a summary statistic.

04

Validation covers more than the labels

Beyond checking individual annotations, validation confirms stream timing, calibration, coverage against the spec’s condition matrix, and consent — all documented per episode in the data card that ships with the delivery.

Definition

What is validated egocentric video data?

Validated egocentric video data is first-person footage — head- and wrist-mounted video, with its depth, IMU, and annotation streams — that has already passed a defined acceptance test before it counts toward a delivery. That test checks whether the footage is in sync, whether calibration held, whether it covers a condition the spec actually needs, and whether consent was documented for every participant in frame.

That is a different thing from simply having a lot of egocentric footage. A validated hour is 60 minutes of footage that has passed QA against your spec; a raw hour is unfiltered recording time before that check runs. Teams routinely discard most bulk egocentric footage as unfit once it is checked against a real spec, which is why budgeting and billing in validated hours keeps a coverage or volume number honest.

Raw vs validated

What is the difference between validated hours and raw capture hours?

A raw hour says nothing about whether the footage is in sync, whether calibration held, whether it covers a condition your spec needs, or whether consent was documented — only that a camera was rolling. A validated hour has already cleared all of those checks: sync within the measured ceiling, calibration solved and within drift tolerance, coverage cell confirmed against the spec, and consent documented.

On this site, billing is per validated hour, not per raw hour. A take that fails QA is not billed; it is rejected and recaptured at Firsthand’s cost. That means a quoted coverage or hour number is already the number you can train on, rather than a gross figure you still have to filter down after delivery.

Acceptance gates

Which acceptance gates does footage pass before it counts as validated?

Four gates run before footage counts as a validated hour. First, task acceptance: the footage is checked against the acceptance test written into the skill spec, not a reviewer’s general impression. Second, stream sync: every stream — head video, wrist video, depth, and IMU — is hardware-triggered onto one PTP clock domain, and any episode breaching the measured sync-error ceiling is rejected. Third, calibration: every episode ships its intrinsics, SE3 extrinsics, and RMS reprojection error, held below 0.28 pixels, so geometric soundness is recorded per episode rather than asserted once for the whole dataset. Fourth, coverage and consent: the footage is checked against the spec’s condition matrix, and consent is validated by confirming each episode links to a signed contributor release.

All four gates are documented per episode, not summarized once across a whole batch, so a buyer can check any single episode against the same rule the reviewer applied.

Rejects

What gets rejected, and why?

Footage is rejected when it misses the acceptance test written into the skill spec, when a stream breaches the sync-error ceiling, when calibration does not hold within drift tolerance, when a coverage cell is not actually filled by what was captured, or when consent or de-identification cannot be confirmed. Rejected footage is logged with a reason and, where the spec calls for it, recaptured at Firsthand’s cost — it is not billed.

If the same failure keeps recurring, the more useful fix is often revisiting the spec rather than repeatedly recapturing — for example, if the geometry that must stay in frame turns out to be impossible to hold in a particular environment. That decision is made with you, and the data card records it.

Labels and streams

How are labels and streams checked — action segments, hand pose, visibility flags, sync, calibration?

A second reviewer covers a sampled or full pass depending on the annotation’s density and stakes. Action segments ship as {start_ns, end_ns, verb, noun} with nanosecond timestamps aligned to every other stream, so a reviewer can check that boundaries land on the actual contact moment rather than drifting into transit. Hand pose ships as handJoints[2][21][3] with a visibility flag per joint, which lets a reviewer confirm that occluded joints are marked rather than invented — one of the most common silent failures in pose labeling.

Stream timing is checked because every stream carries its own PTP-domain timestamp, so sync between head video, wrist video, depth, and IMU can be verified rather than assumed. Calibration is checked per episode against the intrinsics, SE3 extrinsics, and RMS reprojection error it ships with.

Consent and anonymization

How do consent and anonymization checks fit into validation?

Every episode links to a signed contributor release, and that link is checked as part of validation — consent is confirmed, not asserted after the fact. Faces, license plates, and screens are detected, tracked, and irreversibly blurred at ingest, with a human reviewer confirming the result before anything ships.

The de-identification pass fails closed: if a reviewer is unsure a region is fully covered, the episode is held or discarded rather than shipped. That is part of what makes validated footage usable for a commercial model rather than footage with unresolved privacy exposure.

Data card

What does the data card document for a validated delivery?

Every delivery carries a data card recording which coverage cells were captured and what was rejected, so coverage against the spec’s condition matrix is documented rather than summarized as a single hour count. Each episode’s meta.json also carries its own reject_flags, keeping the record at the episode level, not just the batch level.

Because the data card ties validation back to the spec’s condition matrix, a buyer can see exactly which conditions are covered, which were thin, and which cells were rejected and why — the same record Firsthand uses internally to decide whether to recapture or revisit the spec.

Spec Pilot

How does a Spec Pilot set acceptance criteria before scaling?

A Spec Pilot runs a small first batch against the agreed spec and is reviewed against every acceptance axis — task, sync, calibration, coverage, and consent — before volume scales, with the same reject log and validated-hour billing a full collection gets. That means a coverage gap or an acceptance test that does not hold up on real footage is caught in the pilot, not discovered after a much larger collection has already shipped.

Running the pilot against the exact acceptance rule the full order will be billed against is what makes the pilot a real test of the spec, rather than a smaller sample that could pass or fail on different terms than the main collection.

Getting started

How do you order a validated egocentric dataset?

Start with a written skill spec describing the tasks, environments, objects, and streams your model needs, including the acceptance test a reviewer will apply. Most orders begin with a Spec Pilot — a small, fast first batch that proves the spec and acceptance criteria hold up on real footage before scaling to the full order.

Where coverage for the requested tasks and regions is already deep, the median time from signed spec to first validated batch is a median of 48 hours. Where it is thin, turnaround runs three to four weeks while recruiting expands in parallel across more regions. Either way, what you receive and what you are billed for is validated hours, with the reject log visible alongside it.

At a glance

What you get.

Acceptance test
Written in the skill spec, agreed before capture
Label review
Second reviewer, sampled or full pass
Sync check
Every stream on one PTP clock domain, 2.0 ms ceiling
Calibration
Intrinsics, SE3 extrinsics, RMS reprojection below 0.28 px
Consent
Signed release per contributor, linked per episode
Billing
Per validated hour; rejects recaptured at our cost

Every collection runs through the same seven-stage end-to-end custom collection pipeline. End-to-end custom data collection is a managed service that takes an AI data need from problem to owned dataset in a single accountable pipeline.

Acceptance gates

What gets checked before footage counts as validated

Validation gates applied to every episode before it counts as a validated hour, and where each is documented.
GateWhat is checkedSite-stated ruleWhere it is documented
Task acceptanceFootage vs. the written acceptance testDefined in the skill spec, agreed before capture/guides/how-to-write-a-skill-spec
Stream syncTiming offset between head video, wrist video, depth, IMUHardware-triggered PTP domain; breaching episodes rejected/glossary/cross-stream-sync-error
CalibrationIntrinsics, SE3 extrinsics, reprojection errorRMS reprojection held below 0.28 px/guides/camera-calibration-procedure
Label accuracyAction segments, hand pose, visibility flagsSecond reviewer, sampled or full pass by density and stakes/custom-collection/data-labeling-quality-verification
CoverageCaptured conditions vs. the spec’s condition matrixRecorded in the data card; rejects logged with reasons/glossary/data-card
Consent and de-identificationSigned release per episode; faces, plates, screens blurredFails closed — held or discarded if coverage is unsure/provenance

Comparison

Raw capture hours vs. validated egocentric video data

What a buyer receives and pays for under each model.
QuestionRaw capture hoursValidated egocentric video data
What is billed?Everything recordedOnly footage that passes QA
Who absorbs failed takes?The buyer, by filtering laterFirsthand, by recapturing at our cost
Is the acceptance rule written down?Often notYes, in the skill spec
Can the buyer see rejects?RarelyReject log with reasons
Is stream sync checked per episode?Not necessarilyYes, against the PTP-domain sync-error ceiling
Is calibration recorded per episode?Not necessarilyYes, intrinsics, extrinsics, reprojection error
Are consent records delivered?VariesDelivered with the data, linked per episode

Deliverable

What ships with a validated delivery

Deliverable items in a validated egocentric video delivery, and the format field that carries each.
DeliverableWhat it recordsFormat field
StreamsHead/wrist video, depth, IMU, each on one PTP clock domainepisode streams/ (RLDS · LeRobot · WebDataset · HDF5/Zarr)
Action segmentsVerb-noun interval with nanosecond timestampsaction_segments: {start_ns, end_ns, verb, noun}
Hand pose3D joint positions with per-joint visibility flaghandJoints[2][21][3]
CalibrationIntrinsics, SE3 extrinsics, RMS reprojection errorepisode calibration/
Coverage and rejectsCaptured and rejected condition cellsdata card + per-episode reject_flags
ConsentSigned release linked to the episodeprovenance record linked per episode

FAQ

Validated egocentric video data, answered.

What is validated egocentric video data?
Footage that has passed a written acceptance test — sync within the measured ceiling, calibration solved, coverage cells filled against the spec, and consent documented — before it counts toward a delivery.
What is the difference between validated hours and raw capture hours?
A raw hour is unfiltered recording time before any checks run. A validated hour has already passed sync, calibration, coverage, and consent checks, and is the only unit Firsthand bills on.
Do you charge for footage that fails QA?
No. Billing is per validated hour. Failed takes are rejected, logged with a reason, and recaptured at Firsthand’s cost.
Can I see what was rejected from my order?
Yes. The reject log, with reasons rather than just pass counts, is visible to you, and every delivery carries a data card recording captured and rejected coverage cells.
How is stream sync verified?
Every stream is hardware-triggered onto one PTP clock domain, and any episode breaching the measured sync-error ceiling is rejected rather than shipped.
How is calibration quality verified?
Every episode ships intrinsics, SE3 extrinsics, and its RMS reprojection error, which is held below 0.28 pixels.
Are consent and anonymization checked as part of validation?
Yes. Each episode links to a signed contributor release, and faces, plates, and screens are detected and irreversibly blurred at ingest, with a reviewer confirming the result before anything ships.
How does a Spec Pilot fit into validation?
A Spec Pilot runs a small first batch against the agreed spec and is reviewed against every acceptance axis before volume scales, using the same reject log and validated-hour billing the full collection gets.

Sources

Where are the delivery formats documented?

Request a validated egocentric video dataset.

Tell us the tasks, environments, and streams your model needs. We will write the acceptance test into the spec, run a Spec Pilot against it, and bill only the hours that pass QA — with the reject log visible alongside your delivery.