How Gems moved YouTube transcripts to Capslane

A factual migration case: native transcripts for footage search, generated fallback for user videos and a stable response contract inside Gems.

A transcript dependency inside a video product

Gems uses YouTube transcripts to analyze videos and support footage search. It is an internal Webba product and Capslane's first production integration. This case describes our own deployment work, not an independent customer testimonial.

The previous adapter used Supadata for the transcript path. The migration needed to preserve the fields already consumed by Gems while making caption extraction and audio generation separately operable. Replacing every external data endpoint was outside the scope.

Two workflows, one transcript contract

Footage search needs timestamped text from source and candidate videos. That path uses native mode, segmented output and a chunk size of 500 characters. It must not start audio generation while searching through candidates.

The user transcript flow uses auto mode. It accepts an immediate native or cached result, or stores a job ID and waits for generated text after confirmed caption absence. A temporary extraction failure remains an error rather than silently triggering generation.

The common response retains content, language and available languages. Segment offsets and durations stay in milliseconds, so downstream playback and selection code can keep its timing convention. Provider errors are handled at the Gems adapter boundary.

Authentication uses a dedicated server-side Capslane key. The browser calls the Gems backend; it does not receive that key. Capslane keeps the integration in its own workspace with tenant-scoped usage and logs.

Production verification on September 3, 2026

The completed migration covered the transcript proxy and footage-search transcript calls. A real Gems browser flow displayed the transcript and completed an analysis with 16 plans. Backend logs confirmed requests reached Capslane. The former provider credential was removed after this verification.

This was a functional deployment check. It demonstrates that the exercised flow completed with the new provider; it does not establish a monthly volume, conversion improvement or cost reduction. Those figures were not measured for this case.

Budget for uncached extraction and isolate generation

The reliability work around the migration exposed native requests that exceeded the original timeout. A first 200-video run completed 182 expected HTTP responses; after increasing the internal native timeout to 35 seconds, the follow-up run completed 200 of 200. The application client timeout was set to 45 seconds to allow room for that work.

The dated benchmark report keeps the corpus, runner and measurement limits public. Its mix of cached and uncached requests explains why a low median does not describe every first request. The native path and generation worker remain separate so an audio worker failure does not make cached or native extraction unavailable.

What this case can establish

Gems demonstrates a focused migration of a real YouTube transcript integration with both native and asynchronous behavior. It does not establish universal video coverage, an independent uptime guarantee or a comparison of competitor performance. YouTube availability and caption quality can change.

To evaluate the same approach, start with the contract mapping and acceptance checklist, run a bounded sample of your own supported videos and validate the complete product flow before switching traffic.