ooligo
claude-skill

Detectar señales de expansión en calls de CSM y uso

Dificultad
intermedio
Tiempo de setup
45min
Para
revops · csm
RevOps

Stack

Un Claude Skill que escanea los últimos siete días de calls de CSM, anomalías de uso y tickets de soporte a través de tu portfolio de clientes y emite un digest por CSM, ranqueado, de cuentas que muestran intent concreto de expansión. Cada cuenta surfaceada nombra el SKU de upsell, la evidencia textual que lo soporta y una sola next-best action que el CSM puede tomar esta semana. El bundle vive en apps/web/public/artifacts/expansion-signal-detection-claude/ y contiene SKILL.md más tres archivos de referencia que el equipo edita para que matcheen con su propio lineup de SKUs, baselines de segmento y playbook de acciones del CSM.

Cuándo usarlo

Usa este skill cuando tu equipo de CS es dueño de más cuentas de las que cualquier humano puede escanear manualmente cada semana, y tienes al menos dos fuentes de datos superpuestas para fusionar — típicamente calls de CSM grabadas en Gong más anomalías de uso de Gainsight (o emitidas desde el warehouse). El skill está diseñado para equipos de tres o más CSMs sobre un portfolio de al menos 100 cuentas; por debajo de esa escala, un CSM lead leyendo cada call manualmente le gana a cualquier digest automatizado, porque el humano ve contexto que el archivo de taxonomía no codifica.

La cadencia correcta es semanal — típicamente lunes por la mañana, antes de la reunión de account-review del equipo — y el output correcto es un DM personal de Slack por CSM, capeado a tres señales fuertes cada uno. El cap importa: en pilotos, un digest de CSM con 10 o más “cuentas engaged” se lee por dos semanas y luego se ignora permanentemente. Tres asks concretos por semana, repetidos cada lunes, es la cadencia que el equipo realmente internaliza.

Cuándo NO usarlo

  • Quieres alertas en tiempo real sobre eventos individuales. Los pings por evento inundan a los CSMs y erosionan la confianza en el canal en dos semanas. La cadencia semanal es deliberada. Si tu CRO insiste en tiempo real, espera que el digest sea muteado para Q2.
  • Aún no tienes anomalías de uso en un feed estructurado. El skill consume eventos de anomalía pre-emitidos; no los detecta desde streams de eventos crudos. Si Gainsight no está disparando ya eventos seat_count_spike, feature_first_use y tier_gated_feature_attempt, arregla esa pipeline primero — el skill encima de un feed vacío produce un digest solo con calls, lo que colapsa cada señal a weak.
  • Los CSMs no están logueando calls. Si menos del 60 por ciento de las cuentas tienen una call logueada en la ventana, la mitad de conversación de cada set de señales está vacía y la mayoría de las señales colapsan a weak. Audita la adopción de Gong antes de depender de esto. El skill aborta la corrida con un error de cobertura si la tasa cae bajo 40 por ciento, en vez de emitir un digest de media-señal.
  • Quieres auto-crear CTAs de Gainsight o auto-emailear clientes. Este skill es señal read-only. El output está diseñado para ser la prep pre-meeting de un CSM, no un trigger de workflow. Cablear una capa de auto-acción downstream es la forma más rápida de mandarle a un CFO un email de “notamos que te beneficiarías de nuestro tier enterprise” la semana siguiente a que su champion se fue.
  • Quieres un forecast de expansion-ARR. El output es señal de intent por cuenta, no un número para enchufar a un forecast de finanzas. El forecasting de expansion-ARR requiere calibración de close-rate que el skill no tiene.

Setup

El bundle del artifact vive en apps/web/public/artifacts/expansion-signal-detection-claude/. Descárgalo, edita los tres archivos de referencia para que matcheen con tu realidad, después instala el Skill.

  1. Descarga y desempaca el bundle. Suelta expansion-signal-detection-claude/ en ~/.claude/skills/. El layout es SKILL.md más references/1-expansion-signal-taxonomy.md, references/2-segment-baseline-config.md y references/3-action-library.md.
  2. Construye la taxonomía de señales. Edita references/1-expansion-signal-taxonomy.md con tus SKUs de upsell reales y las frases gatillo de call, los tipos de evento de uso y los tags de ticket de soporte que mapean a cada uno. Sé específico: no “más usuarios,” sino “preguntó por pricing para 50 o más seats” o “mencionó requirements de compliance.” La sección de ejemplos negativos atrapa frases condicionales (“si soportaran X”) que se leen como intent pero en realidad son reportes de feature-gap — mantenla afinada, porque una lista de ejemplos negativos desactualizada es la causa más común de inundación de falsos positivos.
  3. Calibra los baselines de segmento. Edita references/2-segment-baseline-config.md con valores computados desde una ventana rodante de 90 días sobre tu warehouse de uso. Por segmento, lista la mediana de delta semanal y la banda de ruido de dos sigmas para cada métrica. El skill rechaza eventos cuyo delta_pct cae dentro de la banda de ruido incluso cuando cruzaron el umbral del emisor global — esto es lo que evita que el ruido de seat-count de SMB ahogue la expansión enterprise genuina.
  4. Pobla la action library. Edita references/3-action-library.md con una o más next-best actions por SKU. Cada entry debe seguir la forma verbo más artifact nombrado (una meeting, una persona, un doc, un ticket) — el skill lo refuerza con un filtro literal de substring sobre el campo Action emitido, reemplazando cualquier cosa vaga con needs human review.
  5. Conecta las fuentes de datos. Define GONG_API_KEY para el pull de transcripts, GAINSIGHT_TOKEN para el feed de eventos de uso y de cuentas, y tu token de API de tickets de soporte (Zendesk, Intercom o Helpscout, según tu stack). El skill lee anomalías pre-computadas desde el feed de uso; no corre detección de anomalías por sí mismo.
  6. Corre semanalmente. Invoca expansion_signal_detection(window_days=7) desde una sesión de Claude Code agendada (cron o GitHub Actions workflow_dispatch en un trigger semanal). El output es un archivo Markdown por owner de CSM, posteado como un DM de Slack en vez de un post en canal público — el objetivo es accountability por CSM, no un leaderboard público que el equipo aprende a scrollear y saltarse.

