Inspiration
Most AI video tools stop at "type a prompt, get a clip." That is a demo, not a story. We wanted the opposite: a product where the AI does the rendering but you stay the director. FICT started from a simple question — what if every 10 seconds of a film ended with a fork in the road, and you picked which way it went?
What it does
FICT turns an idea into an original animated short film, one decision at a time.
- Describe your film. Protagonist, world, mood, visual style. Fantasy adventure, playful romance, a bright cooking rivalry — the premise is yours.
- Watch a 10-second AI-generated scene.
- Choose one of three plot twists. Your choice becomes the next scene. A standard film runs six scenes.
- Watch it back end to end, with the story text visible or hidden.
A free built-in sample film, The Last Train, lets anyone see the format before creating anything. No login is required and stories stay private inside the app — there is no public feed.
How we built it
- App: Expo (SDK 55) + React Native 0.83 + React 19, TypeScript, dark-first UI with
expo-videofor scene playback. - Backend: Convex — generation jobs, wallet/credit ledger, purchase state, film catalog, and cron-driven workers all live there, so the client stays thin and a dropped connection never loses a paid generation.
- AI: fal.ai as the generation gateway, with Google Veo and MiniMax for video and Gemini for story/branch reasoning.
- Monetization: RevenueCat (
react-native-purchases10.9.1) with RevenueCat Paywalls on both iOS and Android, backed by a server-side credit wallet in Convex. - Analytics: Firebase Analytics + Crashlytics and Mixpanel.
- Shipping: EAS builds and
expo-updatesOTA, shipped to both the App Store and Google Play.
Monetization model
Generation costs real money per scene, so the economy is explicit instead of hidden behind "unlimited."
- One successfully generated 10-second scene costs 20 credits, whether it opens a film or continues one. A six-scene film costs 120 credits.
- A failed generation refunds the 20 credits once, so the user never pays for our infrastructure failing.
- FICT Director Weekly grants 200 credits each week you open the app. FICT Director Yearly grants 60 credits each week you open the app. Unclaimed weeks do not accumulate — no backfill, no carry-over.
- Credit packs (200 / 400 / 800) are one-time purchases available to subscribers with an active plan.
- No free trial, and neither plan promises unlimited generation.
RevenueCat gives us one entitlement model across two stores, and Convex holds the credit ledger so the balance is the same no matter which store the purchase came from.
Challenges we ran into
- Latency is the product. A 10-second scene is not instant. We had to make waiting feel intentional — job state lives on the server, the app can be closed and reopened, and the film resumes where it was.
- Paying for probabilistic output. Generation fails sometimes. Charging credits up front and refunding on failure, exactly once, needed an idempotent server-side wallet rather than client-side bookkeeping.
- Honest subscription copy. Weekly credit grants that do not roll over are easy to describe badly. We rewrote the store listing and paywall until the rules were unambiguous, and both stores approved it.
- Two stores, one economy. Consumable credit packs plus subscriptions across iOS and Android is where RevenueCat saved us the most time.
Accomplishments that we're proud of
FICT is live on both the App Store and Google Play, with a real credit economy, a refund rule that protects the user, and a branching format that makes an AI video model feel like a toy you play with instead of a prompt box you fight.
What we learned
Interactivity is what makes generative video worth paying for. The same model output feels disposable when it is a one-shot clip and valuable when it is your scene three of six. Designing the credit economy first — and being blunt about it in the store listing — made the paywall easier to write, not harder.
What's next for FICT
Longer films and multi-chapter stories, shareable exports so a finished film can leave the app, more visual styles, and smarter branch suggestions that stay in character with the world you described.
Built With
- android
- convex
- eas
- expo.io
- fal.ai
- firebase
- gemini
- google-veo
- ios
- minimax
- mixpanel
- react
- react-native
- revenuecat
- typescript
Log in or sign up for Devpost to join the conversation.