Painel Arena
Painel interno que junta o atendimento de 8 bots de suporte e o conteúdo de 8 canais de Telegram num lugar só. Webhooks, fila com SLA em tempo real e categorização de posts por IA.
Contexto
Uma ação que escalou mais rápido que a operação
No Arena Afiliados, cada influenciador tem um canal de dicas no Telegram e um bot dedicado de suporte. Uma das mecânicas de conversão mais fortes da operação é o reembolso: o lead segue a dica e, se a aposta não bater e a conta for nova, recebe o valor de volta. Funciona muito bem como incentivo de primeiro depósito.
Em um grande torneio, a ação escalou além do que o atendimento aguentava. Os pedidos chegavam espalhados por 8 bots diferentes, parte deles ficou sem resposta, e lead frustrado vira afiliado frustrado. O problema estava na visibilidade: ninguém enxergava a fila inteira.
Problema
Oito caixas de entrada e nenhum dono da fila
A pergunta que o painel responde em um olhar: quem está esperando, há quanto tempo e em qual canal.
O que construí
Dois módulos sobre a mesma arquitetura
O padrão é o mesmo nos dois módulos: um evento dispara um webhook, uma função serverless normaliza e grava no banco, e a tela atualiza sozinha. Simples de manter e barato de rodar.
Módulo 1
Central de atendimento com SLA
- 1Mensagem entra ou sai em qualquer um dos 8 botsSendPulseO webhook da plataforma de chatbot dispara nos dois sentidos, o que permite medir tempo de espera e tempo de resposta.
- 2Rota serverless recebe, normaliza e gravaNext.jsCada evento é normalizado e gravado separado por bot, o que permite enxergar os oito canais no mesmo lugar.
- 3Mensagens agrupadas por contato viram conversasSupabaseUma conversa está esperando quando a última mensagem é do lead. O banco guarda o histórico completo de cada thread.
- 4Fila única ordenada por tempo de esperaPainelCronômetro ao vivo em cada card, cor fixa por afiliado, selo de atenção a partir de 1h e crítico a partir de 3h, sempre no topo.
- 5Operador abre a thread, resolve e tira da filaPainelFiltros por canal, tag, nível de SLA e busca por texto. Conversa resolvida sai da fila e continua no histórico.
Módulo 2
Inteligência de conteúdo
- 1Um bot único entra como admin nos canaisTelegram Bot APIUm bot pra todos os canais em vez de um por afiliado: mesmo trabalho de instalar, muito menos manutenção. O painel separa por canal.
- 2Cada post é ingerido no momento da publicaçãoNext.jsTexto, tipo de mídia (inclusive vídeo bolinha), horário e presença de link. Link é detectado por regra, sem IA, porque regra não erra e não custa.
- 3Um modelo de linguagem classifica o postClaude HaikuTaxonomia por objetivo: dica, análise, green, red, reembolso, cadastro, promo, enquete, interação. Também marca casa, modalidade e gatilho.
- 4Volume por categoria ao longo do tempoPainelBarras empilhadas por dia ou semana, filtro por canal e comparativo lado a lado entre afiliados, na mesma escala.
- 5Do gráfico até a mensagem, sob demandaPainelClicar numa categoria abre as postagens reais daquele afiliado já filtradas. Gráfico como padrão, detalhe quando precisa.
Decisões
As escolhas que fizeram o painel funcionar
- →Crítico é só tempo de espera. Dava pra misturar tipo de caso, valor e humor do lead. Ficou só o relógio, porque uma regra que todo mundo entende é uma regra que todo mundo segue.
- →Rastreador de pendências em vez de mais uma caixa de entrada. A visão padrão mostra só quem está esperando. O que já foi respondido sai da frente.
- →IA onde ela agrega, regra onde regra basta. Classificar a intenção de um post pede modelo de linguagem. Saber se tem link pede uma expressão regular.
- →O humano interpreta, o painel organiza. O sistema mapeia e categoriza tudo. A leitura de qual conteúdo puxa conversão continua com quem conhece a operação.
Meu papel
Do problema ao deploy
Identifiquei o problema dentro da operação, desenhei o produto e construí. Programei com IA como par de programação (Claude Code), o que me permitiu sair de designer que especifica pra pessoa que entrega a ferramenta rodando.
- →Definição do produto: escopo dos dois módulos, regra de SLA e taxonomia de conteúdo
- →Arquitetura: webhooks, funções serverless e atualização em tempo real
- →Integração com a plataforma de chatbot e com a API de bots do Telegram
- →Classificação de posts com modelo de linguagem, com backfill em lote e custo controlado
- →Interface: fila, thread de conversa, filtros, gráficos e comparativo entre afiliados
- →Deploy, autenticação e diagnóstico com dado real de produção
Stack
Next.js, TypeScript, Tailwind, Supabase (Postgres e Realtime), webhooks do SendPulse, Telegram Bot API, API da Anthropic (Claude Haiku) e Vercel.
Aprendizados
O que esse projeto me ensinou
- →Automação sem observabilidade é um risco. Um fluxo que roda sozinho também erra sozinho. Todo fluxo que construo hoje nasce com registro do que entrou, do que saiu e de um alerta pra quando algo foge do esperado.
- →Ferramenta interna também é produto. Se o time não abre, não existe. A fila precisa ser mais fácil de usar do que de ignorar.
- →Documentação é hipótese, payload real é fato. Testar com dado de produção desde o primeiro dia evitou muito retrabalho.
- →Growth que constrói decide melhor. Saber o que custa meia hora e o que custa um mês muda completamente o que eu proponho numa reunião.