Ir para o conteúdo principal
GUILHERME

Inteligência contra fraudes

Aegis

Uma plataforma de investigação de fraudes que projetei, construí e coloquei em produção sozinho — das regras de detecção ao WebGL que as desenha.

Uma operadora brasileira de apostas precisava que seus analistas parassem de remontar o histórico de cada jogador na mão. Construí tudo, com assistência de IA: os fluxos de investigação, o motor de detecção, a API, os pipelines de dados, o modelo de segurança, a implantação e a visualização em WebGL que desenha 25.000 jogadores de uma vez. O Aegis leva o analista do sinal até a evidência por trás dele sem sair da tela.

Papel
Desenvolvedor de Software
Período
Abril de 2026–presente
Estado
Em produção
Código-fonte
Privado

A sequência de abertura do Aegis — 9 segundos, sem áudio

O filme começa quase completamente escuro. Uma pequena íris azul, cercada por anéis segmentados concêntricos, brilha no centro de uma estrutura escura em forma de escudo enquanto cortinas sutis de aurora se movem ao fundo. A íris ganha intensidade e seus anéis entram em foco. A marca Aegis surge em metal escovado, com as palavras "fraud intelligence" em tamanho menor abaixo, refletidas no piso. A marca se dissolve enquanto a câmera se fixa no emblema, envolto por luz e partículas, e a aurora desaparece no escuro. Não há som.

Toda investigação começava do zero

Um analista que quisesse entender uma conta suspeita tinha que montar a história na mão. Identidade e dados cadastrais ficavam no banco operacional. Depósitos, saques, apostas, saldos e eventos de jogo se acumulavam no lakehouse analítico. A história do jogador existia, mas em pedaços, espalhada por dois sistemas que nunca foram feitos para serem lidos juntos.

Eu também queria que a resposta aguentasse questionamento. Uma pontuação sozinha não serve para quem precisa justificar o bloqueio de uma conta, então todo achado do Aegis diz qual regra disparou e mostra a evidência que a disparou.

O caminho que uma requisição faz

O Aegis é uma aplicação React estática conversando com um serviço FastAPI focado em leitura, e esse serviço lê um schema PostgreSQL que desenhei para investigação. O lakehouse fica fora do caminho da requisição. Esse limite compra um caminho de leitura previsível e mantém o acesso à evidência sensível em um lugar só, sob meu controle.

Jobs agendados trazem perfis, carteiras, transações, saldos horários e dados de visualização do Databricks para o PostgreSQL e emendam direto nas varreduras de detecção, de hora em hora. O Redis atende primeiras leituras selecionadas: os jobs escrevem, a interface só lê.

What a request touches

  1. Investigator UIReact single-page app, served as a static bundle
  2. FastAPI serviceRead-focused JSON API, and the only authorization authority
    1. Curated PostgreSQL schemaWhat the product reads for profiles, findings, and history
    2. Databricks lakehouseAnalytical source, read on a cache miss
    3. Redis cacheOptional, fronts the busiest reads

What keeps that data current

  1. Databricks lakehouseProfiles, wallets, transactions, and hourly balances
  2. Scheduled sync and detection jobsSync, then detection scans, chained hourly
  3. PostgreSQL and cache refreshJobs write; the interface only reads
Tela de visão geral do Aegis: um console escuro com menu lateral em português, resumo de risco com 25.000 jogadores analisados e 97 com sinal, e um campo de pontos sutis com um agrupamento âmbar.
A visão geral, rodando sobre 25.000 perfis sintéticos. A interface é em português.

01 — Fiz dele um produto separado

Eu podia ter pendurado telas de fraude em um sistema que já existia, e ninguém teria reclamado. Em vez disso, construí o Aegis como produto próprio: schema próprio, API própria, implantação própria, ciclo de release próprio.

Duas coisas me levaram a isso. Fluxo de fraude muda toda vez que aparece um padrão novo, e eu queria entregar essas mudanças sem encostar em mais nada. E a evidência por trás de um achado — documentos, histórico de transações — pede um modelo de autorização mais apertado do que o usuário interno médio deveria herdar.

Essa decisão me entregou toda a superfície de segurança para cuidar: sessões, proteção contra CSRF, autenticação multifator, hashing Argon2, permissões, credenciais restritas para os jobs, auditoria de segurança. Assumi. A API é a única autoridade de autorização.

02 — Parei de consultar o lakehouse a cada clique

Os dados de evento vivem no lakehouse, e apontar a interface direto para lá teria sido o caminho mais rápido até um dashboard funcionando. Também teria amarrado cada passo dentro da timeline de um jogador à latência do warehouse e ao medidor de cobrança.

Então o caminho dos dados se divide. Jobs agendados copiam o que o produto precisa para o schema curado, um pipeline horário roda sincronização e depois varredura, e o Redis absorve as leituras que se repetem.

