Pular para o conteúdo
Todos os projetos
Proprietário

Gamificação

Metas, rankings e prêmios para qualquer operação do CRM — não só o que as regras de venda permitiam —, num motor que conta cada fato uma única vez, mesmo quando ele é editado ou excluído.

Papel
Criador e mantenedor — concepção, primeira versão, motor de regras e front-end
Período
Set 2025 – Atual
Contexto
Groner
Stack
C# .NET SQL Server DynamoDB Lambda Vue.js TypeScript Bun Hono Prisma ECS SQS

Este trabalho é propriedade da Groner. Ele é descrito em nível de arquitetura, sem código-fonte nem dados de clientes.

Resumo

  • 19 métricas, de vendas a conversas de WhatsApp encerradas
  • Pontos, dinheiro, OTE e medalhas
  • Cada fato contado uma vez — edições e exclusões incluídas

Contexto

Os clientes da Groner têm times de vendas e de campo, e querem premiá-los. O CRM já pagava comissão sobre propostas e vendas — mas só sobre elas.

O problema

Os clientes não conseguiam comissionar ou bonificar nenhuma outra operação da empresa; ficavam limitados às regras de negócio de propostas e vendas dentro do CRM. Visitas, instalações, tarefas e ordens de serviço — o trabalho que mantém uma empresa de energia solar funcionando — ficavam sem prêmio.

Meu papel

Idealizei o módulo e construí sozinho a primeira versão: um serviço separado em Bun, Hono e Prisma no ECS, alimentado pelo CRM via SQS. Depois que um colega portou o módulo para a API em .NET, construí o motor de regras e de reconciliação que roda hoje e novos tipos de meta, e sou eu quem mantém o módulo. O front-end também é quase todo meu.

Arquitetura

Motor de gamificação Cerca de sessenta pontos do CRM — vendas, propostas, leads, visitas, instalações, tarefas e conversas de WhatsApp — informam fatos ao motor de gamificação, cada um com o total com que deveria contribuir. O motor aplica as regras de cada meta e grava a diferença de forma atômica no SQL Server, junto do histórico de contribuições e do extrato de pontos. Início de ciclo, lembretes e encerramentos vêm de um agendador apoiado no DynamoDB. Os resultados chegam aos times como rankings e jornada, notificações e, quando um prêmio em dinheiro é resgatado, títulos a pagar no financeiro. ~60 pontos do CRM Para os times Vendas propostas · leads Operação visitas · instalações Atividades tarefas · conversas Motor de gamificação regras · reconciliação Rankings e jornada níveis · sequências · loja Notificações metade · prazo · estagnação Financeiro prêmio em dinheiro → título SQL Server metas · histórico · extrato DynamoDB + agendador ciclos · lembretes fatos Δ atômico agendados
Cada fato informa o total com que deveria contar; o motor grava só a diferença.
  • Fatos de todo lugar. Cerca de 60 pontos do CRM — vendas, propostas, leads, tarefas, visitas, instalações, ordens de serviço e WhatsApp — informam um fato depois de gravar os próprios dados, com todos os envolvidos e o papel de cada um.
  • O motor. Cruza cada fato com as metas ativas e aplica as regras de cada uma — quais papéis recebem crédito e quanto, valores mínimos, tetos, carências, filtros por origem do lead ou tipo de venda — antes de atualizar o progresso, o extrato de pontos e os prêmios.
  • Etapas no tempo. Início de ciclo, metade, lembretes e encerramento vêm de um agendador apoiado no DynamoDB, com chaves de idempotência.
  • Para os times. Rankings, projeção de progresso, níveis, sequências e conquistas no front-end; resgatar um prêmio em dinheiro gera um título a pagar no financeiro do CRM.

Decisões-chave

  • Enviar o total, aplicar a diferença. Um fato não soma +1: ele informa o total com que deveria contribuir para cada meta. O motor guarda uma linha de histórico por meta e origem e aplica só a diferença com um update atômico — então um fato enviado duas vezes não muda nada, uma edição reenvia o novo total, e uma exclusão envia zero e estorna o crédito.
  • Uma regra, dois caminhos. Cada uma das 13 regras tem uma versão por evento, para os fatos ao vivo, e uma versão por consulta, usada para reconstruir uma meta a partir das tabelas de origem. Um teste de paridade garante que os dois caminhos concordem.
  • Prêmios seguros como dinheiro. Os pontos ficam num extrato, débitos só passam quando o saldo cobre, e resgates parciais rodam numa transação serializável.

A parte mais difícil

Performance e integridade. A gamificação roda dentro de cerca de 60 operações do CRM, então nunca pode deixá-las lentas nem quebrá-las — os erros dela são registrados, nunca propagados — e ainda assim precisa contar cada fato exatamente uma vez.

Por isso as regras não acessam o banco de dados por meta, cada evento carrega detalhes extras numa única consulta e só quando alguma meta precisa deles, as buscas de usuários vão em lote e os resumos são agregados no SQL. Essa última parte importa quando o pool de conexões é compartilhado por centenas de bancos de dados de clientes.

Resultados

  • As empresas premiam o trabalho que importa para elas: 19 métricas, de vendas e propostas a visitas técnicas, instalações e conversas de WhatsApp encerradas.
  • Metas para a empresa toda, uma filial, um time ou uma pessoa, fixas ou recorrentes, pagas em pontos, dinheiro, OTE ou medalhas — com uma loja de pontos por cima.
  • Notificações mantêm os times no ritmo: na metade da meta, nos últimos dias e quando ela estagna.