Manual interno

Cómo funciona el CRM

Qué hace cada parte, campo por campo en las pantallas que más se usan, cómo se miden los resultados, y qué se probó antes de darlo por listo.

Roles

Cuatro niveles, cada uno ve exactamente lo que necesita — reforzado dos veces: en la interfaz y en la base de datos (nadie puede ver más forzando la URL).

Agente

Su cola, su jornada, sus propias métricas. No ve a otros agentes ni leads de otro equipo.

Supervisor

Su equipo completo: supervisión en vivo, histórico, calendario. No toca configuración ni ve otros equipos.

Admin

Todo el sistema — equipos, cuentas, configuración, cumplimiento.

Dueño nuevo

Un flag aparte sobre un admin ya existente: además de todo lo de arriba, ve la bandeja de errores y sugerencias que reporta el equipo — nadie más la ve.

Vendedor nuevo

Ve solo sus citas asignadas (agenda del día). Cierra cada cita con uno de tres resultados: venta, demo no venta (fueron, demostraron, no vendieron) o no atendió (llegaron y no había nadie / no los recibieron). No ve la cola de llamadas ni leads del equipo.

Rol vendedor — agenda y cierre de la demo

El vendedor entra al sistema y ve solo sus citas (las que el supervisor le asignó desde el calendario). No tiene acceso a la cola de llamadas.

Qué ve el vendedor

  • Su agenda: citas con estado agendada o confirmada para hoy o los próximos días.
  • Para cada cita: nombre del contacto, teléfono, dirección, hora, duración.
  • El historial de llamadas de ese lead (contexto para la visita).
  • Los servicios/catálogo disponibles (solo lectura).

Cómo cierra la demo

Al terminar la visita, el vendedor abre la cita y elige exactamente uno de estos tres resultados:

ResultadoQué significaCampos que aparecen
VentaCerraron la venta en la visitaMonto de la venta (opcional, se puede cargar después)
Demo no ventaFueron, hicieron la demostración, el cliente no compróMotivo (obligatorio, texto libre)
No atendióLlegaron al domicilio y no había nadie / no los recibieronMotivo (obligatorio, texto libre)

Devolución del lead por "no atendió"

Cuando el vendedor marca no atendió, el lead vuelve automáticamente al teleoperador que agendó esa cita, con el historial completo de la cita y el motivo que dejó el vendedor.

El circuito de devolución

  1. El vendedor cierra la cita como no atendió y escribe el motivo (ej. "cliente no abrió, perro suelto").
  2. El sistema setea el lead con appointment_returned_at = ahora, appointment_return_agent_id = tmk que agendó, return_reason_pending = true y copia el motivo del vendedor al lead.
  3. El lead entra en la cola del tmk en PRIORIDAD 1.5 (después de sus callbacks propios vencidos, antes de los callbacks ajenos con gracia).
  4. Cuando el tmk pide "siguiente lead", recibe este lead devuelto.
  5. El tmk NO puede guardar ninguna otra disposición hasta que elija "Motivo: no atendió (tmk)" y escriba por qué no atendió.
  6. Al guardar ese motivo, el bloqueo se limpia (return_reason_pending = false, columnas de devolución a null) y el lead vuelve a la cola normal con status = 'en_gestion'.

No es un castigo: es el único mecanismo que cierra el circuito entre quien agenda y lo que pasa después. Sin eso, el tmk nunca se entera de qué citas suyas se caen ni por qué.

La cola de llamadas

No hay reparto de leads por la mañana — cada vez que alguien pide "siguiente lead", el sistema decide al vuelo, con prioridad fija:

1Callback vencido, mismo agente que lo reagendó
2Callback vencido de otro (si nadie lo levantó a tiempo)
3Lead nuevo sin tocar
4Alto interés marcado antes
5Resto, del más viejo al más nuevo

Filtros que se aplican siempre: nunca un lead marcado do_not_call, nunca uno que agotó los reintentos, nunca uno que otra persona ya trabajó hoy, y nunca uno bloqueado por otro agente en ese instante. El bloqueo vence solo a los pocos minutos si alguien cierra el navegador sin avisar — ningún lead se pierde.

