Skip to content

Latest commit

 

History

History
92 lines (74 loc) · 5.19 KB

File metadata and controls

92 lines (74 loc) · 5.19 KB

Análisis de costos — Producción

Estimación de costos de operar el sistema en producción (dashboard + demonio + notificaciones WhatsApp), y en qué punto del flujo se gastan tokens de LLM.

Actualización 2026-07-23 — ver ADR 007: se agregó un log real de costos por llamada (llm_call_log, expuesto en GET /costos y python -m app.cli --cost-report) y se corrigió un bug donde los comentarios NO-pregunta se reclasificaban en cada corrida del daemon por no quedar memorizados. Los costos medidos en producción (~$0.0095/pregunta, ~$0.0012/no-pregunta) confirmaron que las estimaciones de este documento eran correctas en orden de magnitud — las tablas de abajo se dejan como estaban, ver el ADR para las cifras reales.

1. Dónde se consumen tokens en el flujo

El polling del demonio (app/daemon.py, hoy un Cron Job de Railway que corre 1-2 veces al día como red de seguridad del webhook — ver ADR 006) no consume tokens por sí solo. Cada corrida:

  1. Llama a la Graph API de Facebook para traer posts/comentarios → gratis, sin costo de tokens.
  2. Solo si encuentra un comentario nuevo (que no esté ya en la base de datos) entran las llamadas a Claude:
    • Siempre una llamada de clasificación (classifier.classify_one, prompt corto, max_tokens=200).
    • Solo si es_pregunta=true, una segunda llamada de generación de respuesta (responder.generate, prompt grande con few-shot, max_tokens=600).

Si en una corrida de sync no hay comentarios nuevos (el caso normal ahora que el webhook ya procesó todo en tiempo real), el costo de LLM de esa corrida es $0 — el gasto depende de cuántos comentarios nuevos aparecen, no de la frecuencia del cron. Subir la cadencia del cron solo aumenta llamadas a la Graph API de Facebook (gratis), no el gasto en Claude.

Modelo configurado (app/llm_client.py): claude-sonnet-4-6 — $3 / $15 por millón de tokens (input / output).

Llamada Cuándo ocurre Input aprox. Output aprox. Costo aprox.
Clasificación Cada comentario nuevo ~380 tokens ~50 tokens ~$0.002
Generación de respuesta Solo si es pregunta ~1,400 tokens (el few-shot de response_generator.py pesa la mayoría) ~250 tokens ~$0.008

Estimación por tamaño de prompt, no medición exacta con count_tokens — el orden de magnitud es lo que importa para presupuestar.

2. Costos de producción por componente

Componente Costo Notas
Facebook Graph API $0 Leer comentarios y publicar respuestas no tiene costo
Anthropic (Claude) ~$0.002/comentario clasificado + ~$0.008/pregunta respondida Ver tabla arriba
Kapso $0 hasta 2,000 mensajes/mes (plan Free) Pro ($25/mes, 100,000 mensajes) recién si se supera eso; el Free incluye 1 número real conectado + sandbox
Meta (plantillas WhatsApp) ~$0.004–$0.046 por mensaje de plantilla (categoría "utility"), varía por país — Perú no confirmado con cifra exacta oficial Solo aplica en producción con número real, no en el sandbox de desarrollo (ver WHATSAPP_SETUP.md)
Hosting (Railway) $5/mes base (plan Hobby) + uso Cubre web (siempre activo, sirve el webhook) + Postgres; el demonio ahora es un Cron Job (1-2 corridas/día de segundos, no un servicio 24/7) — su costo pasó a ser marginal, ver ADR 006
ngrok $0 Solo se usa en desarrollo local, no en producción

3. Estimación mensual — ejemplo con 100 comentarios/mes

Supuestos (ajustables — depende de la mezcla real de comentarios):

  • 100 comentarios llegan por Facebook en el mes.
  • 70% son preguntas reales (es_pregunta=true).
  • De esas 70, ~50 necesitan notificación por WhatsApp (el resto se auto-publica por ser comercial + confianza alta, sin notificar al dueño).
Concepto Cálculo Costo
Clasificación (100 comentarios) 100 × $0.002 $0.20
Generación de respuesta (70 preguntas) 70 × $0.008 $0.56
Plantillas Meta (50 notificaciones) 50 × ~$0.01 promedio $0.50 (rango $0.20–$2.30)
Kapso dentro del Free tier $0.00
Hosting Railway base + uso liviano $5–$10
Total ≈ $6–$12/mes

Conclusión: a este volumen, tokens de Claude y mensajería de WhatsApp son prácticamente ruido (menos de $1.50/mes combinados) — el hosting en Railway es el único costo que realmente pesa. Si el volumen crece 10x (1,000 comentarios/mes), se seguiría dentro del Free tier de Kapso y el gasto en Claude subiría a ~$7–8/mes, todavía menor que el hosting.

Fuentes

Nota: los precios de Meta por país y los planes de los proveedores pueden cambiar — verificar contra el panel oficial de cada uno antes de presupuestar a largo plazo.