{"slug": "i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack", "title": "I built an AI faceless video generator in 2 months — here's the stack", "summary": "The article details the technical stack and development process behind Keyvello, an AI faceless video generator that creates short-form videos from a prompt in 2–5 minutes. The stack includes Next.js, Supabase, GPT-5.5, Fal.ai, ElevenLabs, and FFmpeg, with Modal used for video pipelines to avoid Vercel cold start issues. Key lessons learned include the necessity of implementing row-level security from the start and the discovery that users overwhelmingly prefer using pre-built templates over a blank canvas.", "body_md": "Six months ago I started Keyvello (keyvello.com) — an AI video generator that turns a prompt into a complete short-form video in 2–5 minutes. Here's the technical breakdown for fellow builders.\nThe problem\nFaceless creators on TikTok / YouTube Shorts / Reels spend 2–4 hours per video on scripting, voiceovers, B-roll, captions, and editing. Most burn out before they post 10 videos.\nThe stack\n-\nFrontend: Next.js 16, React 19, TypeScript, Tailwind CSS 4, Radix UI\n-\nBackend: Next.js API Routes (App Router)\n-\nDB: Supabase (Postgres + Auth + RLS)\n-\nAI: GPT-5.5 for scripts, Fal.ai for images, ElevenLabs for voices\n-\nVideo: FFmpeg via\nfluent-ffmpeg\n, Sharp for image processing\n-\nStorage: Cloudflare R2 (S3-compatible)\n-\nPayments: Dodo Payments\n-\nCompute: Vercel for the app, Modal for the video pipelines\n-\nState: Zustand\nThe pipeline\nprompt → GPT-4o script → scene splitter → parallel(Flux images + ElevenLabs audio) → FFmpeg composition (Modal) → R2 upload → status update\nWhat surprised me\n-\nModal beats running FFmpeg in Vercel. Cold starts on Vercel functions made 60s+ videos impossible. Modal webhooks solved it.\n-\nRLS is non-negotiable from day one. Retro-fitting row-level security at 1K users is painful.\n-\nCredit refunds need their own RPC. I hit a silent failure with\nincrement_user_credits\ngetting blocked by a trigger. Use add_credits\ninstead.\n-\nUsers want templates, not raw control. I shipped a \"blank canvas\" mode early. Nobody used it. The 11 named templates (AI Stories, Fake Texts, Stick Animation, etc.) do 95% of generations.\nWhat's next\nBetter lipsync for the talking-avatar templates. Tighter cost controls per template tier. Affiliate program.\nIf you're building something in AI video, would love to compare notes — drop a comment.", "url": "https://wpnews.pro/news/i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack", "canonical_source": "https://dev.to/mannpriteshh/i-built-an-ai-faceless-video-generator-in-2-months-heres-the-stack-266h", "published_at": "2026-05-23 04:39:16+00:00", "updated_at": "2026-05-23 05:02:20.121242+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "startups", "products", "cloud-computing"], "entities": ["Keyvello", "Next.js", "Supabase", "ElevenLabs", "Fal.ai", "Cloudflare R2", "Vercel", "Modal"], "alternates": {"html": "https://wpnews.pro/news/i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack", "markdown": "https://wpnews.pro/news/i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack.md", "text": "https://wpnews.pro/news/i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack.txt", "jsonld": "https://wpnews.pro/news/i-built-an-ai-faceless-video-generator-in-2-months-here-s-the-stack.jsonld"}}