I built the AI video pipeline you're about to build yourself

You've shipped a SaaS or an app, you need a marketing video, and you've found four doors. Hire an agency. Hire a freelancer. Sit down with Claude or ChatGPT and code the thing yourself with Remotion or a browser renderer. Or use a tool that already did that work.
I've been through all four. Fifteen years of motion design, years of freelancing, plenty of time inside agency projects, and for the last while I've been building the fourth door — a product where a frontier model writes the animation code and a headless browser renders it frame by frame. So when I describe what the DIY route costs, I'm not guessing at it from the outside. I'm describing my own last twelve months, and I'm arguing against a version of myself.
The four doors, and what each is really charging you
Everyone compares these on price, which is the easy variable and the least useful one. Every route bills you in three currencies: money, calendar time, and your own attention. The third one is the one that quietly decides whether the video ever gets finished.
An agency charges money and calendar. A freelancer charges money and your attention, because the producer job doesn't disappear, it moves to you. Coding it yourself charges attention and calendar and almost no money, right up until you count the weekends. A tool charges money and almost nothing else, and the thing it can't sell you is judgement.
Agencies and freelancers: still the right answer, sometimes
I've written the long version of this elsewhere — agency vs freelancer vs AI goes through how to hire and what to ask for — so here's the compressed version.
The real product of a good agency isn't footage, it's someone senior who will listen to you describe your product and then tell you the thing you're most excited about isn't the thing your customer cares about. Nobody sells that separately and it's worth a lot. You pay in money, usually several thousand upward, and in handoffs: your note goes to a producer, who translates it for a creative director, who briefs an editor, and days later you see your note interpreted rather than executed. Six weeks is the normal well-run timeline, not the disaster case.
A freelancer is my favourite way to make a video when the brief is clear. You talk to the person doing the work and your note lands straight in their timeline. High hundreds to low thousands, a week or two, and the catch is that you've just hired yourself as producer.
Both of these are the right call when the video will be the most-seen thing you own, or when you need to be argued with. Neither is a good fit if you're still changing your positioning every other week, because you'll pay in full for a video describing a product you no longer sell.
The door that looks free: Claude or ChatGPT plus Remotion

This is the one nobody writes about honestly, so let me.
The idea is sound, and I want to be fair to it because it's the same idea my product is built on. You describe your video to a model, it writes code, and a renderer turns that code into an mp4. With Remotion the code is React and the renderer steps a deterministic timeline. In a browser-based setup the code is HTML and CSS with a paused animation timeline that a headless Chrome seeks through, one frame at a time, screenshotting as it goes. Both are the same shape: your video is a program, and a frame is that program evaluated at time t.
A model is genuinely good at this. Ask Claude for a kinetic type sequence and you'll get real code, and it'll run. That first weekend is exhilarating. I remember it.
Then you try to make it good, and you discover the actual work.
The thing to understand is that the engine is not what separates a cheap-looking video from an expensive-looking one. A video I studied closely — the kind of piece people send you saying "can we have this" — turned out to have been made with Claude and Remotion, and it wasn't using 3D or WebGL at all. Just CSS perspective, the same tool everyone has. The difference wasn't the renderer. It was direction: what's on screen, when it moves, how long it holds, what it cuts to. You can't prompt your way past that in an afternoon, and no library gives it to you.
What actually goes wrong when a model writes your animation

