Central de Docs

EDUZZ-HS-WF-004

Spam Detection &
Q&A Notes Fix

Workflow de deteccao automatica de spam + correcao de notas Q&A com tokens literais.
Executado em 09/02/2026 (Go-Live).

Resumo

Visao Geral das Acoes

92
Notas Q&A Corrigidas
29
Tickets Spam Classificados
7
Padroes de Spam Detectados
3
Workflows Atualizados

Este documento cobre duas acoes executadas no dia do Go-Live (09/02/2026):

  1. Correcao de Notas Q&A: 3 workflows de Custom Code atualizados + 92 notas legadas corrigidas via API
  2. Spam Detection: Identificacao de 7 padroes de spam, classificacao de 29 tickets e criacao do workflow WF-010

Parte 1

Correcao de Notas Q&A

Problema Identificado

Os workflows de Nota Q&A usavam Associated Contact input fields do HubSpot para obter dados como email e nome do contato. Porem, esses input fields sao unreliable — podem passar tokens literais (contact.email, contact.nome_completo_razao_social) em vez dos valores reais.

Causa raiz: HubSpot Custom Code "Associated Contact" input fields podem falhar silenciosamente, passando strings literais como contact.email no lugar do email real do contato.

Resultado: notas criadas nos tickets mostravam:

<p><strong>E-mail</strong></p> <p>&rarr; contact.email</p> <!-- deveria ser o email real -->

Workflows Corrigidos

Workflow HubSpot ID Arquivo Tokens Afetados
Nota Q&A - Produto 1773490979 nota-qa-produto.js contact.email
Nota Q&A - Central de Ajuda 1773491213 nota-qa-central-ajuda.js contact.email, contact.nome_completo_razao_social
Nota Q&A - Prevencao a Fraudes 1773492785 nota-qa-prevencao-fraudes.js contact.email

Solucao Implementada

Dois passos: atualizacao do codigo + correcao do legado.

PASSO 1 Atualizacao do Custom Code Aplicado

Estrategia

  • Substituir contact.email (input field unreliable) por email_solicitante (propriedade do ticket, sempre preenchida pelo form)
  • Manter nome_completo_razao_social via API (busca contact associado)
  • Fallback: se email_solicitante do ticket for null, buscar contact.email via API

Fluxo de dados

Ticket criado pelo Form
    |
    v
Custom Code executa
    |
    +-- email_solicitante (ticket prop) --> prioridade 1
    |       |
    |       +-- se null --> GET /crm/v4/.../associations/contacts
    |                           |
    |                           v
    |                       GET /crm/v3/objects/contacts/{id}
    |                           |
    |                           +-- contact.email --> fallback
    |
    +-- nome_completo_razao_social --> sempre via API (contact)
    |
    v
Nota Q&A criada com valores reais
                        
PASSO 2 Correcao de Notas Legadas Aplicado

Script

fix-legacy-qa-notes.js — script one-time para corrigir notas ja criadas.

Resultado

Metrica Valor
Notas encontradas com tokens literais94
Notas com valores reais resolvidos92
Notas sem contato associado (nao corrigidas)2
Falhas no PATCH0

Logica do Script

  1. POST /crm/v3/objects/notes/search — busca notas contendo contact.email
  2. Para cada nota: resolve ticket associado, busca email_solicitante do ticket
  3. Busca contact associado ao ticket para nome_completo_razao_social
  4. Substitui tokens no hs_note_body
  5. PATCH /crm/v3/objects/notes/{id} com body corrigido
Aprendizado registrado: "Associated Contact" input fields em Custom Code sao unreliable. Preferir propriedades do ticket (email_solicitante) e buscar dados de contato via API quando necessario. Ver HUBSPOT-DEV-PROJECTS.md regra #9.

Parte 2

Spam Detection

Contexto

No dia do Go-Live (09/02/2026), foram identificados tickets recebidos via canal de email (suporte@eduzz.com) que sao spam/lixo. Emails corporativos de RH, fornecedores e sistemas automatizados que nao devem entrar no fluxo de atendimento N1.

Padroes de Spam Identificados

