Rol — CSM (retención)

El CSM (Customer Success Manager) es quien cuida a los alumnos después de la venta: que sigan activos, que renueven, y que las bajas se procesen bien. Es el otro lado del embudo comercial.

Lo que puede hacer

  • Entrar al tablero de retención (/admin/clientes): todos los alumnos con acceso activo, en todos los programas, ordenados por riesgo de baja.
  • Marcar el estado de cada alumno arrastrando su tarjeta entre columnas.
  • Anotar seguimiento por alumno: si es del equipo, si paga o está bonificado, hasta cuándo tiene extensión, y una nota libre de próximo paso.
  • Completar el nombre de alumnos que entraron por Payment Link y quedaron sin nombre.
  • Ver el listado plano anterior en /admin/clientes/tabla.
  • Gestionar empresas (/admin/empresas).

Lo que NO puede hacer

  • No entra al embudo comercial ni a las métricas globales.
  • No cambia el contenido de los programas.

Las columnas del tablero

Las columnas son riesgo de baja. No son estado de pago ni de avance en el contenido: si la persona paga o está bonificada se marca aparte en la tarjeta, y el avance se ve en la línea de cápsulas. De izquierda (mejor) a derecha (peor):

Columna Qué significa
🟢 Sigue Sin señales de riesgo.
🟡 A confirmar No se sabe: hay que hablar con la persona. Es el estado por defecto.
🟠 En riesgo Señales de que se va: no responde, no entra, lo dijo.
🔴 Baja pedida Pidió la baja. Está en proceso.
⚫ Baja Baja procesada.

Los nombres y colores de las columnas viven en la tabla pipeline_stages (pipeline_slug = 'retencion') y se pueden cambiar sin tocar código.

Por qué el estado se marca a mano

FIA se vendió mucho por acceso manual y Payment Link, así que la base no sabe quién paga: apenas 4 de 55 alumnos de FIA Agéntica tienen una suscripción de Stripe registrada. De la base salen los datos objetivos (fecha de ingreso, vencimiento, actividad, empresa); el estado y las notas los pone el CSM.

Lo que la tarjeta muestra sola

  • Empresa: de organization_id, y si falta, deducida del dominio del email (se marca con ·dom).
  • Fecha de ingreso y vencimiento, resaltado en ámbar si vence en 14 días o menos, y en rojo si ya venció. Los accesos vencidos siguen apareciendo 60 días: son justamente el caso a recuperar.
  • Actividad: cápsulas completadas y días desde la última señal de vida. En gris si hace más de 14 días que no entra.
  • Pista de equipo: si la persona tiene un rol interno aparece "Equipo ?" hasta que el CSM lo confirma.

Qué pasa cuando marcás una baja

Mover una tarjeta a las dos columnas de la derecha no es una etiqueta: dispara cosas reales. Por eso las dos piden confirmación explícita antes de ejecutarse.

🔴 Baja pedida

  • Al alumno le llega un mail avisándole que su baja está en proceso, con el WhatsApp del coach por si fue un error.
  • El acceso no se toca: sigue entrando normal.
  • Al equipo (Lautaro y Axel) le llega un mail con el contexto del alumno.

⚫ Baja

  • Se le revoca el acceso a ese programa (solo ese: si está en otro, ahí sigue entrando).
  • Se le cancela la suscripción de Stripe si tiene una registrada. La mayoría entró por Payment Link y no tiene, así que el mail interno avisa que hay que mirar Stripe a mano.
  • Recién entonces se le manda el mail al alumno diciéndole que ya no tiene acceso. Si la revocación falla, el mail no sale: nunca se le avisa de algo que no pasó.
  • Al equipo le llega el mail con lo que quedó pendiente a mano (sacarlo del grupo de WhatsApp).

Revertir

Sacar la tarjeta de una columna definitiva revierte la baja. Si el acceso estaba revocado se restaura, y al alumno le llega un mail avisándole que volvió.

La suscripción de Stripe no se reactiva sola: si se canceló, hay que rearmarla a mano.

Todo queda registrado en la tabla retention_events: qué pasó, quién lo hizo, y qué efectos se ejecutaron.

El aviso por WhatsApp de Sofía

Cada evento de baja se manda además por WhatsApp al grupo interno Control / FIA Copilot, donde está Sofía con el equipo.

El envío es directo desde FIA Copilot a Evolution API, sin pasar por el engine del VPS: el evento pasa acá, así que se manda desde acá. Antes esto dependía del engine, y cada vez que el engine se caía el aviso se perdía.

Queda registro de cada aviso en sofia_outbox con su estado (sent, pending, skipped). Si el envío falla, la fila queda en pending y se puede reintentar sin perder nada.

Los mails al equipo no dependen de esto: si Evolution está caído, la baja se procesa igual y el aviso por mail sale lo mismo.

Config (env de Vercel): EVOLUTION_BASE_URL, EVOLUTION_API_KEY, EVOLUTION_INSTANCE_NAME, SOFIA_GRUPO_EQUIPO_JID.

Seguimiento semanal

En /admin/fia-agentica/alumnos está la grilla de avance por semana del programa. Ahí se registra ahora el seguimiento que antes vivía en un Excel aparte.

  • La columna Seguimiento muestra el último contacto: fecha y color (verde respondió, ámbar contactado sin respuesta, rojo no respondió, gris nunca).
  • En la grilla, un punto azul en una celda de semana significa que hubo seguimiento esa semana.
  • Al hacer click se abre el panel, que es donde se trabaja: teléfono, link al grupo de WhatsApp del alumno, los hitos, el historial completo y el formulario para cargar el de hoy.

Corregir un seguimiento ya cargado

Cada entrada del historial tiene editar y borrar.

Al tocar "editar" el formulario se completa con lo que habías puesto y pasa a modo edición: el título dice "Editando seguimiento", la entrada queda resaltada en ámbar y el botón dice "Guardar cambios". Con "cancelar" volvés a cargar uno nuevo.

Se puede cambiar cualquier cosa, incluida la fecha: en ese caso el registro se mueve a la fecha nueva en vez de duplicarse.

Sólo hay un seguimiento por alumno y por día. Si guardás sobre una fecha que ya tenía uno, te avisa antes y te muestra qué decía, para que no pierdas nada sin querer.

Las dos "semanas" no son la misma

Las rondas de seguimiento son semanas de calendario e iguales para todos. La grilla son semanas del programa, y cada alumno arrancó en fecha distinta. Por eso se guarda la fecha real del contacto y la semana del programa se calcula desde su alta:

semana = max(1, floor((fecha − granted_at) / 7) + 1)

Un seguimiento que cae más allá de la última semana del programa no se pierde: aparece igual en el panel y en la columna, aunque no tenga celda donde pintar el punto.

Hitos que se registran

Hizo las tareas de la semana 1 · está en la comunidad · presentó su proyecto · dio testimonio · pagó después del primer mes.

Cómo se identifica

El flag is_csm en profiles. También entran los is_admin.