Volver al Blog
AI AgentsStripeTelegramAutomation

Automatiza tu resumen de MRR de Stripe con un agente de IA en Telegram

Recibe en Telegram a las 9 el delta de MRR, altas, bajas y una línea de contexto. Clave Stripe de solo lectura, sin dashboard de $108/mes.

Por Hermify Team||8 min de lectura
Un móvil oscuro en una mesa al amanecer mostrando un resumen de MRR en Telegram con un delta verde y un pequeño gráfico, junto a una taza de café

Ya entras en Stripe cada mañana. Deja de abrir el dashboard.

Si llevas un SaaS pequeño, lo primero que haces casi cada mañana es abrir Stripe. Miras los mismos tres o cuatro números. MRR. Altas durante la noche. Bajas. A veces pagos fallidos. Luego cierras la pestaña y empiezas el día.

Los dashboards que prometen resolver esto cuestan dinero de verdad. Baremetrics Metrics cuesta $208 al mes por el producto de analítica standalone. ChartMogul es gratis por debajo de $10K de MRR, luego salta a $100 al mes en el plan Scale y añade $25 al mes por cada $10K de MRR adicional. Ambos te enviarán un resumen por email o Slack. Ambos te darán también una matriz de cohortes de churn, un modelo de forecasting, un flujo de dunning y otras diez funciones que no usas.

Si lo único que quieres es "qué cambió en Stripe esta noche, en un mensaje, a las 9", estás pagando entre $108 y $474 al mes por el producto equivocado. Lo que quieres es un informe diario, no una suite de analítica. Son dos problemas distintos y el segundo se resuelve en una tarde con un agente de IA en Telegram, una clave de Stripe de solo lectura y una sola tarea programada.

Qué contiene un resumen de Stripe realmente útil

Antes de automatizar nada, escribe el resumen que te gustaría recibir al despertar. Para un SaaS bootstrapped el conjunto útil es pequeño:

  • MRR ahora mismo, y el delta frente a hace 24 horas. Un único número titular con su signo.
  • Suscripciones nuevas durante la noche. Plan, email del cliente, aportación al MRR.
  • Bajas durante la noche. Plan, email del cliente, MRR que acabas de perder.
  • Cambios de plan. Subidas y bajadas que se compensan en MRR de expansión y contracción.
  • Pagos fallidos que merecen atención. Cualquiera por encima de $50, o cualquiera en un cliente con más de 3 meses de antigüedad.
  • Una línea de contexto. "Neto +$47 MRR, la expansión supera al churn 3 a 1, el mayor movimiento fue Acme subiendo a Pro" se lee muy distinto a una lista de cifras.

Eso es un mensaje de 10 líneas. No necesitas un dashboard de $208. Necesitas una clave de Stripe de solo lectura, un chat de Telegram y una sola tarea programada que se ejecute a las 9 hora local.

Una oficina en casa en penumbra al amanecer con un móvil sobre la mesa mostrando un resumen de MRR en Stripe, con un suave reflejo verde de la pantalla

La receta: una skill, una tarea diaria, una clave de solo lectura

El truco es mantener el alcance muy reducido. No necesitas recalcular el MRR desde eventos invoice.payment_succeeded. No necesitas una base de datos consultable. Necesitas un único resumen diario, escrito por el agente, entregado a tu teléfono.

Paso 1: crea una clave de Stripe de solo lectura

Este es el paso de seguridad más importante. Las claves restringidas de Stripe te permiten conceder permiso Read a recursos concretos y None al resto. Para un resumen de MRR solo necesitas lectura sobre:

  • Suscripciones
  • Clientes
  • Facturas
  • Precios y productos

Pon None en todo lo demás. La clave no puede crear cargos, no puede reembolsar, no puede modificar una suscripción, no puede leer datos de tu plataforma de Connect. Si se filtra, lo peor que puede hacer un atacante es ver los mismos números que tú. Stripe recomienda expresamente las claves restringidas frente a las claves secretas, sobre todo cuando se entrega la clave a un agente de IA.

Guarda la clave en los secrets de tu agente, nunca en el código, nunca en un prompt. Hermes Agent cifra los secrets en reposo y nunca los expone al modelo.

Paso 2: escribe una pequeña skill stripe-reader

La skill es una envoltura fina sobre la API de Stripe que devuelve un único bloque JSON cada mañana:

# skills/stripe-reader/main.py
import stripe, os, datetime as dt

stripe.api_key = os.environ["STRIPE_RESTRICTED_KEY"]
since = int((dt.datetime.now(dt.timezone.utc) - dt.timedelta(hours=24)).timestamp())

# MRR activo ahora mismo
active = stripe.Subscription.list(status="active", limit=100, expand=["data.items"])
mrr_now = sum(_monthly_normalize(item) for sub in active.auto_paging_iter() for item in sub["items"]["data"])

# Eventos de las últimas 24 horas que afectan al MRR
new_subs = list(stripe.Subscription.search(query=f"status:'active' AND created>{since}").auto_paging_iter())
canceled = list(stripe.Subscription.search(query=f"canceled_at>{since}").auto_paging_iter())
plan_changes = list(stripe.Event.list(type="customer.subscription.updated", created={"gte": since}).auto_paging_iter())

return {
  "mrr_now_cents": mrr_now,
  "new_subs": [_pluck(s) for s in new_subs],
  "canceled": [_pluck(s) for s in canceled],
  "plan_changes": [_pluck_event(e) for e in plan_changes],
  "failed_payments": _list_recent_failed_invoices(since),
}

