RBS Ecosystem Pricing Architecture
Created: January 23, 2026 Status: PROPOSAL - Pending Implementation Purpose: Unified pricing model that preserves app value while enabling ecosystem growth
Executive Summary
This document proposes a pricing architecture that:
- Preserves individual app value - Each app maintains independent pricing
- Rewards ecosystem adoption - Bulk discounts for multi-app self-service tenants
- Enables enterprise customization - Sales Copilot manages custom deals
- Tracks consumption - Overage billing for shared resources
- Increases revenue with integrations - Each integration adds to monthly billing
Part 1: Refactored Strategic Priorities
Immediate Priorities (Q1 2026 - Remaining)
| Priority | Gap | Impact | Effort |
|---|---|---|---|
| P0 | Extract @rbs/payments shared package | Eliminates 8+ duplicated files, single source of truth | 2 weeks |
| P0 | Implement webhook idempotency in all apps | Prevents duplicate payments/actions | 1 week |
| P1 | Complete MercadoPago webhook flow | Enables card payments >$8K MXN | 1 week |
| P1 | Create ecosystem_pricing tables in Camino | Foundation for unified billing | 1 week |
| P2 | Build Sales Copilot deal configuration UI | Enables enterprise custom pricing | 2 weeks |
Short-term Priorities (Q2 2026)
| Priority | Gap | Impact |
|---|---|---|
| P1 | Implement overage tracking & billing | Revenue from high-usage tenants |
| P1 | Build ecosystem billing dashboard | Consolidated invoicing |
| P2 | Design Layer 3 (tenant subscriptions) | Tenants can bill their customers |
| P2 | Add bundle discount automation | Self-service multi-app discounts |
Deferred (Q3-Q4 2026)
| Priority | Item | Rationale |
|---|---|---|
| P3 | Mobile apps for POS | After billing infrastructure complete |
| P3 | Colombia DIAN compliance | After pricing model validated |
| P4 | White-label solutions | Requires stable multi-tenant billing |
Part 2: Ecosystem Pricing Architecture
Core Principles
1. ADDITIVE MODEL
Each app subscription ADDS to monthly billing
Integrations ADD features, not replace subscriptions
2. VALUE PRESERVATION
Caracol at $425/user is worth $425/user
Adding Camino doesn't reduce Caracol's price
3. ECOSYSTEM REWARDS
Multi-app tenants get bulk discounts (5-15%)
Discounts apply to base subscriptions, not overages
4. CONSUMPTION BILLING
Shared resources (AI, stamps, voice) have soft limits
Overages billed at tier-specific rates
Enterprise gets best overage ratesPricing Tiers Overview
┌─────────────────────────────────────────────────────────────────────────────┐
│ RBS ECOSYSTEM PRICING MODEL │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ TIER 1: SELF-SERVICE (Individual Apps) │
│ ├── Each app has its own subscription │
│ ├── No minimum commitment │
│ ├── Standard overage rates │
│ └── Bundle discount when 2+ apps subscribed │
│ │
│ TIER 2: SELF-SERVICE BUNDLE (Multi-App Discount) │
│ ├── 2 apps: 5% discount on base subscriptions │
│ ├── 3 apps: 10% discount on base subscriptions │
│ ├── 4+ apps: 15% discount on base subscriptions │
│ └── Discounts do NOT apply to overages or add-ons │
│ │
│ TIER 3: ENTERPRISE (Custom via Sales Copilot) │
│ ├── Custom per-user rates negotiated │
│ ├── Custom implementation fees │
│ ├── Custom overage rates (best rates available) │
│ ├── Custom allocation limits │
│ ├── SLA-backed support │
│ └── Managed through Camino Sales Copilot │
│ │
└─────────────────────────────────────────────────────────────────────────────┘Part 3: Self-Service Pricing (Individual Apps)
App-Specific Pricing
Each app maintains its independent pricing model:
| App | Pricing Model | Base Rate | Notes |
|---|---|---|---|
| Caracol | Per management user | $425/user/mo | Operational users FREE |
| La Hoja | Tiered SaaS | $499 / $999 / $1,499/mo | Per location |
| Cosmos Pet | Tiered SaaS | $599 / $1,299 / $2,499/mo | Per clinic |
| Constanza | Tiered SaaS | $590 / $1,490 / $3,990/mo | By entities/features |
| Camino CRM | Tiered + Consumption | $499 / $1,499 / $3,999/mo | AI/Voice included |
| Agora | Tiered SaaS | TBD | Per firm |
| Plenura | Commission | 5-10% per booking | Platform commission |
| Mancha | Per-cover | TBD | Reservation system |
Implementation Fees (One-Time)
Apps with complex setup charge implementation:
| App | Básico | Profesional | Empresarial | Enterprise |
|---|---|---|---|---|
| Caracol | $12,000 | $24,000 | $38,000 | $52,500+ |
| Constanza | $5,000 | $10,000 | $20,000 | Custom |
| La Hoja | $8,000 | $15,000 | $25,000 | Custom |
| Other apps | - | - | - | As needed |
Part 4: Bundle Discounts (Self-Service Multi-App)
Discount Structure
When a tenant subscribes to multiple apps, they receive a discount on base subscriptions only:
| Apps Subscribed | Discount | Applies To |
|---|---|---|
| 2 apps | 5% | Base subscription only |
| 3 apps | 10% | Base subscription only |
| 4+ apps | 15% | Base subscription only |
Exclusions (NO discount):
- Implementation fees
- Overage charges
- Add-on purchases
- One-time stamp packs
Example: Restaurant Chain
Tenant: "Tacos El Buen Sabor" (3 locations, 5 management users)
INDIVIDUAL APP PRICING:
├── Caracol: 5 users × $425 = $2,125/mo
├── Constanza Professional: $1,490/mo
├── Mancha (reservations): $499/mo
└── Subtotal: $4,114/mo
BUNDLE DISCOUNT (3 apps = 10%):
├── Discount: $4,114 × 10% = $411.40
└── Monthly Total: $3,702.60/mo (+ IVA)
OVERAGES (billed separately, no discount):
├── AI tokens over limit: $0.08/1K tokens
├── Stamps over limit: $2.99/stamp
└── Voice over limit: $1.50/minuteBundle Detection Logic
typescript
// In Camino subscription service
async function calculateBundleDiscount(ecosystemTenantId: string): Promise<number> {
const activeSubscriptions = await getActiveSubscriptions(ecosystemTenantId);
const appCount = new Set(activeSubscriptions.map(s => s.app_name)).size;
if (appCount >= 4) return 0.15; // 15%
if (appCount >= 3) return 0.10; // 10%
if (appCount >= 2) return 0.05; // 5%
return 0; // No discount for single app
}Part 5: Enterprise Custom Pricing (Sales Copilot)
Sales Copilot Integration
Enterprise deals are managed through Camino Sales Copilot, which:
- Configures custom pricing per tenant
- Tracks deal lifecycle (proposal → negotiation → close)
- Generates contracts with custom terms
- Monitors usage against custom limits
- Alerts on renewal opportunities
Custom Pricing Configuration
Enterprise tenants have a custom_tier_config record that overrides standard pricing:
sql
-- New table in Camino Supabase
CREATE TABLE custom_tier_configs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
ecosystem_tenant_id TEXT NOT NULL UNIQUE,
-- Deal metadata (linked to Sales Copilot)
deal_id UUID REFERENCES deals(id),
sales_rep_id UUID REFERENCES users(id),
contract_start DATE NOT NULL,
contract_end DATE,
-- Custom pricing per app
app_pricing JSONB NOT NULL DEFAULT '{}',
-- Example: {
-- "caracol": { "per_user_rate": 400, "implementation_fee": 60000 },
-- "constanza": { "monthly_rate": 2500 },
-- "camino": { "monthly_rate": 2000, "ai_tokens_included": 5000000 }
-- }
-- Custom overage rates (best available)
overage_rates JSONB NOT NULL DEFAULT '{}',
-- Example: {
-- "ai_tokens": 0.03, -- per 1K (vs 0.08 standard)
-- "stamps": 1.75, -- per stamp (vs 2.99 standard)
-- "voice_minutes": 0.80 -- per minute (vs 1.50 standard)
-- }
-- Custom allocations
allocations JSONB NOT NULL DEFAULT '{}',
-- Example: {
-- "ai_tokens": null, -- unlimited
-- "stamps": 2000,
-- "voice_minutes": 1000
-- }
-- Support level
support_tier TEXT DEFAULT 'enterprise', -- standard, priority, dedicated
sla_response_hours INTEGER DEFAULT 4,
-- Metadata
notes TEXT,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Index for quick lookup
CREATE INDEX idx_custom_tier_tenant ON custom_tier_configs(ecosystem_tenant_id);Sales Copilot Deal Flow
┌─────────────────────────────────────────────────────────────────┐
│ SALES COPILOT FLOW │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. LEAD CAPTURE │
│ └── Lead enters via Camino (UTM tracking, scoring) │
│ │
│ 2. QUALIFICATION │
│ └── Sales rep assesses: Multi-app? High volume? Custom? │
│ │
│ 3. DEAL CREATION │
│ └── Create deal in Sales Copilot with: │
│ ├── Apps needed (Caracol, Constanza, Camino, etc.) │
│ ├── User counts (management, operational) │
│ ├── Volume estimates (stamps, AI, voice) │
│ └── Implementation requirements │
│ │
│ 4. PRICING CONFIGURATION │
│ └── Sales Copilot calculates: │
│ ├── Base pricing per app │
│ ├── Custom per-user rates (if negotiated) │
│ ├── Custom overage rates │
│ ├── Implementation fee │
│ └── Total contract value │
│ │
│ 5. PROPOSAL GENERATION │
│ └── Auto-generate PDF proposal with: │
│ ├── Itemized pricing │
│ ├── Feature breakdown │
│ ├── SLA terms │
│ └── Contract duration │
│ │
│ 6. NEGOTIATION │
│ └── Track changes, versions, approvals │
│ │
│ 7. CLOSE │
│ └── On deal close: │
│ ├── Create custom_tier_config record │
│ ├── Create app_subscriptions for each app │
│ ├── Set up billing in Colectiva │
│ └── Trigger onboarding workflows │
│ │
│ 8. ONGOING MANAGEMENT │
│ └── Sales Copilot monitors: │
│ ├── Usage vs allocations │
│ ├── Overage trends │
│ ├── Renewal dates │
│ └── Upsell opportunities │
│ │
└─────────────────────────────────────────────────────────────────┘Enterprise Example: Viñedos y Bodegas
ENTERPRISE DEAL: Viñedos y Bodegas
├── Contract: 12 months
├── Implementation: $60,000 (one-time)
│
├── APP SUBSCRIPTIONS (Monthly):
│ ├── Caracol: 5 mgmt users × $400 (custom rate) = $2,000
│ │ └── 15 operational users = FREE
│ ├── Constanza Professional (custom): $2,500
│ ├── Camino Business (custom): $2,000
│ └── Mancha: $400 (custom)
│
├── MONTHLY BASE: $6,900
│
├── CUSTOM ALLOCATIONS:
│ ├── AI Tokens: 5,000,000/mo (vs 2M standard Business)
│ ├── CFDI Stamps: 500/mo
│ └── Voice Minutes: 200/mo
│
├── CUSTOM OVERAGE RATES:
│ ├── AI: $0.03/1K tokens (vs $0.05)
│ ├── Stamps: $1.75/stamp (vs $2.00)
│ └── Voice: $0.80/min (vs $1.20)
│
├── SUPPORT: Dedicated (4hr SLA)
│
└── TOTAL CONTRACT VALUE:
├── Implementation: $60,000
├── Year 1 Subscription: $82,800 ($6,900 × 12)
└── Estimated Overages: ~$5,000
════════════════════════════════════
TOTAL YEAR 1: ~$147,800 MXNPart 6: Shared Resource Allocation & Overage Billing
Resource Types
| Resource | Owner | Used By | Unit |
|---|---|---|---|
| AI Tokens | Camino (Groq) | All apps with AI features | Per 1K tokens |
| CFDI Stamps | Constanza (SW PAC) | All apps with invoicing | Per stamp |
| Voice Minutes | Camino (Twilio/Vapi) | Apps with Voice AI | Per minute |
| WhatsApp Conversations | Camino (Meta) | Apps with WhatsApp | Per conversation |
| Email Sends | Camino (Resend) | All apps | Per email |
Allocation Flow
┌─────────────────────────────────────────────────────────────────┐
│ RESOURCE ALLOCATION FLOW │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. SUBSCRIPTION CREATED │
│ └── Camino creates subscription_allocations record │
│ with limits from tier (or custom_tier_config) │
│ │
│ 2. APP REQUESTS RESOURCE │
│ └── App calls Camino: POST /api/allocations/check │
│ { │
│ "ecosystem_tenant_id": "...", │
│ "resource_type": "stamps", │
│ "quantity": 5 │
│ } │
│ │
│ 3. CAMINO CHECKS ALLOCATION │
│ ├── Within limit? → Approve, decrement remaining │
│ ├── Over limit, overage allowed? → Approve, log overage │
│ └── Over limit, overage blocked? → Reject with upgrade URL │
│ │
│ 4. APP USES RESOURCE │
│ └── Constanza stamps CFDI, logs usage │
│ │
│ 5. MONTHLY BILLING │
│ └── Camino calculates: │
│ ├── Base subscription (with bundle discount if any) │
│ ├── Overage charges (usage × overage_rate) │
│ └── Total due │
│ │
│ 6. INVOICE │
│ └── Colectiva generates invoice, Constanza stamps CFDI │
│ │
└─────────────────────────────────────────────────────────────────┘Overage Rates by Tier
| Resource | Starter | Professional | Business | Enterprise |
|---|---|---|---|---|
| AI Tokens (per 1K) | Blocked | $0.08 | $0.05 | $0.03 |
| Stamps | $3.50 | $2.99 | $2.00 | $1.75 |
| Voice (per min) | Blocked | $1.50 | $1.20 | $0.80 |
| Blocked | $2.00 | $1.50 | $1.00 |
Part 7: Database Schema Changes
New Tables Required in Camino
sql
-- 1. Ecosystem tenant identity (cross-app linking)
CREATE TABLE ecosystem_tenants (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
billing_email TEXT NOT NULL UNIQUE,
company_name TEXT NOT NULL,
rfc TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 2. Custom enterprise configurations
CREATE TABLE custom_tier_configs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
ecosystem_tenant_id UUID REFERENCES ecosystem_tenants(id),
deal_id UUID REFERENCES deals(id),
app_pricing JSONB NOT NULL DEFAULT '{}',
overage_rates JSONB NOT NULL DEFAULT '{}',
allocations JSONB NOT NULL DEFAULT '{}',
support_tier TEXT DEFAULT 'standard',
contract_start DATE,
contract_end DATE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- 3. Per-app subscriptions (one per app per tenant)
CREATE TABLE app_subscriptions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
ecosystem_tenant_id UUID REFERENCES ecosystem_tenants(id),
app_name TEXT NOT NULL,
tier TEXT NOT NULL,
status TEXT NOT NULL DEFAULT 'trial',
monthly_amount DECIMAL(10,2),
implementation_fee DECIMAL(10,2),
implementation_paid BOOLEAN DEFAULT false,
trial_ends_at TIMESTAMPTZ,
current_period_start TIMESTAMPTZ,
current_period_end TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW(),
UNIQUE(ecosystem_tenant_id, app_name)
);
-- 4. Resource allocations per subscription
CREATE TABLE subscription_allocations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
subscription_id UUID REFERENCES app_subscriptions(id),
resource_type TEXT NOT NULL,
monthly_limit INTEGER,
used_this_period INTEGER DEFAULT 0,
overage_count INTEGER DEFAULT 0,
reset_at TIMESTAMPTZ,
PRIMARY KEY (subscription_id, resource_type)
);
-- 5. Usage log for audit and billing
CREATE TABLE service_usage_log (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
ecosystem_tenant_id UUID REFERENCES ecosystem_tenants(id),
app_name TEXT NOT NULL,
resource_type TEXT NOT NULL,
quantity INTEGER NOT NULL,
is_overage BOOLEAN DEFAULT false,
unit_cost DECIMAL(10,4),
total_cost DECIMAL(10,2),
reference_id TEXT,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- 6. Monthly billing records
CREATE TABLE ecosystem_invoices (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
ecosystem_tenant_id UUID REFERENCES ecosystem_tenants(id),
period_start DATE NOT NULL,
period_end DATE NOT NULL,
-- Breakdown
base_subscriptions_subtotal DECIMAL(10,2),
bundle_discount_percent INTEGER DEFAULT 0,
bundle_discount_amount DECIMAL(10,2) DEFAULT 0,
overages_subtotal DECIMAL(10,2) DEFAULT 0,
addons_subtotal DECIMAL(10,2) DEFAULT 0,
-- Totals
subtotal DECIMAL(10,2),
iva DECIMAL(10,2),
total DECIMAL(10,2),
-- Status
status TEXT DEFAULT 'draft',
cfdi_uuid TEXT,
paid_at TIMESTAMPTZ,
created_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indexes
CREATE INDEX idx_app_subs_tenant ON app_subscriptions(ecosystem_tenant_id);
CREATE INDEX idx_usage_log_tenant ON service_usage_log(ecosystem_tenant_id, created_at);
CREATE INDEX idx_invoices_tenant ON ecosystem_invoices(ecosystem_tenant_id, period_start);Part 8: Implementation Roadmap
Phase 1: Foundation (2 weeks)
| Task | Owner | Deliverable |
|---|---|---|
Extract @rbs/payments package | Dev | Shared npm package |
| Create ecosystem pricing tables | Dev | Supabase migrations |
| Implement webhook idempotency | Dev | All apps updated |
| Complete MercadoPago webhooks | Dev | /api/webhooks/mercadopago |
Phase 2: Self-Service Billing (2 weeks)
| Task | Owner | Deliverable |
|---|---|---|
| Build allocation checking API | Dev | POST /api/allocations/check |
| Implement bundle discount logic | Dev | Auto-calculate on billing |
| Create ecosystem billing dashboard | Dev | Colectiva /ecosystem |
| Build overage tracking | Dev | Monthly usage aggregation |
Phase 3: Enterprise Features (2 weeks)
| Task | Owner | Deliverable |
|---|---|---|
Add custom_tier_configs table | Dev | Enterprise pricing support |
| Build Sales Copilot deal UI | Dev | Pricing configurator |
| Generate PDF proposals | Dev | Contract generation |
| Implement custom overage rates | Dev | Per-tenant rates |
Phase 4: Integration Testing (1 week)
| Task | Owner | Deliverable |
|---|---|---|
| End-to-end billing flow test | QA | Test cases |
| Enterprise deal flow test | QA | Test cases |
| Multi-app bundle test | QA | Test cases |
| Overage billing test | QA | Test cases |
Part 9: Success Metrics
| Metric | Target | Measurement |
|---|---|---|
| Multi-app adoption | 30% of tenants use 2+ apps | Monthly |
| Enterprise deals | 5 enterprise contracts Q2 | Quarterly |
| Overage revenue | 15% of total revenue | Monthly |
| Bundle discount utilization | 50% of multi-app tenants | Monthly |
| Billing accuracy | 99.9% | Monthly audit |
Appendix: Pricing Quick Reference
Self-Service Individual Apps
| App | Model | Monthly Range |
|---|---|---|
| Caracol | $425/mgmt user | $425 - $4,250+ |
| La Hoja | Tiered | $499 - $1,499 |
| Cosmos Pet | Tiered | $599 - $2,499 |
| Constanza | Tiered | $590 - $3,990 |
| Camino CRM | Tiered | $499 - $3,999 |
Bundle Discounts
| Apps | Discount |
|---|---|
| 2 | 5% |
| 3 | 10% |
| 4+ | 15% |
Enterprise Customization
| Parameter | Negotiable |
|---|---|
| Per-user rate | Yes |
| Monthly subscription | Yes |
| Implementation fee | Yes |
| Overage rates | Yes (minimum floor) |
| Allocations | Yes |
| SLA terms | Yes |
| Contract length | Yes |
Document created: January 23, 2026Next review: After Phase 1 completion