Sistemas que construí
O case: de R$40 mil/mês em vendas a R$2,5 milhões faturados numa Black Friday 2025 — com a máquina que construí. Aqui estão os 6 sistemas por trás disso, com mais profundidade técnica do que cabe na página inicial, e mais.
O case: de R$40 mil/mês em vendas a R$2,5 milhões faturados numa Black Friday 2025 — com a máquina que construí. Aqui estão os 6 sistemas por trás disso, com mais profundidade técnica do que cabe na página inicial, e mais.
Pra sua loja: um lugar só onde você vê o lucro real de cada anúncio, produto e canal — e decide sem achismo.
O desafio
O número da operação vivia espalhado: anúncios numa tela, pedidos noutra, estoque e financeiro à parte. Faltava uma visão geral única — um BI que cruzasse tudo, sem dupla contagem, para decidir sobre dado real.
O que construí
Um BI completo que puxa dado de todos os lados — pedidos da Shopify, gasto de Meta e Google, estoque, financeiro, afiliados e metas — e calcula o retorno por atribuição last-click não-direto. Banco MariaDB (~106 mil pedidos, tabela de 540 MB) com índice composto, API JWT e servidor MCP com RAG (Qdrant + bge-m3) para perguntar qualquer número em linguagem natural.
Stack
O resultado
Como funciona, em 3 passos
Shopify, Meta, Google, ERP, afiliados, reviews e metas — cada um com seu conector.
Sync a cada 15 min, atribuição last-click não-direto, sem dupla contagem.
API JWT e RAG (Qdrant) respondem qualquer número em segundos.
Detalhe técnico: a tabela-fato consolida ~106 mil pedidos com sync incremental a cada 15 minutos, integrando 7 fontes de dados — Shopify Admin API (REST + GraphQL), Meta Marketing API, GA4 Data API, Tiny ERP de 3 empresas diferentes, UpPromote (afiliados), Stamped.io (reviews) e Google Sheets (metas). A atribuição multi-touch é motor próprio, reconstruído a partir da jornada do cliente (last-click não-direto) — não a API pronta de nenhuma plataforma. PII fica cifrada em repouso com AES-256-GCM, e um HMAC-SHA256 permite contar clientes únicos sem nunca expor o dado em claro. O motor de margem/custo por canal é configurável, então o lucro real considera custo de produto e taxa por canal, não só receita bruta.
Pra sua loja: a verba sobe no que dá lucro e corta o que perde — sozinho, todo dia, sem alguém mexendo no feeling.
O desafio
Ajustar dezenas de campanhas na mão não escala — e escalar sobre ROAS inflado queima caixa. Precisava automatizar a decisão sobre o número real, com travas.
O que construí
Robô Python que lê o sROAS e ajusta orçamento por regra: só sobe acima de 1,5, reduz abaixo de 1,0 e nunca aumenta abaixo de 1. Teto diário soft + kill imediato de quem gasta demais com sROAS baixo.
Stack
O resultado
Como funciona, em 3 passos
Lê o retorno de verdade da Shopify — não o inflado do gerenciador.
Sobe acima de 1,5, reduz abaixo de 1,0, nunca aumenta abaixo de 1.
Teto diário, cooldown e dead-man's switch cuidam do caixa sozinhos.
Detalhe técnico: a atribuição casa venda↔campanha por utm_term=campaign.id — identificador imutável que sobrevive a renomear a campanha — com 4 camadas de fallback caso o parâmetro falhe. Além das travas de sROAS, o autopilot respeita um teto agregado de conta, não mexe em campanha que ainda está na trava de aprendizado do Meta, aplica cooldown de aumento (no máximo 1x a cada N dias por campanha) e limita a variação máxima por rodada para evitar oscilação. O estado persiste cifrado em AES-256-GCM, a chamada à Graph API tem retry com backoff e respeito ao header Retry-After, e um dead-man's switch (heartbeat + healthcheck + alerta no Telegram) avisa se o robô parar de rodar. Roda via supercronic, está na versão 3, com testes unitários e deploy programático.
Pra sua loja: cada cliente vê o produto certo pra ele, o carrinho cresce — e você não paga mais anúncio por isso.
O desafio
O app genérico sugeria produtos sem nexo. A 1ª versão própria, só por lift de co-compra, inflava pares raros e matava o complemento dos best-sellers.
O que construí
Motor híbrido com três sinais rank-normalizados: co-compra por cosseno, similaridade semântica (bge-m3/Qdrant) e popularidade. Intenções complemento/substituto, diversidade por família, penalidade de preço e flag de rollback.
Stack
O resultado
Como funciona, em 3 passos
Co-compra, similaridade semântica e popularidade, cada uma com peso.
Diversidade por família e penalidade de preço evitam viés.
Cold-start via semântico cobre até produto sem histórico.
Detalhe técnico: os três sinais — co-compra, semântico e popularidade — entram normalizados por rank antes de somar, para que uma escala diferente entre eles não domine o resultado sozinha. A intenção complemento/substituto decide se a sugestão empurra "leva junto" ou "alternativa"; a diversidade por família de produto evita mostrar 5 variações do mesmo item; a penalidade de preço evita empurrar sempre o mais caro do catálogo. A flag de rollback existe porque motor de recomendação é o tipo de sistema que erra silencioso — dá para reverter pro sinal anterior sem redeploy.
Pra sua loja: boa parte de quem abandona o carrinho volta e compra — no automático, sem queimar cupom à toa.
O desafio
A recuperação nativa era um e-mail atrasado. E um bug chegou a mandar cupom para quem já comprou — queimando margem.
O que construí
Fluxo por evento de checkout, dual-channel (e-mail + WhatsApp): lembrete em minutos, quebra de objeção, incentivo só no fim. Guard anti-cupom-indevido checando pedido concluído por contato, e-mail, telefone e ID Shopify.
Stack
O resultado
Como funciona, em 3 passos
Dispara em minutos, não horas depois.
Quebra de objeção primeiro, incentivo só no fim.
Confere contato, e-mail, telefone e loja antes de qualquer desconto.
Detalhe técnico: o guard não se contenta com e-mail — cruza contato, e-mail, telefone e ID da loja (Shopify) antes de disparar qualquer lembrete ou cupom. O último campo importa porque a mesma automação atende mais de uma loja: sem o ID da loja no cruzamento, um cliente que já comprou na loja A poderia receber cupom disparado pela loja B só por coincidência de e-mail ou telefone. Foi exatamente essa lacuna — checagem por um campo só — que causou o bug original.
Pra sua loja: o anúncio volta a enxergar cada venda e otimiza melhor — mesmo com bloqueio de cookie no navegador.
O desafio
Com bloqueio de cookie, o pixel perdia conversão e o algoritmo otimizava cego. E o gasto não voltava pra Shopify, travando o cálculo de retorno real.
O que construí
Tracking server-side enviando cada pedido ao Meta via Conversions API com dedup por event_id e hashing de PII (EMQ), + conector que puxa gasto do Meta Graph e GA4 e injeta na Shopify — idempotente, cron diário.
Stack
O resultado
Como funciona, em 3 passos
O pixel do navegador perde a conversão sozinho.
Envia o pedido direto, com dedup por event_id e hash de PII.
EMQ sobe, gasto volta pra Shopify, ROAS real fecha certo.
Detalhe técnico: a Conversions API deduplica eventos por event_id — evita contar a mesma venda duas vezes quando o pixel do navegador e o servidor mandam o mesmo evento — e faz hashing de PII antes de enviar, o que sobe o EMQ (Event Match Quality), a nota que o Meta dá pra qualidade do sinal recebido. O conector que injeta gasto do Meta Graph e do GA4 de volta na Shopify é idempotente (pode rodar de novo sem duplicar linha) e roda em cron diário, mantendo o cálculo de ROAS real sempre com o gasto do dia certo.
Pra sua loja: um só sistema cuida do cliente do carrinho ao pós-venda, com WhatsApp disparando na hora certa.
O desafio
Várias lojas precisavam do mesmo CRM sem manter código diferente por marca, e sem que um bug numa respingasse nas outras.
O que construí
CRM Node + MongoDB com deploy por patches versionados sobre imagem base (cada tenant é rebrand com tag fixa). Automações por override em banco, cupom via OAuth próprio e rastreio no WhatsApp. Webhooks acionam os fluxos.
Stack
O resultado
Como funciona, em 3 passos
Cada tenant nasce do mesmo código, com patch por cima.
Muda o fluxo de uma loja sem subir deploy novo.
Webhook aciona a automação certa, na hora certa, por loja.
Detalhe técnico: cada tenant nasce de uma imagem base comum e recebe patches versionados por cima — rebrand por tag fixa, não fork de código, então uma correção sobe para todas as lojas de uma vez. A automação (que mensagem, quando, pra quem) é resolvida por override gravado em banco por tenant, não por deploy separado — mudar um fluxo de uma loja não exige subir código novo. O cupom é emitido via integração OAuth própria com a Shopify de cada loja, e webhooks de pedido/cliente acionam os fluxos em tempo real.
Remix + Prisma + MariaDB, jobs em cron para reconciliar estado de carrinho e checkout.
Compara com Google Shopping e alerta no WhatsApp quando um concorrente muda de faixa.
Mini-Shopify SSR, PII cifrada, SSL por domínio próprio de cada cliente.
Webhook mantém kits coerentes em tempo real, evitando vender combo sem componente.
PII AES-256-GCM por campo, CNPJ por HMAC para não expor documento em claro.
Consolida gasto Meta+Google para painéis, com normalização de fuso e moeda.
Todo esse conjunto — BI, autopilot, storefront, retenção, tracking e CRM — roda sobre Docker Swarm com Traefik como proxy reverso e TLS automático via Let's Encrypt, somando 15 serviços em produção. A camada de servidor é hardenizada: SSH com acesso restrito, UFW e fail2ban ativos, headers de segurança aplicados nas respostas e portas administrativas liberadas só para IPs específicos. É a mesma disciplina de engenharia que sustenta o pico da Fiber sem cair.
Como cheguei da nutrição e suporte técnico até construir essa máquina — 4+ anos de estrada, na página Sobre mim →.
Autopilot de orçamento, recuperação de carrinho e tracking server-side como serviço — veja em Automação para ecommerce →.
Gestão de Meta e Google Ads sobre ROAS real, não sobre o número inflado do gerenciador — veja em Tráfego pago para ecommerce →.
Sem intermediário e sem compromisso. Me chama no WhatsApp e a gente olha os seus números juntos — costumo responder no mesmo dia útil.
Prefere o direct? Instagram @rafaeltondin →