Campo por campo — Resultado de la llamada

El formulario que aparece debajo de cada lead en la Cola (y en la Ficha del lead). Es el que más se usa en todo el sistema, así que va campo por campo.

CampoPara qué es
ResultadoQué pasó en la llamada (contestó, no contestó, buzón, interesado, venta...). Es el único campo obligatorio siempre — de él dependen los demás.
Nivel de interés0 a 5, tu propia lectura de qué tan cerca está de comprar. Alimenta la prioridad de la cola (interés 4+ salta adelante).
CanalPor dónde hablaste — teléfono, WhatsApp, etc. Se autocompleta solo si usaste el botón "WhatsApp" de la ficha.
Volver a llamar el... solo si el resultado lo pideFecha y hora exactas del callback. Aparece nada más si elegiste un resultado tipo "Volver a llamar" — y es obligatorio ahí, la base no te deja guardar sin esto.
Fecha/hora, duración y ubicación de la cita solo si el resultado agenda citaAparece con "Cita agendada". Los tres son obligatorios juntos — la base revisa que no se choque con otra cita en el mismo horario según la capacidad configurada.
Producto de interés / Monto de la demo solo si el resultado es ventaAparece con resultados que cierran venta. El monto es opcional — se puede cargar después si todavía no lo sabés.
Nota de la llamadaTexto libre: qué dijo, qué quedó pendiente, con quién hablaste. Queda en el historial del lead para siempre.

La ficha de arriba (teléfono, email, ciudad, localidad, Instagram, servicio, campaña, origen, equipo, último intento, callback) es solo lectura desde la Cola — se edita desde Leads.

Jornada y pausas

Antes de ver un solo lead, el agente pasa por una pantalla "Iniciar jornada". Desde ahí todo queda en una bitácora, no en un estado que se pisa:

EventoQué registra
Inicio de jornadaMarca de tiempo — arranca el reloj del turno
Inicio de pausaMotivo: Almuerzo, Baño, Reunión interna, Otro
Fin de pausaVuelve a "trabajando" — ya puede pedir lead otra vez
Fin de jornadaSuelta cualquier lead que tuviera reservado

Con esa bitácora se puede calcular después cuántos minutos por día se fueron en cada motivo, por agente.

Métricas

Todas viven en Histórico (rango de fechas + comparación de dos períodos) y en Dashboard. Nada se calcula distinto de una pantalla a otra — es la misma función de base de datos la que alimenta todo.

Por agente

Contacto efectivo: una llamada cuenta como contacto efectivo a partir de 10 segundos de duración. Por debajo de eso es un descuelgue, no una conversación, y no cuenta para contactabilidad ni métricas derivadas.

MétricaQué mide
Leads trabajadosCuántos leads distintos tocó en el rango
Llamadas realizadasTotal de intentos, contesten o no
Llamadas contestadasDe esas, cuántas atendió alguien del otro lado
Contactos efectivosLeads distintos con al menos un contacto real
InteresadosMarcados como "Interesado" en la llamada
Citas agendadas / realizadasSe agendaron vs. se cumplieron de verdad
Cancelaciones / No-showCita cancelada vs. el cliente no apareció
Demos (ventas)Cierres — y el monto vendido, sumado aparte
Conversión contacto → cita% de contactos que terminan en una cita
Conversión cita → demo% de citas cumplidas que cierran venta
Duración promedio (AHT)Tiempo promedio por llamada

Del call center completo

MétricaQué mide
Leads recibidosCuántos leads entraron en el rango
Contactabilidad% de intentos que lograron contacto real
Citas y demos por 100 leadsRendimiento normalizado, comparable entre rangos
Costo por lead / cita / demoGasto de campaña dividido por cada etapa del embudo

Comparar períodos