Qué hace el skill realmente

El cuerpo de trabajo son seis pasos secuenciales documentados en detalle en el SKILL.md del bundle. La forma:

  1. Recolección de evidencia por cuenta. Junta cada call, evento de uso y ticket en la ventana. Descarta cuentas con cero registros para que el silencio no diluya la lista ranqueada.
  2. Filtrado por baseline de segmento. Para cada evento de uso, busca la banda de ruido del segmento en references/2-segment-baseline-config.md y descarta eventos dentro de la banda. La razón para baselines por segmento en vez de un umbral global único: un salto de 30 por ciento week-over-week en seats significa algo distinto para un SMB de 5 seats que para un enterprise de 500 seats. Un umbral global único garantiza que la banda SMB ahogue a la banda enterprise.
  3. Extracción de señales desde calls y tickets. Corre un prompt de extracción contra cada transcript y ticket usando las frases gatillo en references/1-expansion-signal-taxonomy.md, con la capa de ejemplos negativos clasificando explícitamente las frases condicionales como not_signal.
  4. Clasificación strong-vs-weak. Una señal es strong solo cuando al menos una mención de call Y al menos un evento de uso aterrizan sobre el mismo SKU dentro de la ventana. Cualquier otra cosa es weak. La razón para el split en vez de un solo score-y-rank: el ruteo difiere. Las señales strong ameritan un CSM mandando un meeting invite esta semana; las señales weak ameritan una mirada durante el account review normal. Poner señales weak en la lista ranqueada entrena al CSM a ignorar la lista ranqueada.
  5. Ruteo y priorización por CSM. Agrupa señales strong por owner_email, ordena por ARR descendente y luego renewal_date ascendente, aplica cap_per_csm (default tres).
  6. Mapeo de acciones y emit. Busca cada señal surfaceada en references/3-action-library.md y agrega la next-best action que matchea. Si no matchea ningún entry, emite needs human review en vez de sintetizar una — las acciones vagas son el modo de falla que erosiona la confianza más rápido.

Realidad de costos

El costo dominante de tokens es el paso de extracción de calls. Una corrida semanal típica para un portfolio de 200 cuentas con una call de CSM por cuenta por semana corre aproximadamente:

  • 200 transcripts a un promedio de 6.000 tokens cada uno = 1,2M tokens de input para extracción.
  • 200 resúmenes de cuerpo de ticket a aproximadamente 800 tokens cada uno = 0,16M tokens de input.
  • Síntesis por cuenta (200 cuentas, alrededor de 2.000 input + 500 output tokens cada una) = 0,4M input + 0,1M output.
  • Total por corrida semanal: aproximadamente 1,76M tokens de input, 0,1M tokens de output.

Al pricing de Claude Sonnet (alrededor de $3 por millón de input, $15 por millón de output a 2026-Q1), eso es alrededor de $5,30 + $1,50 = bajo $7 por corrida semanal. Anualizado: bajo $400 por año por portfolio de 200 cuentas. A un portfolio de 1.000 cuentas con cobertura de calls similar, escala linealmente a bajo $2.000 por año. El piso de costo es el paso de extracción de calls; si tus CSMs loguean pocas calls la cuenta cae proporcionalmente y también lo hace la calidad de señal.

El costo escondido es el mantenimiento de la taxonomía. Espera que un CSM lead pase aproximadamente 30 minutos por trimestre editando references/1-expansion-signal-taxonomy.md y la action library, y una sesión ad-hoc más larga cada vez que lanza un nuevo SKU. Saltarse este mantenimiento es lo que hace que el digest se vuelva stale — el skill sigue emitiendo output con confianza contra un lineup de SKUs que ya no existe.

Métrica de éxito

