Inspiration
Every creator we know has the same bottleneck: they have something to say — a product to show, a screen to record — but turning that raw capture into a post-worthy vertical reel means hours of scripting, voiceover, avatar work, and caption timing. Tools exist for each step, but nobody stitches them into one tap-to-post flow on the device where creators actually work: their phone.
So we built Menivor — drop in a screen recording, and it comes back a viral, ready-to-post UGC reel.
What it does
You give Menivor a screen recording and a prompt. It:
- Scripts it — a hook-driven script (TR/EN) tuned for short-form retention.
- Voices it — natural TTS timed to the words.
- Adds a lip-synced AI avatar presenter — a talking-head that delivers the hook.
- Burns CapCut-style word-by-word karaoke captions.
- Renders a 1080×1920 MP4 — ready for TikTok, Reels, and Shorts.
No timeline, no manual editing. Create → render → post, from your phone.
How we built it
- Mobile: Expo / React Native (24+ screens: capture → compose → render → jobs library → publish), with device-session auth and a persistent, on-device export receipt so every render shows its real file, duration, and share result.
- Monetization — RevenueCat: Pro exports are entitlement-gated. We mount
RevenueCatProviderat the app root,Purchases.configurewith the platform API keys, verify entitlements ongetCustomerInfo, and present the paywall viaRevenueCatUI— withrestorePurchasesand update listeners wired. The entitlement policy is unit-tested. - Backend: FastAPI + Celery orchestrate the render chain
(
script → tts → {avatar ‖ captions} → compose → upload); Cloudflare R2 for storage; a microdollar wallet with success-only settlement so a failed render never charges the user. - Model routing: ElevenLabs (voice), HeyGen / RunPod & diffusion providers (avatar/video), FFmpeg + libass for the final compositing (chroma PiP + karaoke captions, hardware-accelerated).
- Web: a live marketing + product site at menivor.com (Next.js on Cloudflare Workers).
Challenges we ran into
- Timing is everything. Voice, captions, and avatar all have to line up to the same millisecond. We made the TTS timestamps the single source of truth and drove captions + avatar off them, instead of guessing.
- Failures shouldn't cost money or progress. Renders can fail mid-chain, so we made every step resume on the same job and made billing success-only — the wallet reserves, then only settles when a real MP4 lands.
- RevenueCat across a real render economy. Gating exports (not just a flat subscription) meant entitlements had to be checked at the exact moment of value — the export — and degrade gracefully when unconfigured.
What we learned
- Consistency and timing, not raw model quality, are what make a generated reel feel "real."
- Success-only billing + entitlement-gated exports is a cleaner monetization story than a blunt paywall — you charge at the moment you deliver value.
- Shipping a mobile creative pipeline forces brutal simplicity: one tap, one job, one receipt.
What's next
Character consistency (the same avatar/voice across every reel), direct publish to TikTok/IG/Shorts, and a template marketplace.
Built With
- celery
- cloudflare-r2
- cloudflare-workers
- expo.io
- fastapi
- next.js
- python
- react-native
- redis
- revenuecat
- typescript
Log in or sign up for Devpost to join the conversation.