O Aegis, portanto, lê dados recentes em vez de dados ao vivo, e essa escolha foi deliberada. O comportamento que estou detectando — estruturação, velocidade, documento repetido — se desenvolve ao longo de horas e dias. Frescor que eu não precisava não valia a latência que eu teria pago por ele.

03 — Segui o caminho real do analista

Um dashboard te diz que um número está alto. É aí que o trabalho dele acaba e o do analista começa, que é exatamente o lugar errado de parar. O Aegis segue o caminho que a pessoa percorre de verdade: uma fila de triagem agrupada por regra, que abre em uma visão do jogador reunindo perfil, saldos, transações, gameplay, achados em aberto e relatórios gerados no mesmo lugar.

Todo achado carrega sua regra, categoria, nível de confiança e a evidência que o disparou. As regras rodam em shadow mode por padrão e são promovidas para o modo ativo de propósito, nunca por acidente. Os achados que o analista está trabalhando ficam em uma lista local no navegador.

E tem a Constelação de Risco. Desenho a população pontuada inteira como um campo de pontos na GPU, com cor e brilho para risco e posição para puxar os jogadores sinalizados para fora da multidão. Começou como uma pergunta: dá para ler 25.000 jogadores de uma vez? Acabou que agrupamento e ponto fora da curva são muito mais fáceis de enxergar do que de consultar.

Tela de investigação de jogador mostrando saldos, depósitos, pontuação de risco 35 com alta confiança, regras acionadas e um achado expandido de estruturação de depósitos com as evidências correspondentes.
Um achado aberto na evidência que o sustenta. Todo valor aqui, inclusive o número do documento, é sintético.
A Constelação de Risco: um amplo campo escuro com milhares de pontos sutis e um agrupamento âmbar brilhante, acompanhado por um painel que divide 25.000 jogadores entre níveis crítico, alto, médio, baixo e sem sinal.
25.000 jogadores sintéticos posicionados por risco, em cor e brilho.

04 — Fiz uma ferramenta interna que vale olhar

Ferramenta interna tem cara de ferramenta interna porque alguém decidiu que ninguém ia se importar. Eu me importei. O Aegis ganhou um emblema de escudo e íris, um console escuro e uma abertura cinematográfica, e essa identidade se sustenta do primeiro quadro até o ambiente de investigação.

Modelei e animei o emblema no Blender, exportei em FBX, montei e iluminei a cena no Unreal Engine 5, renderizei uma sequência de imagens em 4K e finalizei o filme no DaVinci Resolve. Não é uma coisa normal de se fazer para um console de fraude. Eu quis descobrir se conseguia.

Nada disso atrapalha o trabalho. A sequência roda uma vez por sessão e falha para o lado seguro: se a mídia travar, não puder ser reproduzida ou a pessoa preferir menos movimento, o console simplesmente está lá.

O que eu construí

O Aegis é meu de ponta a ponta. O produto e o design de interação. A aplicação React, o serviço FastAPI, autenticação, permissões. O modelo PostgreSQL, a sincronização com o lakehouse, o pipeline horário, as regras de detecção, a pontuação, os relatórios. Os testes, a implantação, a Constelação de Risco em WebGL e o filme de identidade.

Trabalho AI-native e não tenho pudor nenhum com isso: os agentes aceleraram scaffolding, refatoração, geração de testes e revisão. Toda decisão de arquitetura, todo trade-off e todo julgamento sobre se algo estava realmente bom o suficiente continuaram meus.

O que foi entregue

Coloquei o Aegis em produção. Oito regras configuráveis nas categorias de pagamentos, gameplay, identidade e impacto; execução em shadow mode e em modo ativo; pontuação e achados explicáveis; triagem de alertas; investigação de jogadores; lista de trabalho local no navegador; administração de regras; análise geográfica; Constelação de Risco; auditoria de segurança; e relatórios em HTML, Markdown ou PDF.

Fila de triagem de alertas agrupada por regra, incluindo documento duplicado, identidade incompleta, estruturação de depósitos e volume de créditos promocionais, com códigos, categorias, contagem de alertas, pontuação máxima e painel de evidências.
A fila de triagem, sobre achados sintéticos. Selecionar um alerta abre seu painel de evidências, vazio nesta captura.

Com o que foi construído

React, Vite e React Router entregam a interface. O FastAPI expõe a API de leitura. O PostgreSQL é dono do modelo investigativo, o Databricks segue como fonte analítica e o Redis sustenta leituras selecionadas a partir de cache. Sessões opacas, Argon2, TOTP, proteção contra CSRF e permissões aplicadas pela API seguram o limite de segurança.

Three.js e um decodificador de pontos em Web Worker movem a Constelação de Risco. deck.gl e MapLibre cuidam da análise geográfica. O WeasyPrint gera os relatórios. pytest e Jest cobrem os caminhos de backend e de frontend. Blender, Unreal Engine 5 e DaVinci Resolve produziram o filme de identidade.