Honestly? I just got frustrated. I was paying for like 3 different AI video subscriptions, burning through credits, and still not getting what I wanted. So I did what any reasonable developer would do - I spent way more time building my own thing than I would've ever spent on subscriptions.
But hey, I learned a ton about shipping a SaaS-like product, and some of it might actually be useful to you.
The market gap that got me started
So faceless video is huge right now. If you haven't seen it - it's those short vertical videos on TikTok/YouTube Shorts where nobody appears on camera. Horror stories, news digests, fact videos, that kind of stuff.
The demand is insane. One video I generated hit *90K views* on TikTok. And I'm not even a content creator - it was just a test video.
But every tool in this space is a subscription SaaS. $20–50/mo minimum. And they all have the same problem: you're locked into their pipeline, their models, their templates. Want to change the image provider? Too bad. Want to run it locally? Nope. Want to generate in 7 languages at once? Pay 7x.
I looked at the competitive landscape - RevidAI, Faceless video, AutoShortsAI, Fliki, InVideo, Pictory, etc. - and noticed something interesting: *not a single one is open-source, and not a single one lets you self-host.* Every single player is a closed SaaS.
That felt like a gap worth filling. So I built YumCut and open-sourced it.
Architecture decisions
This was the single most important decision. Instead of building a monolith where everything is tightly coupled, I made every processing step a separate utility. Image generation, doodling effects, video assembly - each one is a standalone script that takes input and returns output.
Why this matters:
- *Swappable providers* - user wants a different image API? They write a small script. Done.
- *AI-agent friendly* - when I switched to using Codex for development, this architecture meant the AI could work on one utility without breaking others
- *Language agnostic* - core utils are TypeScript, but you could plug in Python, Go, whatever
I'm not sure what to call this pattern exactly - pipeline-based? Plugin architecture? Whatever it is, it saved the project.
All video assembly happens through dynamically generated FFmpeg commands. Transitions, effects, overlays - everything. No proprietary video processing, no heavy dependencies. Just FFmpeg.
This sounds straightforward until you hit edge cases. Like transparent video overlays.
The rabbit holes nobody warns you about
I wanted overlays - transparent videos layered on top of the main video to make it feel alive. Simple concept, right?
Turns out most codecs that support alpha channels store video in absurdly large formats. *One minute of overlay = 1GB+.* That's not gonna work when you're generating hundreds of videos.
I ended up using WebM with VP9 - modern, open, supports transparency. But getting FFmpeg to encode it properly took way longer than I'd like to admit. One of those things where you think it'll take an afternoon and it takes a week.
The doodling effect
I built this effect that simulates an image being drawn - extract contours, convert to SVG, animate the paths appearing. The video with this effect got 90K views, so clearly it resonates.
But here's the thing - existing services charge per-image for this effect, roughly the same price as generating the image itself. Making it work with open-source tools only, with no paid APIs, was a significant chunk of work. Contour extraction, SVG conversion, animation timing - lots of fiddling.
Multi-language TTS is harder than you think
English TTS? Solved problem. Plenty of good local models.
But I needed 7 languages (English, Russian, Spanish, French, German, Portuguese, Italian). And a voice that sounds great in English will sound robotic in Spanish. Every language needs its own voice configuration.
I started with ElevenLabs (subscription, use-it-or-lose-it monthly quota - annoying model btw). Tried local models (quality issues with non-English). Eventually landed on budget cloud options like Minimax and InWorld that support voice cloning across languages.
The lesson: *multilingual anything adds 3-5x complexity.* If you're building a SaaS and thinking "we'll add more languages later" - budget way more time than you think.
How AI agents built most of this
I started building in Cursor with Claude. It worked, but it was like pair programming with someone who drank 10 cups of coffee. I'd ask for one feature and get three - two of which were broken. Constant cleanup.
The tight coupling problem was real. "Fix this function" and suddenly three other files are modified with unnecessary refactors.
Codex: the focused senior dev
Switching to OpenAI Codex was a game changer. It does what you ask, nothing more. Changing one part of the project stopped being scary because Codex wouldn't randomly touch other parts.
The lesson for SaaS builders
If you're using AI agents for development, architecture matters more than ever. The pluggable utility pattern I chose wasn't just good engineering - it was essential for AI-assisted development. Isolated components = AI agents that don't break your stuff.
Competitive landscape and positioning
Here's the thing about this market: *every competitor is a closed SaaS with no self-hosting option.*
I'm not saying open-source is always the right play. But in a market where every single player is a $30/mo subscription doing roughly the same thing - being the open-source alternative is a real differentiator.
The online version offers 3 free video generations. Locally, it's unlimited.
Licensing: the middle ground
Current license: free for personal use, contact me for commercial deployment as a service. I'm considering relaxing this to fully open depending on community demand.
Honestly still figuring out the right approach here. If you've navigated open-source licensing for a product like this, I'd love to hear what worked.
Fin
If you're building in the AI content space or thinking about open-sourcing a SaaS alternative - happy to chat in the comments.
*GitHub:* https://github.com/IgorShadurin/app.yumcut.com
*YumCut:* https://yumcut.com/?utm_source=devto

Top comments (0)