Dos notas sobre las cuentas. Primera, la propia definición de MRR en Stripe es la suma de los importes normalizados a mensual de todas las suscripciones activas, así que un plan anual de $290 aporta $24,17 al MRR, no $290 (documentación de MRR de Stripe). Segunda, una baja solo deja de contar para el MRR cuando expira, no en el momento en que el cliente pulsa Cancelar - así que "bajas de la noche" en tu resumen debe incluir tanto eventos canceled_at como eventos current_period_end ocurridos en las últimas 24 horas.

Este es exactamente el tipo de matiz que hace calcular MRR desde los datos crudos de Stripe complicado cuando intentas construir un pipeline de analítica completo. Para un resumen diario te puedes permitir ser ligeramente impreciso - los dashboards a los que tu ojo está calibrado hacen lo mismo.

Un mockup de dashboard en oscuro mostrando un mensaje de Telegram con delta de MRR, nuevas suscripciones y una línea de contexto, con acentos en verde y rojo

Paso 3: una tarea programada a las 9

Dale a tu Hermes Agent una sola línea de cron en lenguaje natural:

cada día laborable a las 9 hora de Madrid, ejecuta la skill
stripe-reader y envíame un resumen por Telegram. Titular: MRR
ahora y delta frente a ayer. Luego lista nuevas suscripciones,
bajas, cambios de plan y pagos fallidos por encima de $50.
Cierra con una línea de contexto sobre lo que ha dominado el día.

Ese es todo el prompt. El agente llama a la skill, recibe el JSON, escribe el mensaje y lo envía a tu chat de Telegram. Con enabled_toolsets=["stripe-reader","telegram"] acotado a esta tarea, el LLM solo ve los números que necesita y la herramienta para enviar a Telegram - no puede llamar accidentalmente a nada más. Este es el mismo patrón que usamos en la guía del resumen cripto y en el manual de tareas programadas para Hermes Agent.

Por qué la capa de agente se gana su sueldo

Un informe plano se podría resolver con un script Python de 50 líneas. La razón para poner un agente delante es la línea de contexto al final del mensaje.

Un informe desnudo dice:

MRR $4.217. +$47 frente a ayer. 2 altas. 1 baja. 3 cambios de plan. 1 pago fallido.

Un informe contextual dice:

MRR $4.217 (+$47, +1,1%). La expansión gana al churn 3 a 1 - Acme ha subido de Starter a Pro ($30 MRR), Beta Co ha añadido un puesto ($10). Una baja en Starter ($19) citó "me paso a Notion AI" en la encuesta de salida. Neto +$47, segundo mejor día del mes.

Mismos números, mensaje muy distinto. El primero lo lees de pasada. El segundo es algo sobre lo que puedes actuar - puedes escribir al cliente que se ha dado de baja, agradecer a Acme la subida, o comprobar si esa razón de salida se está repitiendo en otras bajas. Esa capa de diagnóstico es lo que cuesta $108 al mes en Baremetrics y es lo que un pequeño agente de IA te da por el precio de un VPS barato más tu propio consumo de modelo.

Cuánto cuesta esto

Cuentas honestas para un SaaS bootstrapped en el rango de $0 a $10K de MRR:

| Herramienta | Coste mensual | Qué obtienes | |---|---|---| | Baremetrics Metrics | $208 | Suite de analítica completa, resumen semanal por email | | ChartMogul Scale | $100 + $25 por +$10K MRR | Suite de analítica completa, alertas configurables | | ProfitWell | $0 base | Métricas gratis limitadas, upsell hacia Recover y Retain | | Hermes Agent + Hermify Starter | $19/mes + ~$2 de consumo de modelo | Un resumen por Telegram a las 9, control total de la clave de solo lectura y del prompt |

No obtienes curvas de retención por cohorte, no obtienes un dashboard público, no obtienes un flujo de dunning. Obtienes el único informe que de verdad abres y lo recibes en el móvil antes de sentarte. Para la mayoría de fundadores bootstrapped por debajo de $10K de MRR, ese es todo el trabajo.

Si cruzas los $10K de MRR y necesitas la pieza de dunning, puedes mantener el agente para el resumen diario y añadir ChartMogul Launch (gratis por debajo de $10K) o una herramienta concreta para el hueco específico. El agente no te bloquea.

Cómo empezar

El setup completo es:

  1. Crea una clave restringida de Stripe con lectura sobre suscripciones, clientes, facturas, precios y productos. None en todo lo demás.
  2. Mete la clave en los secrets de tu Hermes Agent.
  3. Añade la skill stripe-reader - puedes escribir la tuya o reutilizar el repo público de skills de Hermes.
  4. Añade una línea de cron en lenguaje natural.
  5. Verifica que el primer resumen llega a Telegram a las 9.

Si quieres todo el stack hospedado, monitorizado y sobre un bot de Telegram gestionado, empieza con Hermify en el plan Starter de $19/mes. Tú pones tu clave de modelo y tu clave de Stripe de solo lectura, nosotros llevamos el runtime, el cron y el bot. El mismo patrón sirve para resúmenes de cripto, seguimiento de competidores y el resto del cluster de automatización que hemos publicado este mes.

El dashboard que abres cada mañana cuesta $108. El dashboard que viene a ti cuesta $19.

Sources

Lanza tu propio agente Hermes

Trae tu clave de API, conecta Telegram y ten un agente de IA que evoluciona solo activo en 60 segundos.

Empezar