miinventario-v2/docs/97-adr/ADR-0001-modelo-creditos-tokens.md
rckrdmrd 1a53b5c4d3 [MIINVENTARIO] feat: Initial commit - Sistema de inventario con análisis de video IA
- 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>
2026-01-13 02:25:48 -06:00

3.9 KiB

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

// 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


Ultima Actualizacion: 2026-01-10