Histórico → "Comparar períodos": dos rangos de fecha lado a lado (hoy contra hace 3 meses, esta semana contra la pasada, lo que haga falta), con flecha ▲▼ verde/roja por métrica — y en costos, bajar es la buena noticia, así que el color se invierte a propósito ahí.

Lo nuevo esta ronda

Rol vendedor y cierre de demo

Rol nuevo vendedor: ve solo sus citas asignadas, cierra cada una con venta / demo no venta / no atendió. Monto opcional en venta, motivo obligatorio en los otros dos.

Devolución de lead por "no atendió"

Si el vendedor marca "no atendió", el lead vuelve al tmk que agendó la cita con el motivo del vendedor. El tmk debe registrar por qué no atendió (disposition "Motivo: no atendió (tmk)") antes de poder seguir con su cola. Prioridad 1.5 en la cola (tras callbacks propios, antes de ajenos con gracia).

Localidades de Bogotá

Catálogo completo de localidades, zonas y barrios. Selector en la ficha del lead y filtro en la pantalla Leads. Sirve para agrupar visitas por cercanía y filtrar la cola por zona.

Contacto efectivo por duración (≥10 s)

Una llamada cuenta como contacto efectivo si duró 10 segundos o más. Por debajo es descuelgue y no suma a contactabilidad. Botón "llamada / no llamada" al inicio del intento.

Canal único: teléfono

Se retira el canal de Instagram. Todo el flujo es telefónico; el campo channel queda fijo en telefono desde el front.

Resultado de la demo en métricas y dashboard

Donde antes se agrupaba por campaña publicitaria, ahora se agrupa por resultado: venta, demo no venta, no atendió. Se retiran los costos por lead y por plataforma.

Comparación de períodos A/B

La pantalla de histórico compara claramente Período A contra Período B (ej. semana 1 contra semana 2), no como dos bloques sueltos.

Eliminar cuenta, sin perder historial

"Eliminar cuenta" borra de verdad si la cuenta está vacía. Si tiene llamadas o citas reales, en vez de fallar la desactiva sola — queda archivada en la pestaña Ex-empleados (separada de "Personas activas"), y su nombre sigue apareciendo en los reportes como Ex-empleado — Nombre, para no perder ese historial.

Bandeja de errores y sugerencias

Botón flotante 💬 en cualquier pantalla, para cualquier rol logueado — solo puede escribir un reporte, no puede ver la bandeja. Solo la cuenta marcada como dueño ve la bandeja completa, cambia el estado (Abierto → En progreso → Resuelto/Descartado) y deja una nota.

Tutorial guiado

Botón "Tutorial" en el pie del menú lateral. Recorre las pantallas clave marcándolas una por una con una explicación corta — un guion para agente (su cola y su jornada) y otro para admin/supervisor (las pantallas de gestión). Para el detalle campo por campo del formulario de resultado, esta misma página es la referencia — un tour dentro del programa no puede detenerse en cada campo sin que la agente ya tenga un lead real cargado.

QA — qué se probó

Lo que se verificó en vivo contra la base real, y lo que quedó confirmado por prueba manual del equipo.

✓ confirmado
Concurrencia de la cola — 2 agentes pidiendo "siguiente lead" al mismo tiempo nunca reciben el mismo lead (bloqueo for update skip locked a nivel de base, probado con 2 sesiones reales).
✓ por diseño
Rotación de voz — un lead trabajado hoy por alguien no vuelve a aparecer para otra persona hasta el día siguiente.
✓ por diseño
Callback con afinidad — un lead reagendado vuelve a la misma persona que prometió llamar, a la hora pactada, antes que cualquier otra cosa en la cola.
✓ por diseño
Permisos por equipo — reforzado dos veces: la función que entrega el lead calcula el equipo del lado del servidor (no lo manda el navegador), y la base vuelve a filtrar por equipo aparte.
pendiente
2FA y recuperación de clave punta a punta — el código está y funciona (sin regresión para quien no tiene 2FA activado), pero probar el código correcto/incorrecto y el flujo completo de "olvidé mi clave" necesita una cuenta real con el segundo factor activado — eso lo corre el equipo.