La métrica a vigilar es la tasa de conversión confirmada por el CSM de señales strong a conversaciones de expansión dentro de 14 días. Trackéala en una ventana rodante de 30 días. Los baselines tempranos de equipos piloto aterrizan en el rango 25-40 por ciento — es decir, aproximadamente una de cada tres señales strong lleva a una conversación real que el CSM no habría tenido de otra forma ese mes. Bajo 20 por ciento por dos meses consecutivos significa que el corte strong-vs-weak está demasiado flojo o la action library es demasiado vaga; aprieta la taxonomía o reescribe la mitad de las acciones antes de continuar.

Métrica lagging: la contribución de expansion-ARR atribuida al digest, trackeada al cierre trimestral. Esto es más difícil de medir limpiamente porque las conversaciones de expansión tienen muchas causas, pero un campo de encuesta al CSM en cada expansión ganada (“¿el digest surfaceó esta cuenta antes de que abrieras la conversación?”) es un buen-suficiente proxy.

vs alternativas

  • vs. Gainsight Expansion Management. El módulo nativo de Gainsight ranquea cuentas en un solo score compuesto y rutea vía CTAs. Funciona, pero es opaco — cuando un CSM no está de acuerdo con el ranking no puede editar un archivo de config, solo abrir un ticket con el admin. Este skill mantiene la lógica de ranking en tres archivos de texto plano que el CSM lead es dueño y edita directamente. Elige Gainsight cuando tu equipo de CS-Ops quiere un sistema cerrado; elige esto cuando quieren que el equipo sea dueño de las reglas.
  • vs. QBRs manuales conducidos por el CSM. Un CSM senior corriendo una review personal en Notion de su libro de negocios le gana a cualquier digest a la escala de menos de 50 cuentas porque sostiene contexto que la taxonomía no puede codificar. A 100+ cuentas por CSM la matemática se da vuelta: nadie puede escanear esa cantidad de transcripts semanalmente. El digest es un force multiplier, no un reemplazo, y la action library está intencionalmente formada para alentar al CSM a hacer la conversación, no al skill.
  • vs. dashboards genéricos de BI. Un dashboard de Looker de “cuentas con picos de uso” produce una lista cada semana que nadie acciona porque no hay SKU nombrado, no hay evidencia textual de call y no hay próxima acción. El valor del digest es la fusión más la acción, no el ranking — sin el mapa de SKUs y la action library, terminas con una versión más lenta del dashboard.

Watch-outs

  • Inundación de falsos positivos. Cuando el prompt de extracción de calls está flojo, la lista de señales strong se infla a 10 o más por CSM por semana. Guard: refuerza cap_per_csm estrictamente, y si la lista strong de cualquier CSM excede el cap en tres corridas consecutivas, anteponé un warning de que el corte strong-vs-weak está demasiado flojo y linkea a references/1-expansion-signal-taxonomy.md para apretarlo. No truncar silenciosamente.
  • Mala interpretación de señales — trampa de partida del champion. Un pico de uso justo después de que el champion nombrado se va es una señal de riesgo de expansión, no de intent de expansión — el nuevo owner está explorando antes de decidir si mantener el contrato. Guard: cross-referencia cada señal strong contra stakeholder_changes. Si un champion en la cuenta partió dentro de los 30 días previos, baja a weak y tagea con champion-departure suppressed: investigate before pursuing. El skill nunca debe rutear un ask de expansión a una cuenta que acaba de perder a su champion.
  • Drift de umbral. Las frases gatillo y los mapeos de SKU se vuelven stale a medida que el producto cambia. Un nuevo SKU que lanzó hace dos meses tiene cero entries en la taxonomía hasta que alguien los agregue, y cada señal para él se mis-rutea silenciosamente. Guard: incluye el SHA-256 (primeros siete chars) de references/1-expansion-signal-taxonomy.md en el footer de diagnostics. Si el archivo no fue tocado en 90 días, anteponé un warning de que la taxonomía está stale y linkea al archivo para recalibración.
  • Mala clasificación de menciones condicionales. “Consideraríamos expandir si soportaran X” se lee como intent de expansión a primera vista pero en realidad es un reporte de feature-gap. Guard: la capa de ejemplos negativos en el paso de extracción clasifica explícitamente las frases condicionales (“si,” “consideraríamos,” “estamos pensando en”) como not_signal. Diagnostics expone con qué frecuencia esto dispara — si nunca dispara, la capa está rota; si dispara constantemente, el mapeo de SKU necesita rephrasing.
  • Colapso de especificidad de la acción. Bajo carga, el modelo cae por defecto a sugerencias de “follow up sobre la oportunidad”. Guard: el filtro post-proceso en el paso 6 rechaza cualquier campo de Action que contenga verbos vagos (follow up, reach out, touch base, align, socialize, engage) sin una persona, meeting o doc nombrados, reemplazándolo con needs human review. Mejor silencio que ruido.

Stack

  • Gong — corpus de calls de CSM y API de transcripts
  • Gainsight — fuente de anomalías de uso y feed de cuentas
  • Zendesk / Intercom / Helpscout — fuente de tickets de soporte para señales de preguntas de integración
  • Claude — extracción de señales, filtrado por baseline de segmento, clasificación strong-vs-weak, mapeo de acciones

Archivos de este artefacto

Descargar todo (.zip)