"Cada compra es el inicio de la siguiente"
Cada cliente que compra costó dinero atraerlo. La página de "Gracias" actual no hace nada con ese momento de máxima predisposición de compra.
El CAC sube cada año. Margen de 40% sobre $40 = $16, pero gastó $15. Casi nada.
Tasa de recompra bajísima. No sabe si fue precio, servicio o simplemente se olvidó.
Intuye que "zapatillas + medias", pero no tiene datos ni forma automatizada de hacerlo.
Texto genérico con número de orden. El cajero que entrega la bolsa y voltea la cara.
Cambia títulos, baja precios, prueba mensajes... y no sabe si mejoró o empeoró.
El momento en que un cliente acaba de pagar es el único momento del día en que esa persona tiene la mente completamente abierta a comprar algo de tu tienda.
Tiendanube actualmente desperdicia ese momento con una página en blanco. NubeProfit lo captura.
| Tipo de App | ¿Existe? | Observación |
|---|---|---|
| Upsell en carrito (pre-pago) | CrossUP | Solo antes del pago |
| Post-purchase upsell | No existe | ← El gap que atacamos |
| Página de gracias personalizable | No existe | Gap adicional |
| Downsell automático | No existe | Gap adicional |
| A/B testing de ofertas | No existe | Gap adicional |
| Encuesta post-compra | No existe | Gap adicional |
Cada módulo resuelve un problema específico del vendedor. El módulo Core es suficiente para demostrar valor desde el día 1.
Oferta especial one-click inmediatamente después del pago. Sin formularios, sin fricción.
Si rechazan el upsell → oferta alternativa más barata. Segunda oportunidad de conversión.
Drag & drop sin código. Bloques configurables por plan.
Datos de atribución que Google Analytics no puede capturar.
Distribuye 50/50 entre clientes reales. Activa la ganadora automáticamente.
Retención automática. Se crea en Tiendanube vía API.
Viralidad orgánica — diferenciador único para LATAM.
| Capa | Tecnología | Propósito |
|---|---|---|
| Backend | Laravel 11 | API, webhooks, lógica |
| Base de datos | MySQL 8 | Datos principales |
| Caché / Colas | Redis | Jobs async, sesiones |
| Frontend panel | Vue 3 + Inertia | Panel del vendedor |
| Página upsell | Blade + JS | Velocidad máxima |
| Monitor jobs | Laravel Horizon | Webhooks en tiempo real |
| Auth | OAuth 2.0 | Instalación de la app |
| Servidor | VPS Ubuntu 24 | 2GB RAM mínimo |
GET /products/{id}/variants) antes de mostrar la oferta. Si stock = 0 → pasa al siguiente producto en la lista de prioridad de la regla. Si todos sin stock → fallback a oferta global o se omite.Sin código, sin técnicos. El vendedor entra al panel, define "si compran X → ofrecerles Y con Z% de descuento" y empieza a vender más desde el mismo día.
order/paid, el Job consulta primero la tabla upsell_rules filtrando por product_id → luego por category_id → luego la regla global. Toma la primera con stock disponible según el orden de prioridad configurado.
El vendedor ve en su dashboard exactamente cuánto genera la app. Si genera $500 extra → pagar $39 es obvio.
| Período | Tiendas | Precio prom. | MRR |
|---|---|---|---|
| Mes 3 | 20 | $25 USD | $500 |
| Mes 6 | 60 | $28 USD | $1,680 |
| Año 1 | 100 | $30 USD | $3,000 |
| Año 2 | 250 | $32 USD | $8,000 |
| Año 3 | 500 | $35 USD | $17,500 |
El margen escala sin costos variables significativos.
El sistema mira hacia adelante, no solo hacia atrás. Detecta automáticamente si una tienda está en riesgo de irse antes de que eso ocurra.