Case study · Make.com + Claude

One folder in, clean subtitles out.

The subtitle pipeline behind a weekly carbon-markets show — and first place in RAY AI's internal AI & automation competition, presented to the whole company.


The problem

Every episode of Carbon Weekly News becomes three videos — the main episode plus a clip for each guest — and all three need perfectly timed subtitles within 48 hours of recording. The timestamps aren't cosmetic: they drive the chapters, and the chapters drive search ranking. If the timing drifts, the videos stop surfacing.

Two things kept breaking. Speech-to-text is good at English and bad at carbon markets — every episode came back with domain terms mangled: registry names, standards bodies, acronyms that only exist in this industry. And the transcription tools built for shorter videos chopped hour-long recordings into pieces, then stitched them back together — and the seams are exactly where the timing fell apart.

The first week, done by hand, ate the entire week.

The build

A Make.com scenario, end to end:

The recording is transcribed in a single pass — no chopping the audio, no stitched seams — so the timing holds the whole way through an hour-plus episode.

The Claude module is the backbone. It works from a 16-page glossary of correct carbon-market terminology, itself built with Claude from carbon-market newsletters and senken.io — and updated whenever an episode surfaces new terms. The glossary is passed in as the source of truth, so the model corrects toward known vocabulary instead of guessing at what a speaker probably said. In practice, the only fixes left are the occasional spelling of a name.

The hard part

Two things break naive LLM subtitle cleanup: long transcripts overflow model limits, and models "helpfully" rewrite things you didn't ask them to touch.

So the pipeline chunks only the text — the SRT is split on block boundaries with an explicit separator, so every chunk Claude sees is a valid subtitle fragment and the audio is never touched. And the prompt is a contract, not a suggestion:

Never change sequence numbers. Never touch timestamp lines. Never merge, split, add or delete blocks. Fix terminology from the glossary, strip filler, do nothing else.

If removing filler empties a block, the block stays — a lone hyphen holds its place — so the numbering never shifts and the timing never drifts.

Before / after

Representative examples — illustrative dialogue, real failure modes

Before
14 00:03:12,480 --> 00:03:16,220 um, so the burra registry, uh, issued the credits in, in March
After
14 00:03:12,480 --> 00:03:16,220 so the Verra registry issued the credits in March
Before
27 00:06:41,900 --> 00:06:45,310 airlines fall under coreseer from next year
After
27 00:06:41,900 --> 00:06:45,310 airlines fall under CORSIA from next year
Before
41 00:11:02,150 --> 00:11:04,880 uh, er, that's, that's the whole point of additionality
After
41 00:11:02,150 --> 00:11:04,880 that's the whole point of additionality

Timestamps byte-identical. Blocks intact. Only the words change.

What one clean file unlocks

The finished SRT is the backbone of everything downstream. Its timestamps tell Claude where each guest starts and stops speaking, so the guest clips are cut exactly where they should be — and the clip subtitles are sliced from the same file, no re-transcription. A translation skill produces the German subtitles; a publishing skill uses the SRT for timing and context to build the chapters, titles and descriptions in English and German, then uploads via Claude in Chrome.

A production job that once ran past 7pm into the weekend now runs in the background of the workday.

Recognition

First place — RAY AI's internal AI & automation competition.

RAY's published acceptance rate: 0.03%. Invited to present the winning build to the whole company.

Runs in production for Carbon Weekly News.