Skip to content

Evaluación de calidad con IA ​

English version: Automatic (AI) evaluations.

Desde core v0.106.0 (core#1973) la plataforma puede puntuar por sí sola una llamada grabada, de modo que las llamadas que ningún supervisor llega a escuchar reciban una primera pasada. Es una clase de evaluación aparte: evaluator_kind vale automatic (el de una persona, human). Los nombres de campo y los enums salen de openapi/dialer-v1.yaml vendorizado (info.version: 0.106.0); donde la spec calla, la afirmación cita un fichero de core en el tag v0.106.0. La guía completa de calidad, con formularios, disputas y reportes, está en Gestión de calidad (Quality management, en inglés).

Qué evalúa y qué no ​

  • Qué evalúa. Cada criterio de un formulario de puntuación, contra la transcripción redactada de la llamada. El modelo sólo devuelve una respuesta por criterio; nunca una nota. Core calcula score_bp, passed y auto_failed con la misma puntuación que para una persona. El weight y el critical de los criterios no se envían al modelo. lib/dialer/qm/auto_qa.ex.
  • Contra qué formulario. El formulario vivo más antiguo del tenant, en su versión vigente. No hay mapeo campaña-formulario: toda grabación elegible se evalúa contra ese formulario. lib/dialer/qm/auto_qa.ex.
  • Qué no hace. El resultado es una sugerencia para el evaluador y una cifra en un reporte; nunca cambia la disposición de una llamada: el job sólo escribe una fila de evaluación. No se escribe si las respuestas del modelo no cubren todos los criterios o no caben en su criterio (no se inventa un «no aplica»; lib/dialer/qm/auto_qa.ex). Nunca pisa a una persona: si la grabación ya tiene una evaluación de ese formulario, no se hace otra automática. Las grabaciones de llamadas con agente de voz con IA (ai_used) quedan excluidas.
  • La persona gana siempre. La primera evaluación humana de una grabación cuya evaluación vigente es automática la sustituye, sin que quien llama envíe supersedes_id. La fila automática se conserva (la tabla sólo añade). lib/dialer/qm/evaluations.ex.
  • El agente puede disputarla igual que una humana. La disputa nunca se resuelve sola: la resuelve un evaluador elegible, y si la ajusta, su evaluación humana sustituye a la automática. La vista del agente (QmAgentEvaluation) no lleva evaluator_kind: el agente no sabe de qué clase era.

Quién la recibe ​

Deben cumplirse todas, o no se evalúa y no se gasta nada:

CondiciónDetalleFuente
PlanTier scale o enterprise (el derecho :qa). Cualquier otro tier, también uno desconocido, no lo tiene.lib/dialer/post_call/entitlement.ex
Flag del tenantqm_enabled encendido (sin él, las escrituras de calidad responden 403 qm_not_enabled). Una migración lo enciende por segmento para scale y enterprise; un override por tenant, que sólo escribe Dialer Digital, gana al segmento en los dos sentidos.lib/dialer/qm/auto_qa.ex, priv/repo/migrations/20261111030002_seed_qm_enabled_segments.exs
Grabaciónavailable, con el audio sin purgar, con agente, sin ai_used, con transcripción guardada y sin evaluación previa de esa grabación y formulario.lib/dialer/qm/auto_qa.ex
ProveedorUn proveedor de pago configurado para análisis en la celda. El proveedor local no sirve esta tarea y el job termina sin gastar.lib/dialer/qm/auto_qa.ex

El job se encola al guardar la transcripción de la grabación (Inteligencia post-llamada describe la elegibilidad de la transcripción).

El freno de gasto (fail-closed) ​

La evaluación pasa por el mismo freno de gasto que la transcripción y el análisis, con function: "qa". El job pide una reserva antes de llamar al modelo y la liquida después con el consumo real de tokens. Todo lo que no sea una reserva concedida termina el job sin gastar y sin reencolar; un libro que no se puede leer hace fallar el intento sin gastar. La salida del modelo se acota a 2 048 tokens. El tope, los motivos de denegación y las reglas fail-closed están en Inteligencia post-llamada y se aplican sin cambios. Para un cliente de la API el efecto visible de una denegación es que no aparece ninguna evaluación automática.

Cómo se distinguen en los reportes y listados ​

evaluator_kind es un campo de QmEvaluation (human o automatic; evaluator_user_id es null en automatic). Los dos reportes (GET /v1/qm/reports/agents y /v1/qm/reports/campaigns) agrupan por agente (o campaña), formulario y evaluator_kind: la nota de una persona y la pasada automática son filas distintas y nunca se promedian juntas. Aceptan el filtro opcional evaluator_kind=human|automatic (cualquier otro valor es 400).

En el dashboard (v0.51.0), una evaluación automática se rotula «Automática» en el panel de calidad de la grabación (apps/web/src/routes/recordings/QmEvaluationPanel.tsx), y el reporte de la página de calidad muestra la clase de cada fila y se filtra por ella (apps/web/src/routes/quality/QualityPage.tsx).

Nothing in these docs is legal advice — always confirm compliance posture with your own counsel.