Every Session Makes the Next One Cheaper

The ContentPipeline has been running since May. It takes gameplay footage, transcribes it word for word with timestamps, clips the interesting moments, generates narration, schedules the upload. I built the output side first because that’s the part I could see. What I couldn’t see was what was missing. The step I never automated was the…

The ContentPipeline has been running since May. It takes gameplay footage, transcribes it word for word with timestamps, clips the interesting moments, generates narration, schedules the upload. I built the output side first because that’s the part I could see.

What I couldn’t see was what was missing.

The step I never automated was the one in the middle — someone watching the footage and deciding which moments mattered. That someone was me. Every session I sat down with a transcription and flagged the timestamps worth clipping. The pipeline handled everything before and after that step. The step itself stayed manual because it required judgment I didn’t know how to encode yet.

Playing EIC for content changed how I play. Not in a way that ruined it — more like how game developers describe playtesting. You’re still in the game, but part of you is watching from outside it. Narrating what you see, aware of the output, shaping the session toward moments that will read well in thirty seconds. It’s a different type of playing. I got used to it.

What I didn’t get used to was knowing the manual step was still there.

SpriteHarvester is what I built to close it. OWLv2 running on a rented GPU, detecting every object in every frame — Darwin, enemies, bosses, health bars, evolution cards. 904 frames from a fifteen minute session produced 20,675 crops. Clean enough to train on. The RTX PRO 4500 handled it overnight for $9.

But the part that changed how I think about the pipeline wasn’t the crops. It was the transcription.

I’ve been generating timestamped word-level narration every session — “Darwin just evolved” at 4:23, “that boss appeared” at 7:12 — and treating it as input for clip selection. What it actually is: a labeling stream. Every moment I named out loud is a weak label for the frames around that timestamp. The model doesn’t need me to sort 20,675 images manually. It needs me to keep playing and talking the way I already do.

Each session I record makes the training dataset larger. A larger dataset makes the model’s detections cleaner. Cleaner detections mean the next session requires less manual review. The reps don’t go away. They compound into something that works harder than I do.

The pipeline was always going to get here. I built the output side in May because I could. The intelligence side took until June because I needed to find RunPod, find the four-model stack, and understand that my own narration was already doing half the labeling work without me knowing it.

I still have to get the reps in. Each session makes the next one faster, cheaper, and closer to the version where the pipeline watches the footage and I just play the game.

That version isn’t finished.

Building in public at blog.rfditservices.com — intake page is there if you’re working through something similar.

Talk to Robert about your contact center

Convoso, dialer ops, DNC compliance, and the spreadsheets holding it all together — this is the day job.

Get in touch

Play what I’m building

The arcade gets the experiments first — dev notes and session write-ups land here after.

Visit the arcade   GitHub

Robert Floyd Dugger Avatar