# Padrao Tipo Keyword (subject CONTAINS) Tickets
1 Candidatura / Processo Seletivo RH candidatura 5
2 Vaga Aprovada RH vaga que voc 2
3 Vaga Aprovada (variacao) RH vaga aprovada 1
4 Onvio Portal (TOTVS) Fornecedor Onvio Portal 2
5 Metabase Login Sistema Metabase login 2
6 SUCESSO BRINDES (Fornecedor) Fornecedor SUCESSO BRINDES 1
7 NFE 1583 (Boleto Fornecedor) Fornecedor NFE 1583 2
Nota: "BOLETO INDEVIDO" foi excluido da classificacao de spam — pode ser um cliente real da Eduzz. Requer analise caso a caso.

Tickets Classificados

Acao Quantidade Detalhes
Tickets originais reclassificados 15 Owner: Guilherme Soto | Priority: LOW
Copias N1 reclassificadas 14 Owner: Guilherme Soto | Priority: LOW
Total de tickets atualizados 29 Via PATCH /crm/v3/objects/tickets/{id}

Responsavel: Guilherme Moreno Soto (Team Leader N1 Ticket Cross)

Owner ID: 82538138

Workflow WF-010: Spam Detection

WF-010 [Epic] Spam Detection → Guilherme Soto Disabled

Configuracao

CampoValor
HubSpot ID1773808188
TipoTicket-based
TriggerTicket is created
StatusDISABLED (ativar apos validacao)
PATEPIC_ADMIN_TOKEN (requer scope automation)

Filtros de Enrollment (OR)

O ticket entra no workflow se o subject contiver qualquer um dos termos abaixo:

subject CONTAINS "candidatura" -- RH: processos seletivos subject CONTAINS "vaga que voc" -- RH: vaga aprovada subject CONTAINS "vaga aprovada" -- RH: variacao subject CONTAINS "Onvio Portal" -- Fornecedor: TOTVS subject CONTAINS "Metabase login" -- Sistema: notificacao automatica subject CONTAINS "SUCESSO BRINDES" -- Fornecedor: propaganda subject CONTAINS "NFE 1583" -- Fornecedor: boleto indevido

Acoes

  1. Set Property: hubspot_owner_id = 82538138 (Guilherme Soto)
  2. Set Property: hs_ticket_priority = LOW

Fluxo

Ticket criado via Email (suporte@eduzz.com)
    |
    v
[subject CONTAINS spam keyword?]
    |
   SIM                         NAO
    |                           |
    v                           v
Set Owner: Guilherme Soto   Fluxo normal (N1)
Set Priority: LOW
    |
    v
Guilherme analisa/descarta
(nao entra no fluxo N1)
                        
Importante: O workflow foi criado como DISABLED. Deve ser ativado manualmente apos validacao no HubSpot. Pode ser usado como criterio inicial antes do roteamento N1, para garantir que spam nunca chegue ao time.

Parte 3

Padronizacao de Pipelines N3

Contexto

Os 5 pipelines N3 operacionais (exceto N3 Tech) foram padronizados para seguir as mesmas 9 stages do pipeline de Suporte Principal, garantindo consistencia no fluxo de atendimento.

Pipelines Padronizados

Pipeline ID Status
N3 Prevencao a Fraude 865419938 Padronizado
N3 Juridico 865555876 Padronizado
N3 Ciberseguranca 865556655 Padronizado
N3 Admin/Financeiro 865557642 Padronizado
N3 FinOps 865602174 Padronizado

Stages Padrao (9 stages)

# Stage isClosed
0Novofalse
1Em Analise de Escopofalse
2Em atendimentofalse
3Aguardando Outrosfalse
4Aguardando Clientefalse
5Pendentefalse
6Solucionadofalse
7Fechadotrue
8Fechado sem solucaotrue

Referencia

Arquivos e Links

Recurso Localizacao
Nota Q&A - Produto workflows/nota-qa-produto.js
Nota Q&A - Central de Ajuda workflows/nota-qa-central-ajuda.js
Nota Q&A - Prevencao a Fraudes workflows/nota-qa-prevencao-fraudes.js
Fix Legacy Notes (one-time) workflows/fix-legacy-qa-notes.js
WF-010 no HubSpot Abrir no HubSpot
Aprendizados Dev Projects HUBSPOT-DEV-PROJECTS.md (regra #9)