📄 SISTEMA-SCORE.md

← Vault

Sistema de Score — Hermes Insights

Fonte: Documento oficial do canal #chatwoot (2026-06-29)

Status: Sistema atual em produção


Como é Medida uma Reunião Boa vs Ruim

O sistema usa 5 dimensões combinadas em um score geral de 0 a 10.

As 5 Dimensões

O Score Final — Média Ponderada

`

score_final = Σ (score_da_etapa × peso) / Σ pesos

`

Exemplo prático:

`

Resposta rápida (9.0 × 10%) + Comunicação boa (7.5 × 20%) + Playbook OK (7.0 × 20%)

+ Potencial (8.0 × 20%) + Risco Baixo (9.0 × 5%)

= (0.9 + 1.5 + 1.4 + 1.6 + 0.45) = 5.85 → ≈ 6.0

`

Classificação

DimensãoPesoO que mede
----------------------------
Tempo de Resposta10%Quanto tempo o agente demorou para responder o cliente
Comunicação20%Qualidade do texto: vocabulário positivo vs negativo, tamanho médio das mensagens
Playbook (adesão ao roteiro)20%Se o agente seguiu as etapas corretas do playbook comercial
Potencial Comercial20%Se mencionou palavras-chave de conversão: contratar, plano, proposta, orçamento
Gestão de Risco5%Presença de objeções pesadas: "cancelar", "desistir", "não quero", "nunca"
ScoreCorSignificado
-------------------------
7.0 – 10🟢 VerdeReunião boa — seguiu o playbook, respondeu rápido, converteu
6.0 – 6.9🟡 AmareloReunião razoável — alguns pontos de melhoria
5.0 – 5.9🔴 VermelhoReunião fraca — objeções não tratadas, sem proposta, sem next step


⏱️ Atualização em Tempo Real

Arquitetura

`

Navegador do usuário

└─ fetch('/api/tempo_resposta')

└─ fetch('/api/waiting')

▼ HTTPS (porta 443)

Nginx (VPS) — insights.rochasalesseguros.com.br

└─ Proxy reverso / SSL termination

│ proxypass http://127.0.0.1:9087/

chatwoot_waiting_api.py (Python Flask)

Porta 9087 (systemd)

└─ Query SQL direto no banco Chatwoot

root-postgres-1 (chatwoot_production)

└─ Conversas, mensagens

`

Ciclo de atualização

`javascript

// Arquivo: tempo_resposta.html

const REFRESH_MS = 30000; // 30 segundos

async function load() {

const r = await fetch('/api/response_time');

const data = await r.json();

render(data);

}

load(); // Primeira carga

setInterval(load, REFRESH_MS); // Auto-refresh a cada 30s

`

A API por trás

Ambas as APIs (/api/response_time e /api/waiting) são servidas pelo mesmo chatwoot_waiting_api.py na porta 9087:

`sql

-- /api/waiting — clientes sem resposta

SELECT id, contact_name, inbox_name, created_at

FROM conversations

WHERE first_reply_created_at IS NULL

AND status = 'open'

AND created_at >= hoje

-- /api/response_time — tempo por agente

SELECT c.inbox_id,

AVG(first_reply_created_at - c.created_at) as avg_response_time

FROM conversations c

GROUP BY c.inbox_id

`


⚠️ Limitações do Score

> O score atual é baseado em palavras-chave e heurísticas — não é IA generativa.

São sistemas complementares, não concorrentes. O frontend mostra o score rápido, o backend faz a análise profunda.


Doc integrado: 2026-06-29 — fonte: canal #chatwoot