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 enGET /costosypython -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.
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:
- Llama a la Graph API de Facebook para traer posts/comentarios → gratis, sin costo de tokens.
- 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).
- Siempre una llamada de clasificación (
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.
| 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 |
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.
- Precios de Claude: tabla de modelos vigente de Anthropic (
claude-sonnet-4-6, $3/$15 por MTok). - Kapso Pricing / Pricing FAQ
- WhatsApp Business API Pricing 2026 — Blueticks
- Railway Pricing 2026
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.