Dual Business Models
Cabina operates on two independent yet complementary business models within a single platform. This architecture allows the platform to serve both direct consumers and white-label resellers without code duplication.Overview
Model A: B2C Public App
How It Works
Users discover the app organically (SEO, social media, referrals), create an account, and purchase credits to generate AI photos on-demand.Key Characteristics
Target Audience
Direct consumers who want AI photos for personal use
Monetization
Direct credit sales via Mercado Pago (500 credits = ~$10 USD)
Authentication
Required - Email/Google OAuth
Credit Deduction
From user’s
profiles.credits balanceUser Flow
Discovery
User finds the app via:
- Organic search (SEO)
- Social media posts
- Referral links (referral system built-in)
Purchase Credits
When credits run low, users buy packs:
| Pack | Credits | Price (ARS) | Price (USD) |
|---|---|---|---|
| Starter | 500 | $1,500 | ~$10 |
| Popular | 1,500 | $3,900 | ~$25 |
| Pro | 3,000 | $6,900 | ~$45 |
Revenue Streams
Direct Sales: 100% of revenue from credit purchases goes to the platform (minus Mercado Pago fees ~5%)
Model B: B2B2C Event / White-Label
How It Works
Resellers (Partners) purchase credits in bulk, create branded events for their clients, and guests generate photos without registration using a zero-friction QR code system.Key Characteristics
Target Audience
Event agencies, photographers, party planners
Monetization
Bulk credit sales to Partners (wholesale pricing)
Authentication
NOT required for guests - Zero friction access
Credit Deduction
From event pool (
events.credits_allocated) atomicallyPartner (Reseller) Flow
Purchase Credits
Partner buys credits at wholesale rates:
- 10,000 credits = 100 retail)
- Credits stored in
partnerstable - Can be distributed across multiple events
Configure Branding
Partner customizes event appearance:
- Logo: Upload via Supabase Storage
- Color: Hex color picker → CSS variables
- Styles: Select from 45+ available AI styles
- Welcome Message: Custom greeting text
Branding is applied dynamically at runtime via CSS variables. See Multi-Tier System for details.
Client (Event Host) Experience
Limited Access: Clients (e.g., “papá del quinceañero”) can view their event dashboard with a PIN, but cannot create new events or modify branding.
- View live gallery of generated photos
- Download QR code
- See credit usage stats
- Cannot: Create events, change branding, access other events
Guest (Zero-Friction) Experience
Event Validation
Platform validates:
- Event exists
- Within date range (start_date ≤ now ≤ end_date)
- Credits available (allocated - used > 0)
Revenue Streams
Wholesale Credit Sales
Partners buy credits at 50% discount, resell to clients at markup
Subscription Plans
Monthly subscriptions for high-volume partners (future)
White-Label Licensing
Annual fee for full white-label deployment (future)
Custom AI Styles
Premium charge for training custom brand styles (future)
Comparison Table
| Feature | B2C Public App | B2B2C Events |
|---|---|---|
| Authentication | Required | Not required (guests) |
| Credit Source | profiles.credits | events.credits_allocated |
| Payment | Mercado Pago (per user) | Bulk purchase (partner) |
| Branding | Fixed platform branding | Custom per event |
| Dashboard | User history view | 3-tier (Master/Partner/Client) |
| URL Structure | app.metalabia.com | app.metalabia.com?event=slug |
| Target Market | General consumers | Event agencies, photographers |
| Pricing | $10 per 500 credits | $5 per 500 credits (wholesale) |
| Analytics | Per-user stats | Per-event + partner stats |
Code Organization
Shared Components
Both models share:- AI generation engine (
src/hooks/useGeneration.ts) - Style library (
src/lib/constants.ts) - Database client (
src/lib/supabaseClient.ts) - Camera interface (
src/components/UploadCard.tsx)
Model-Specific Code
B2C Only:src/App.tsx- Main app logicsrc/components/PacksView.tsx- Credit purchase UIsrc/components/Auth.tsx- Login/signup
src/components/kiosk/GuestExperience.tsx- Zero-friction UIsrc/components/dashboards/PartnerDashboard.tsx- Reseller panelsrc/components/dashboards/ClientDashboard.tsx- Event host panelsrc/components/dashboards/Admin.tsx- Master control
Next Steps
Multi-Tier System
Understand the 4-level hierarchy: Master → Partner → Client → Guest
Credit System
Learn how atomic credits prevent race conditions
Event System
Deep dive into event lifecycle and zero-friction access
Architecture
See how both models coexist in the codebase