Pricing & Cost Analysis
Desglose completo de costos, margenes y configuracion de planes para NorthTec AI
Stack de Modelos AI
Cada componente del sistema usa el modelo optimo para su tarea, balanceando costo y calidad.
| Componente | Modelo | Input / 1M tokens | Output / 1M tokens | Archivo |
|---|---|---|---|---|
| Chat principal Widget + WhatsApp + API |
gpt-5-mini | $0.25 | $2.00 | stream.ts:161 |
| Analisis de documentos Resumen + topicos |
gemini-2.5-flash-lite | $0.10 | $0.40 | gemini.ts:83 |
| Fallback analisis Si flash-lite falla |
gemini-2.5-flash | $0.30 | $2.50 | gemini.ts:108 |
| Extraccion PDF con vision Tablas rotas / OCR |
gemini-2.5-flash | $0.30 | $2.50 | gemini.ts:149 |
| Embeddings Vectores para RAG |
$0.15 | $0.00 | embeddingService.ts |
gpt-5-mini) compartido entre los 3 canales (Widget, WhatsApp, API) a traves de runChatWithToolsStream().
Pipeline de Procesamiento
Arquitectura de modelos desde la ingesta del documento hasta la respuesta al usuario.
Indexacion de documentos
Chat con usuario
Costo por Mensaje (Unitario)
Desglose del costo real de cada mensaje del asistente, asumiendo ~700 tokens input y ~200 tokens output promedio.
| Servicio | Costo / mensaje | Notas |
|---|---|---|
| OpenAI gpt-5-mini (input ~700 tokens) | $0.000175 | System prompt + historial + mensaje |
| OpenAI gpt-5-mini (output ~200 tokens) | $0.0004 | Respuesta del asistente |
| OpenAI total | $0.0006 | Sin tools. Con tools: ~$0.001-0.002 |
| Firestore (3 reads + 4 writes) | $0.00001 | Despreciable |
| WhatsApp Meta (ventana 24h) | $0.00 | Gratis dentro de ventana de servicio |
| Gemini embedding (si RAG) | $0.00003 | $0.15/1M tokens, ~200 tokens query |
| Pinecone query (si RAG) | $0.004 | ~0.25 RU minimo x $16/1M RU |
Servicios Externos
WhatsApp Business API (Meta)
| Tipo de mensaje | Costo | Notas |
|---|---|---|
| Servicio (ventana 24h) | Gratis | Cuando el usuario escribe primero. Ilimitado desde Nov 2024 |
| Marketing (template) | $0.0625 - $0.086 | Varia por pais. Mas caro en LATAM |
| Utilidad (template) | $0.0008 - $0.014 | Confirmaciones, alertas |
| Autenticacion (OTP) | $0.008 - $0.014 | Codigos de verificacion |
Pinecone (Vector DB)
| Operacion | Costo | Notas |
|---|---|---|
| Read Units (queries) | $16 / 1M RUs | Plan Standard. Min 0.25 RU por query |
| Write Units (indexacion) | $2 / 1M WUs | Solo al indexar documentos |
| Storage | $0.33 / GB / mes | Vectores + metadata |
Firestore Operations
Operaciones de Firestore por mensaje en cada canal.
| Canal | Reads | Writes | Costo / mensaje |
|---|---|---|---|
| Widget / API | 3 | 4 (incluye usage counter) | ~$0.00001 |
| 3 (paralelo) | 5 (incluye WA key + usage counter) | ~$0.000013 |
wa_lookups (coleccion innecesaria) y loadConversationContext (read redundante). De 6 reads bajamos a 3 por mensaje en WhatsApp.
Planes Personales
Sin WhatsApp. Solo canal web (Widget + API).
| Plan | Precio | Msgs/mes | Docs | Productos | Usuarios | Storage | |
|---|---|---|---|---|---|---|---|
| personal_free | Gratis | 30 conv | 3 | 2 | 1 | 10 MB | ✗ |
| personal_starter | $49 | 300 conv | 20 | 5 | 1 | 50 MB | ✗ |
| personal_pro | $99 | 1,000 conv | 75 | 25 | 2 | 250 MB | ✗ |
Planes PyME
Con WhatsApp Business. Web + WhatsApp + API.
| Plan | Precio | Implementacion | Msgs/mes | Docs | Productos | Usuarios | WA #s | Storage |
|---|---|---|---|---|---|---|---|---|
| pyme_starter | $499 | $0 | 1,500 conv | 75 | 25 | 2 | 1 | 250 MB |
| pyme_business | $999 | $500 | 5,000 conv | 250 | 100 | 5 | 5 | 1 GB |
| pyme_scale | $1,499 | $1,000 | 15,000 conv | 500 | 250 | 10 | 10 | 5 GB |
Proyeccion de Margenes
Estimacion asumiendo uso al 100% del limite del plan, ~5 mensajes por conversacion, ~50% de mensajes usando RAG.
| Plan | Precio | Costo OpenAI | Firestore | RAG | Costo Total | Margen |
|---|---|---|---|---|---|---|
| personal_free | $0 | $0.03 | $0.001 | - | $0.03 | -$0.03 |
| personal_starter | $49 | $0.45 | $0.01 | - | $0.46 | 99.1% |
| personal_pro | $99 | $1.50 | $0.04 | $2.50 | $4.04 | 95.9% |
| pyme_starter | $499 | $4.50 | $0.05 | $7.50 | $12.05 | 97.6% |
| pyme_business | $999 | $15.00 | $0.18 | $25.00 | $40.18 | 96.0% |
| pyme_scale | $1,499 | $45.00 | $0.54 | $75.00 | $120.54 | 92.0% |
gpt-5-mini. Con el modelo anterior (gpt-4.1), los costos eran 5x mayores y los margenes estaban entre 65-89%.
Comparacion de modelos (costo por mensaje)
| Modelo | Input / 1M | Output / 1M | Costo / mensaje | vs gpt-5-mini |
|---|---|---|---|---|
| gpt-5-mini (actual) | $0.25 | $2.00 | $0.0006 | - |
gpt-4.1 (anterior) |
$2.00 | $8.00 | $0.003 | 5x mas caro |
gpt-4.1-mini (fallback) |
$0.40 | $1.60 | $0.0006 | ~igual |
gpt-5-nano (auxiliar) |
$0.05 | $0.40 | $0.0001 | 6x mas barato |
Contador de Uso Global
Contador de mensajes del asistente por cliente, desglosado por canal. Se incrementa en el fire-and-forget existente (0 reads extra, 1 write merge).
Ubicacion en Firestore
clients/{userId}/private/usage
{
messages: { // total global
"2025-12": 3580,
"2026-01": 142
},
whatsapp: { // solo WhatsApp
"2025-12": 2100,
"2026-01": 85
},
widget: { // solo Widget
"2025-12": 1200,
"2026-01": 45
},
api: { // solo API
"2025-12": 280,
"2026-01": 12
},
lastMessageAt: Timestamp
}
Lectura en el Admin
const usageSnap = await db
.collection("clients").doc(userId)
.collection("private").doc("usage")
.get();
const usage = usageSnap.data();
const currentMonth = "2026-01";
const totalMessages = usage?.messages?.[currentMonth] || 0;
const whatsappMessages = usage?.whatsapp?.[currentMonth] || 0;
const widgetMessages = usage?.widget?.[currentMonth] || 0;
const apiMessages = usage?.api?.[currentMonth] || 0;
Archivos modificados
| Archivo | Cambio |
|---|---|
agents/utils/usageCounter.ts | Helper incrementMonthlyMessageCount(userId, channel) |
agents/assistant/stream.ts | Agregado al fire-and-forget (Widget/API) |
agents/whatsapp/handleWhatsAppWebhook.ts | Agregado al fire-and-forget (WhatsApp) |
Observabilidad
Logs estructurados para detectar cuando se necesitan ajustes en modelos, chunks o configuracion.
| Senal | Log | Que significa | Accion |
|---|---|---|---|
| Flash-lite fallback | flash-lite respuesta sin estructura valida |
flash-lite no pudo generar JSON valido | Si >20% → volver a gemini-2.5-flash |
| Fallback exitoso | analisis completado con fallback a flash |
flash-lite fallo, flash lo resolvio | Monitorear tasa de fallback |
| Chunk grande | chunk excede limite de tokens |
Chunk >8192 chars (~2048 tokens) | Bajar chunk size o revisar docs |
| Respuesta vacia | respuesta vacia del modelo |
gpt-5-mini no genero nada | Revisar system prompt o subir modelo |
| Respuesta corta | respuesta muy corta (<20 chars) |
Respuesta tipo "Ok" sin contenido | Ajustar prompt si es frecuente |
| Tool loop | tool loop exhausted (6/6) |
Modelo entro en loop de tools | Simplificar tools o subir modelo |
| RAG miss | 0 chunks encontrados |
No encontro docs relevantes | Revisar embeddings/docs indexados |
Filtro en Cloud Logging
resource.type="cloud_run_revision" jsonPayload.msg=~"fallback|truncamiento|vacia|muy corta|exhausted|0 chunks"
RAG & Chunking
Configuracion actual
| Parametro | Valor | Archivo |
|---|---|---|
| Max chunk size | 800 palabras (~1000-1200 tokens) |
textSplitter.ts |
| Min chunk size | 100 palabras |
textSplitter.ts |
| Overlap | 1 oracion |
textSplitter.ts |
| Max chunks por doc | 200 |
extractAndChunk.ts |
| Embedding max tokens | 2048 |
gemini-embedding-001 |
| Pinecone topK | Configurable (default 5) | tools.handlers.ts |
| Pinecone minScore | 0.3 |
tools.handlers.ts |
Estrategia de chunking
Equipo & Operacion
Sizing del equipo recomendado por fase de crecimiento. La plataforma esta disenada para operar con equipo minimo gracias a infra serverless (Cloud Run, Firestore) y auto-scaling.
Fase 1 — Lanzamiento y traccion (Meses 1-6)
| Rol | Cant. | Costo/mes | Responsabilidad |
|---|---|---|---|
| Dev Senior Full-Stack | 1 | $3,000 - $5,000 | Core del producto, AI, integraciones, bugs, onboarding tecnico |
| Total equipo | 1 | $3,000 - $5,000 |
Fase 2 — Crecimiento (Meses 6-12, ~50-150 clientes pagos)
| Rol | Cant. | Costo/mes | Responsabilidad |
|---|---|---|---|
| Dev Senior (Backend/AI) | 1 | $3,000 - $5,000 | Core AI, modelos, RAG, performance, nuevas features |
| Dev Mid (Frontend/Admin) | 1 | $2,000 - $3,500 | Admin panel, dashboard clientes, landing, onboarding UX |
| Customer Success | 1 | $1,500 - $2,500 | Configurar asistentes, onboarding PyMEs, soporte nivel 1 |
| Total equipo | 3 | $6,500 - $11,000 |
Fase 3 — Escala (Meses 12-24, ~150-500 clientes pagos)
| Rol | Cant. | Costo/mes | Responsabilidad |
|---|---|---|---|
| Dev Senior (Backend/AI) | 1 | $3,000 - $5,000 | Arquitectura, AI, integraciones enterprise |
| Dev Mid (Frontend) | 1 | $2,000 - $3,500 | Admin panel, dashboards, reportes, UX |
| Dev Mid (Backend) | 1 | $2,000 - $3,500 | Nuevos canales (Telegram, IG), automations, CRM integrations |
| Customer Success | 1 | $1,500 - $2,500 | Onboarding, soporte, capacitacion |
| Ventas / Growth | 1 | $1,500 + com. | Adquisicion de clientes PyME, partnerships, expansion regional |
| Total equipo | 5 | $10,000 - $16,500 |
Equipo vs MRR
| Fase | MRR esperado | Costo equipo | % del MRR | Resultado |
|---|---|---|---|---|
| Fase 1 (mes 6) | $11,246 | $5,000 | 44% | Rentable |
| Fase 2 (mes 12) | $31,347 | $11,000 | 35% | Rentable |
| Fase 3 (mes 24) | $93,532 | $16,500 | 18% | Muy rentable |
Ultima actualizacion: Enero 2026 · NorthTec AI Backend · Proyecto: northtec-c1d07