How we build
Video in volume, on our own engine
Hundreds of finished, narrated videos made from your own data, on a video engine and render machines we built and run ourselves, with nobody editing.
Slovenia's national innovation awards needed a 35-second video for each of 235 entries. Each one was made from the text of its own entry, with a Slovenian voiceover, and nobody edited any of them. The engine that built them is ours. So are the machines that render every video made in JT Cut.
235
Award videos for GZS, each made from its entry with nobody editing
1,410
Renders in all, 235 entries times six voice variants
A video for every entry, made from what the entrant wrote
GZS, Slovenia's Chamber of Commerce, runs the national innovation awards. In 2026 each of the 235 entries needed a branded 35-second video for the ceremonies. Cutting those by hand across thirteen regions was never going to happen.
So every video is built from the entry itself. The pipeline takes the title, the company, the description and the photos or clips the entrant uploaded. It writes a Slovenian voiceover from the description and checks technical words against Slovenia's official lexical database, so they are stressed correctly. Then it fits the narration to the video. The slides stretch first, and only then does the speed change, within a range too small to hear.
We rendered 1,410 videos in total, because every entry was made in six voice variants while we compared speech providers. That is 235 entries times six. GZS received the 235 finished ones, and they played at the ceremonies.
- An uploaded clip is used when it is sharp and long enough, and the photos become a slow pan-and-zoom slideshow when it is missing
- Long titles and company names are wrapped and shortened to fit the opening card
- A transparent logo gets a background colour picked for it, with a manual override per entry
- Every batch run ends with a summary per region of what rendered and what was skipped
Our own engine, on machines we run
Almost every video product runs on FFmpeg underneath. It is the free tool that cuts, mixes and encodes video, and its commands are dense. A slideshow with crossfades and music takes 44 lines of them, and one wrong character can fail deep into a render.
Our engine lets a developer describe the video in ordinary code. Mistakes are caught while the code is written. Wiring sound into a picture filter, for example, is flagged before any render starts. The finished job then goes to two machines we run ourselves. One handles the encoding. The other has a graphics card for AI work, such as finding faces in footage and blurring them.
The same machines now carry work beyond video. They also run five language models that we host ourselves.
- Errors show up on the developer's screen, before any machine time is spent
- One machine for encoding, and one with a 20 GB graphics card for AI models
- A job that no machine is equipped for is refused on arrival, with the missing part named
Products that already render on it
JT Cut is our video tool in the browser, live at jtcut.com. A user uploads photos, picks a look, types a voiceover script and presses render. Every one of those videos is rendered on our machines, and the page checks back for progress until the file is ready.
A newer product cuts video ads. A team brings one approved ad with its script versions, footage and voiceovers, and it produces every cut across opening hooks, languages and formats. Each file goes to our machines as its own job. On its first live run, one day after work on it began, 25 jobs went out and all 25 came back. It is still before launch.
The GZS award videos were assembled with the building blocks of the same engine, in one batch for all thirteen regions.
Long jobs finish once, and stuck ones are caught
The system that hands out jobs gives up on a machine after 30 minutes and passes the job to another one. Long renders used to run twice because of it. Now each job has one recorded owner, kept in a small ledger on the machine. The first long production job after the change ran for 41.5 minutes and finished exactly once.
A late copy of a job cannot overwrite a finished file either. The code that does the work has no way to reach storage. Only the layer around it can upload, and it checks that the job is still its own right before it does.
JT Cut also watches for renders that go quiet. A render with no final word after 30 minutes is marked failed, so the user can retry at once. Real footage finds real bugs too. Slovenian letters such as č in a music file's tags once crashed a slideshow render, and the fix carries a test built from that exact case.
Proven by

GZS Inovacije
Slovenia's national innovation awards, from the regional round in thirteen chambers to the national ceremony, on one platform we built and still run.
Every one of the 235 entries got a branded 35-second video for the ceremonies, made from the text of its own entry with a Slovenian voiceover. Nobody edited any of them. Technical terms are checked against Slovenia's official lexical database, and the narration is fitted to each video's length without a change anyone can hear.
JT Cut
A video tool in the browser that turns a set of photos into a finished, narrated video in minutes.
Pick one of five looks and JT Cut sets the transition, the camera move and the length of every slide. A camera move is a slow zoom or pan across the photo. No two neighbouring slides get the same transition or the same move, so a video built in one click looks edited by hand.
Everyframe
The live site for our own video engine, showing real runs on real footage and documenting how developers call the engine from TypeScript and Rust.
The developer reference lists 222 operations, the video, audio and AI steps the engine can run, and nobody typed any of them. A script asks the engine for its own list and writes the page from it. A check command rebuilds the page and fails if a single byte differs from the copy in the repo.
Everyframe Composer
Our pre-launch web app that turns one approved video ad into every cut of it, across opening hooks, languages and formats, timed from the voiceover.
The timing comes from the narrator. The app finds the pauses in each recorded voiceover and puts the default cuts in the longest ones. When the Croatian read runs 0.9 seconds longer, the cut moves by 0.9 seconds and the captions wrap again for Croatian. Every length on screen says whether it was measured or estimated.
One more project behind this does not have a public page yet.
Want this under your project?
Tell us what you need and we build a working prototype first, so you see it before you pay for it.