Written from 10 named sources Below is the hardened, launch-ready version of Booth Buddy. I incorporated the remaining critique fixes: the client never talks directly to Claude, all session writes happen server-side, credit deduction is based on a server-managed billing marker, and layer generation uses locks/idempotency so retries don’t double-charge. Booth Buddy: Complete Strategic & Technical Roadmap 1) Lean Product Requirements Document (PRD): Booth Buddy v1.0 Problem Statement Voice actors recording in isolation often lack immediate, professional feedback on their takes. Hiring a live director is expensive and scheduling is messy. Booth Buddy solves this by giving actors an on-demand “booth director” that guides them through a script in three sequential layers of direction, so the experience feels like a real session with a human director instead of a one-shot analysis dump. What v1.0 is A minimal, shippable mobile app that: lets a user upload or paste a script, asks for the target vibe, delivers three layers of direction in order, stores the session for later reference, and deducts one credit when the session is finished. User Journey: App Open → Session Output → Subscription Prompt Step 1: Landing Dashboard User opens the app. They see: remaining credits, a “Start New Session” button, and, if credits are zero, an upgrade prompt. Step 2: Script Upload User uploads a text PDF or pastes script text. v1 guardrails: max file size: 5MB, max script length: 15,000 characters, selectable-text PDFs only, OCR/scanned PDFs are not supported in v1. The raw file goes to Firebase Storage. The extracted text goes to Firestore. If extraction fails, the app asks the user to paste the text manually. Step 3: Session Initiation & Target Vibe User picks a vibe like: commercial, corporate, dramatic, comedic, video game. The backend checks the script length and ownership, then creates the session. Step 4: Three-Layer Directing Session This is the core product. It is stateful. Layer 1 — Foundation read-through guidance, emotional beats, subtext, pacing, emphasis points. Layer 2 — Character motivation, tone, vocal qualities, emotional arc, how the character should feel internally. Layer 3 — Polish breath marks, consonant clarity, plosives/sibilants, energy peaks and valleys, mic-ready technical notes. Each layer is a separate backend call, and each call includes the script plus the previously generated guidance so the session keeps context. Step 5: Session Output & Archival After Layer 3, the app shows a clean session summary containing all three layers. User can copy it, save it, or export it as PDF. The session is archived in their library for re-use. Step 6: Credit Deduction & Subscription Prompt Once the session is complete, the backend deducts 1 credit. If credits hit zero, the app prompts the user to subscribe. Subscription management is handled by RevenueCat, with entitlement sync back into Firebase [2], [3]. Core Features for v1.0 Feature What it does Acceptance criteria Stateful Session Engine Guides the user through 3 ordered AI layers, preserving context across the full session. 1) Layer 2 receives the original script plus Layer 1 notes from the backend. 2) Layer 3 receives the script plus Layers 1–2 notes. 3) User sees one final session summary screen. Script Upload & Storage Accepts pasted text or selectable-text PDFs, stores raw file in Storage, extracted text in Firestore. 1) PDF/text upload succeeds. 2) Script is stored under the user’s account. 3) The same script can be re-opened later. Credit-Based Access Enforces 5 free sessions, then subscription-based monthly credits. 1) New users start with 5 credits. 2) Zero credits blocks session start. 3) Paid users get 15 credits/month. Subscription Sync Uses RevenueCat to manage paid access and sync entitlement state to Firebase. 1) Purchase events update Firebase. 2) Subscription status and credits stay in sync. 3) Restore purchases works. Responsive Mobile UI Works smoothly on iPhone and Android devices. 1) Dashboard, upload, session, and summary screens render correctly. 2) Inputs handle multi-line scripts. 3) Buttons are thumb-friendly. Account & Data Controls Provides account deletion and a clear AI disclosure. 1) User can delete account/data from inside the app. 2) UI clearly states that direction is AI-generated. Explicit Non-Features for v1.0 These are intentionally out of scope so Booth Buddy stays shippable: No audio recording. No DAW integration. No live audio feedback while recording. No social feeds or script sharing. No AI voice generation. No multi-actor sessions. No custom model training. No prompt library marketplace. No collaboration tools for directors yet. Session Architecture: How the AI Coaching Works Booth Buddy is not one prompt, one answer. It is a session architecture: User starts a session. Backend creates session state. Backend generates Layer 1. User taps “Next Layer.” Backend generates Layer 2 using the script + Layer 1. User taps “Next Layer.” Backend generates Layer 3 using the script + Layers 1–2. Backend marks the session complete and deducts one credit. This structure makes the AI feel conversational and progressive, like a real director refining notes over time. Acceptance Criteria by Feature 1) Stateful Session Engine User uploads or pastes a script. Layer 1 notes are saved server-side. Layer 2 references the original script and Layer 1 notes. Layer 3 references the original script and prior layers. Final session summary shows all three layers in one view. 2) Script Upload & Storage Upload works for selectable-text PDFs and pasted text. Script text is saved under the user’s account. User can reopen a prior script and start a new session. 3) Credit-Based Access User account starts with 5 credits. Starting a session with 0 credits is blocked. Paid subscribers receive 15 credits/month. One completed session deducts exactly 1 credit. 4) Subscription Sync RevenueCat purchase events update Firebase. Subscription status is reflected in the app. Restore purchases is supported. 5) Responsive Mobile UI Dashboard, upload, session, and summary screens are usable on modern iPhones and Android phones. Multi-line text input feels smooth. Buttons are large enough for thumbs. 6) Account & Data Controls User can delete their account from inside the app. Uploaded files and Firestore data are deleted. The app includes a visible AI disclosure and privacy language. 2) App Architecture & Technical Flow Recommended Architecture Use FlutterFlow + Firebase + Cloud Functions + Anthropic + RevenueCat. Plain-English Explanation FlutterFlow This is the app people see and tap on. It handles screens, buttons, text inputs, and layout. It’s a fast way to build a real mobile app without hand-coding every screen [13], [14]. Firebase Auth This handles login and user identity. It answers the question: “Who is this person?” Firestore This is the app’s memory. It stores: user profile, credits, session state, script records, and the notes from each direction layer. Important fix: the client should be read-only for session output. Only Cloud Functions should write the AI notes, completion markers, and credit changes. Firebase Storage This stores the raw uploaded PDF files. Cloud Functions validate that the file belongs to the correct user before using it. Cloud Functions This is the secure middleman. It: validates uploads, creates sessions, calls Claude, writes results to Firestore, and deducts credits atomically. This keeps API keys off the phone and prevents users from tampering with billing or session state. Anthropic Claude API This is the AI “director.” Use Claude 3 Haiku as the default because it is the cost-efficient, fast path for most sessions [11]. If you later see long or unusually complex scripts, you can optionally route those to Claude 3.5 Sonnet, but for a lean v1 you should be careful about cost creep [12]. RevenueCat This manages subscriptions and sends purchase state back to Firebase. It’s the cleanest way to handle App Store and Play Store purchase plumbing [2], [3]. App Store / Play Store This is how the app gets distributed to users on iPhone and Android. Why the Credit System Matters Booth Buddy has a real token-cost risk. If users run long scripts through several layers every month, your AI costs can eat into or exceed a cheap subscription price. The guardrail is simple: 5 free sessions 15 paid sessions per month How it works: User starts a session. Cloud Function checks if credits > 0. If yes, the session runs. After Layer 3, the backend deducts 1 credit atomically. If the user subscribes, RevenueCat sends a webhook and Firebase updates the user’s entitlement and credit balance [2], [3], [6], [7]. Required Safety Fixes From the Critique To avoid the remaining launch-breaking issues: Do not let the client write AI outputs. Do not let the client mark sessions complete. Use a server-managed field like creditsDeductedAt. Use per-layer locks like layer1_lockedAt / layer1_requestId to avoid duplicate AI calls. Validate that uploaded paths belong to the logged-in user. Add Firebase App Check to protect callable functions from abuse. Recommended Server-Side Contract Use three callable functions: createSession(storagePath, vibe) Verifies the file belongs to the user. Checks script length. Creates the session record. generateLayer(sessionId, layerNumber, requestId) Uses a lock so double-clicks don’t create duplicate AI calls. Returns existing notes if the layer was already generated. Writes the response back server-side. completeSession(sessionId) Verifies all three layers exist. Checks credits. Deducts one credit in a transaction. Sets creditsDeductedAt so the charge is idempotent. 3) Tech Stack Comparison Table Dimension Path A: FlutterFlow + Firebase + Claude + RevenueCat + Cursor/Claude Code Path B: Bubble.io + Wrapper + same backend/API stack Development speed Fastest for this use case. Native mobile UI + Firebase backend fit a stateful app well [13], [14]. Slower once you wrap the web app for mobile. More friction and rework [13], [14], [15]. Monthly cost at 100 subscribers About $40–$60 total, depending on plan usage and AI volume [9]. About $32–$50, but mobile wrapper overhead can erase the savings [9], [15]. Monthly cost at 500 subscribers About $80–$120 total, with costs scaling predictably [9]. About $120–$200, with more unpredictability from workload and wrapper overhead [9], [15]. Monthly cost at 1,000 subscribers About $150–$250 total, still manageable if usage stays disciplined [9]. About $300–$500, and the wrapper becomes a real drag [9], [15]. Learning curve for a non-technical founder Moderate, but manageable. The visual builder helps, and Firebase is a good fit for app state [13], [14]. Easier for web UI at first, but mobile wrapping and native app polish become harder later [14], [15]. Apple/Google compliance risk Lower. FlutterFlow builds on Flutter, which is a better fit for real mobile apps [13]. Higher. Wrapped web apps are more likely to feel non-native and run into review issues [13], [15]. Suitability for stateful session architecture Excellent. Firebase + Cloud Functions cleanly support multi-step session state [2], [3]. Only fair. You can make it work, but the architecture is clunkier for sequential AI sessions [15]. Recommendation Choose Path A. For a <$1,000 budget and a 30–60 day launch window, FlutterFlow + Firebase is the better path. It is the best fit for: a stateful, multi-step mobile experience, low-code speed, clean server-side logic, better App Store odds, and easier handoff to a developer later [13], [14], [15]. Path B is tempting because it feels web-first and familiar, but the wrapper layer adds risk and complexity right where you do not want it. 4) Week 1 Action Plan Here is the exact 7-day plan to get from idea to first prototype. Day 1 — Set up the core accounts Goal: create the foundation. Create accounts for: FlutterFlow Firebase Anthropic RevenueCat Install: Cursor or VS Code + Claude Code What to do Start a blank FlutterFlow mobile app. Create a Firebase project. Enable Auth, Firestore, and Storage. Create an Anthropic API key. Create a RevenueCat project. Estimated cost: $0–$55 FlutterFlow free tier: $0 Firebase testing: $0 Anthropic test credit: about $15 RevenueCat: $0 Optional FlutterFlow upgrade later: about $30/month [9] Day 2 — Write the Booth Buddy prompt Goal: make the three-layer director behavior work. What to do Write the prompt for Layer 1, 2, and 3. Decide the output format. Test with a short script and a couple of different vibes. Make sure each layer feels distinct. Milestone The model gives: Foundation notes, then Character notes, then Polish notes, without repeating itself. Estimated cost: $2–$5 in AI tests. Day 3 — Design the data model Goal: define where the app’s memory lives. What to do Create users/{uid} docs. Create users/{uid}/sessions/{sessionId} docs. Define: credits, subscription status, script text pointer, vibe, layer notes, completion markers, billing marker. Important Clients should not be able to write AI notes or billing fields. Estimated cost: $0 Day 4 — Build the secure backend Goal: create the Cloud Functions contract. What to do Implement: createSession generateLayer completeSession Add: App Check enforcement, script length validation, storage-path ownership validation, per-layer locks, transaction-based credit deduction. Milestone Backend can create a session, generate one layer, and track completion without the client touching Claude directly. Estimated cost: $0–$5 Day 5 — Build the first FlutterFlow screens Goal: get the user interface working. What to do Build: dashboard, upload screen, session screen, summary screen. Add buttons for: start session, next layer, subscription prompt. Milestone A user can log in, see credits, upload/paste a script, and start a session flow. Estimated cost: $0 Day 6 — Wire in RevenueCat Goal: make the paid path real. What to do Connect RevenueCat to the app. Set up the paywall. Configure webhook sync into Firebase. Test the “credits reset after purchase” flow. Milestone A subscription purchase updates the user’s entitlement and credit count in Firebase [2], [3], [7]. Estimated cost: $0 for setup, aside from store testing later. Day 7 — End-to-end prototype test Goal: prove the whole loop works. What to do Use a short pasted script. Use one selectable-text PDF. Run the full flow: create session, Layer 1, Layer 2, Layer 3, complete session, deduct credit. Proof-of-concept milestone A FlutterFlow screen calls the backend Cloud Function and returns the first layer of booth directions. Then the user advances through all three layers without re-pasting the script. The session summary appears at the end. Estimated cost: $2–$10 in AI tests. Week 1 Budget Check Expected Week 1 spend: roughly $15–$55, leaving a lot of room under the $1,000 ceiling. Final Recommendation Build Path A: FlutterFlow for the app, Firebase for auth, storage, and session state, Cloud Functions for all AI and billing logic, Claude for the directing engine, RevenueCat for subscriptions. That stack gives you the fastest route to a real mobile product that behaves like a proper stateful coaching session, not a gimmick. The biggest thing to protect is the backend contract: client reads, server writes. Sources [2] Enable In-App Purchases with RevenueCat Firebase Extensions Hub — https://extensions.dev/extensions/revenuecat/firestore-revenuecat-purchases [3] Firebase In-App Subscriptions Made Easy - RevenueCat — https://www.revenuecat.com/docs/integrations/third-party-integrations/firebase-integration [6] Implementing a Complex Subscription Model with Periodic Credit Grants — https://community.revenuecat.com/sdks-51/implementing-a-complex-subscription-model-with-periodic-credit-grants-using-revenuecat-4417 [7] Revenuecat Subscriptions and Credit System Implementing — https://community.revenuecat.com/third-party-integrations-53/revenuecat-subscriptions-and-credit-system-implementing-5793 [9] FlutterFlow vs Bubble Pricing Comparison - DevMatrix — https://www.devmatrix.us.com/flutterflow/pricing/flutterflow-vs-bubble-pricing-comparison [11] Claude 3.5 Haiku vs Claude 3 Haiku (Comparative Analysis) — https://blog.galaxy.ai/compare/claude-3-5-haiku-vs-claude-3-haiku [12] The new Claude 3.5 Sonnet vs Claude 3.5 Haiku — https://medium.com/@bernardloki/the-new-claude-3-5-sonnet-vs-claude-3-5-haiku-a-comprehensive-breakdown-2b46e22be8dd [13] Bubble vs. FlutterFlow: Which Is the Best Platform for Scalable Apps? — https://blog.flutterflow.io/bubble-vs-flutterflow-which-is-the-best-platform-for-scalable-apps/ [14] FlutterFlow vs Bubble: Key Differences, Pricing, and Use Cases — https://cybernews.com/ai-tools/flutterflow-vs-bubble/ [15] Bubble vs FlutterFlow (2026): Which Is Better? - Goodspeed Studio — https://goodspeed.studio/blog/comparing-flutterflow-and-bubble-the-ultimate-guide