- Backend NestJS con módulos de autenticación, inventario, créditos - Frontend React con dashboard y componentes UI - Base de datos PostgreSQL con migraciones - Tests E2E configurados - Configuración de Docker y deployment Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
170 lines
3.9 KiB
Markdown
170 lines
3.9 KiB
Markdown
# ADR-0001: Modelo de Creditos/Tokens
|
|
|
|
---
|
|
id: ADR-0001
|
|
type: ADR
|
|
status: Aceptado
|
|
created_date: 2026-01-10
|
|
updated_date: 2026-01-10
|
|
decision_date: 2026-01-10
|
|
deciders: ["Tech Lead", "Product Owner"]
|
|
---
|
|
|
|
## Estado
|
|
|
|
**Aceptado**
|
|
|
|
---
|
|
|
|
## Contexto
|
|
|
|
MiInventario necesita un modelo de monetizacion que:
|
|
- Sea accesible para pequenos negocios en Mexico
|
|
- Permita pago por consumo (no suscripcion fija)
|
|
- Sea transparente y justo
|
|
- Escale con los costos reales de IA
|
|
- Permita promociones y referidos
|
|
|
|
Los costos de procesamiento de IA (OpenAI, Claude, etc.) son variables y pueden cambiar. Necesitamos un modelo que abstraiga estos costos del usuario final mientras mantenemos margenes saludables.
|
|
|
|
---
|
|
|
|
## Decision
|
|
|
|
Implementar un **modelo de creditos/tokens** con las siguientes caracteristicas:
|
|
|
|
1. **Creditos como moneda interna**
|
|
- 1 credito ≈ 1 sesion de inventario promedio
|
|
- Los usuarios compran creditos con dinero real
|
|
- Los creditos se consumen al usar el servicio
|
|
|
|
2. **Precio = 2x COGS**
|
|
- El precio al usuario es el doble del costo real de IA
|
|
- Garantiza 50% de margen bruto
|
|
- Se ajusta dinamicamente segun costos
|
|
|
|
3. **Paquetes fijos en MXN**
|
|
- Paquetes de $50, $100, $200, $500 MXN
|
|
- Los creditos que otorgan varian segun costo actual
|
|
- Precio predecible para el usuario
|
|
|
|
4. **Transparencia**
|
|
- El usuario ve cuantos creditos consume
|
|
- Puede ver el equivalente en pesos
|
|
- Historial detallado de transacciones
|
|
|
|
---
|
|
|
|
## Opciones Consideradas
|
|
|
|
### Opcion A: Suscripcion Mensual
|
|
|
|
| Aspecto | Valor |
|
|
|---------|-------|
|
|
| Modelo | $99-299 MXN/mes |
|
|
| Sesiones | Ilimitadas o tope |
|
|
| Predictibilidad | Alta para usuario |
|
|
| Riesgo | Alto uso = perdida |
|
|
|
|
**Descartada:** Riesgo de usuarios que abusan del servicio, no escala con costos.
|
|
|
|
### Opcion B: Pago por Sesion
|
|
|
|
| Aspecto | Valor |
|
|
|---------|-------|
|
|
| Modelo | $X por sesion |
|
|
| Precio | Fijo o variable |
|
|
| Transparencia | Alta |
|
|
| Complejidad | Media |
|
|
|
|
**Descartada:** Menos flexible para promociones y referidos.
|
|
|
|
### Opcion C: Creditos/Tokens (Seleccionada)
|
|
|
|
| Aspecto | Valor |
|
|
|---------|-------|
|
|
| Modelo | Compra creditos, consume al usar |
|
|
| Precio | 2x costo IA |
|
|
| Flexibilidad | Alta |
|
|
| Complejidad | Media-Alta |
|
|
|
|
**Seleccionada:** Mejor balance entre flexibilidad, transparencia y rentabilidad.
|
|
|
|
---
|
|
|
|
## Consecuencias
|
|
|
|
### Positivas
|
|
|
|
- **Margen garantizado**: Siempre 50% sobre costos
|
|
- **Escalable**: Si costos suben, precios se ajustan
|
|
- **Flexible**: Promociones, bonos, referidos faciles
|
|
- **Justo**: Usuario paga por lo que usa
|
|
- **Predecible**: Paquetes en MXN fijos
|
|
|
|
### Negativas
|
|
|
|
- **Complejidad**: Sistema de wallet, transacciones
|
|
- **Confusion potencial**: Usuario debe entender creditos
|
|
- **Volatilidad**: Creditos por paquete pueden variar
|
|
- **Contabilidad**: Ingresos diferidos (creditos no usados)
|
|
|
|
---
|
|
|
|
## Metricas de Exito
|
|
|
|
| Metrica | Objetivo |
|
|
|---------|----------|
|
|
| Margen bruto | >= 50% |
|
|
| Creditos sin usar (30 dias) | < 20% |
|
|
| Conversion a compra | > 30% |
|
|
| Recompra | > 60% |
|
|
|
|
---
|
|
|
|
## Implementacion
|
|
|
|
### Modelos de Datos
|
|
|
|
```typescript
|
|
// Wallet de creditos
|
|
interface CreditWallet {
|
|
userId: string;
|
|
balance: number; // Creditos disponibles
|
|
reserved: number; // Creditos en sesiones activas
|
|
lifetimeCredits: number;
|
|
lifetimeSpent: number;
|
|
}
|
|
|
|
// Transaccion
|
|
interface CreditTransaction {
|
|
walletId: string;
|
|
type: 'PURCHASE' | 'CONSUMPTION' | 'REFUND' | 'BONUS' | 'REFERRAL';
|
|
amount: number;
|
|
referenceType: string;
|
|
referenceId: string;
|
|
}
|
|
|
|
// COGS
|
|
interface COGSRecord {
|
|
sessionId: string;
|
|
provider: string;
|
|
framesProcessed: number;
|
|
costUSD: number;
|
|
costMXN: number;
|
|
priceToUser: number; // 2x costMXN
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Referencias
|
|
|
|
- [VISION-PROYECTO.md](../00-vision-general/VISION-PROYECTO.md) - Modelo de negocio
|
|
- [MII-009](../01-epicas/MII-009-wallet-creditos.md) - Implementacion wallet
|
|
- [MII-010](../01-epicas/MII-010-paquetes-recarga.md) - Paquetes
|
|
|
|
---
|
|
|
|
**Ultima Actualizacion:** 2026-01-10
|