Here's the part I'd have paid money to read a year ago. These are real failures from real shipped videos, and every one of them looked fine in the browser.
Your video is a program, so anything outside the timeline doesn't exist. The renderer seeks a paused timeline and screenshots. A CSS transition, a requestAnimationFrame loop, a keyframe animation — all of them run in your browser and appear in exactly none of the frames. The preview is not the product, and the model doesn't know that unless you tell it, every time.
A word can vanish from every single frame and nothing complains. Take a headline with a gradient clipped to the text, then split it into characters to stagger them. The split re-wraps each character in a new element; those children inherit transparent text but never inherit the gradient, so they render as literally nothing. The markup still reads correctly. Validation passes. We shipped a 45-second video whose end card read "Promo" instead of "PromoHyper", in every frame, and nobody caught it until someone watched the file.
Fading a group can teleport everything inside it. Fade a container that holds a 3D scene and the browser flattens that scene — that's the CSS spec, not a bug — and every plane inside snaps to a new size in a single frame. We measured it: a far plane jumping 1.24× and a near one 0.86×, in one frame, in the middle of a nice fade. It reads as the camera glitching. Good luck guessing why from the symptom.
Hiding something can hide it permanently. Pin an element's visibility, and if that pin is the only thing writing that property, the element is present in the browser and absent from the render. A test that only ever seeks forward will never see it.
Then the ones you'd never predict. A blur filter on a static wrapper silently becomes a containing block and shifts its children by one frame. An external font gets stripped out and the stripping is written back to disk, so the video ships in the wrong typeface with an empty log. And the one that stings: 3.6 seconds of blank frames went out to a customer because every quality check we had looked at the page, not at the finished mp4.
None of these are exotic. They're the ordinary cost of the technique, and each one cost us a day or more to find. That's the real invoice for the free door.
And the parts nobody counts

Assume you win all of that. You still don't have a video.
You need a voiceover that doesn't sound like a screen reader, which means paying for a decent voice API and then discovering it won't give you silence. Ask for a two-second pause between sentences and you get 0.82 of a second — I've measured it. If you want real breathing room you have to cut the audio and rejoin it around actual silence, which is its own small piece of engineering.
You need music that fits the cut and is licensed for commercial use. You need sound effects that are quiet enough not to be embarrassing. You need the render to survive a heavy page. You need to know that when the model gets it wrong you can describe the fix well enough to get a different wrong answer.
And you need this to be worth your weekends, when your actual job is the product.
So why use PromoHyper instead
Because I already paid all of that, and the thing I'm selling is the sediment.
The model doesn't get a clever prompt. It gets a long list of rules, and almost every rule exists because a specific video failed in a specific way. There's a rule about gradients and split text because of that end card that said "Promo". There's a rule about fading 3D groups because of that one-frame jump. There's a rule about the first three seconds never being static because feed-scroll kills a polite opening. That list is a year of failures written down, and it's not something you can prompt into existence — you have to have made the mistakes.
Then the output is checked against the finished file, not the page: legibility, text spilling out of frame, contrast, elements drifting off-canvas, transitions overlapping, depth collapsing, and dead frames read straight out of the rendered mp4. When a check fails, it goes back for repair automatically, up to five rounds, before you ever see it.
And around that sits everything that isn't animation. The script written from your URL. Voice with real silences in it. Music matched to the cut. Sound effects that stay under the voice. Licensing handled, so you can put it on your homepage and your ads without thinking about it. Roughly ten minutes, start to finish, from pasting a link.
Here's what I won't claim. It will not tell you your positioning is wrong — a good creative director will, at length, and that conversation is sometimes worth more than the video. Revisions keep your original voiceover, so they refine the look and the words on screen rather than the length. And if you genuinely enjoy building renderers, the DIY door is open and I'd be a hypocrite to talk you out of it.
How to choose
Pick an agency if this video will outlast your current pricing page and you want to be argued with, and the six weeks doesn't frighten you.
Pick a freelancer if you can write a one-page brief and will actually do the producer work. Hire on two or three complete pieces in your format, full length, never on a showreel.
Code it yourself if the building is the point — if you want a system you'll use fifty times, and the debugging sounds like a good weekend rather than a tax. It's a real craft and it's satisfying. Just price it in weekends, not dollars, and know that the animation is the easy half.
Use a tool if you need the video to exist this month and the honest alternative is making nothing at all. That's the most common case by a distance, and it's the one worth being honest about: an unshipped video converts nobody.
The first one on PromoHyper is free and watermarked, so the comparison costs you a link and about ten minutes. If it's not better than what you'd have made yourself, you've lost nothing but the ten minutes, and you'll know a lot more about what you actually want.