
Camada 01 · Engenharia técnica direta
A Fabrik7 não patrocinou a Copa. Ela é a Copa em Itapetininga.
O Palpiteiros é a plataforma que faz cada mesa virar um time. Construída pelo grupo ATUO, com engenharia em produção desde o primeiro QR.
Uma ativação presencial onde estar na casa vira pontuação, premiação real vira voucher da marca, e o palpiteiro só sente o jogo. A engenharia some.
Venture do grupo ATUO · engenharia Code and Soul
O que estava em jogo
Premiação real, marca real, 38 dias para acertar.
A Fabrik7 não queria patrocinar a Copa. Queria ser onde a Copa acontece em Itapetininga. Isso exigia uma ativação que funcionasse desde o primeiro QR Code escaneado até o último voucher entregue. Sem disputa, sem fricção, sem desculpa técnica.
Um único bug visível durante a Copa custaria horas de pressão pública: em mesa, no Instagram, no boca-a-boca. Plataforma offline em dia de Brasil viraria evento de marca, não incidente técnico.
A engenharia precisava sumir. Para o palpiteiro, só o jogo.

A experiência na mesa
Cliente escaneia o QR. Entra na Copa da casa.
O cliente não baixa app, não cria senha, não cadastra cartão. Passa pela porta, senta, e a Copa começa nele.

- 01
No portão
Chegou na Fabrik7, escolheu mesa. Toda mesa tem um QR Code próprio.
- 02
No primeiro escaneio
Abre o cardápio digital, vê o botão "Entrar no Palpiteiros". Identidade vem do Odoo, sem login, sem cadastro.
- 03
Onboarding bloqueante
Escolhe time de ataque, time de defesa, jogador estrela, azarão favorito. Palpita todos os jogos da fase atual. Sem isso, não entra na competição.
- 04
Durante a Copa
Acompanha placar em tempo real, vê ranking ao vivo, sente o impacto das suas escolhas a cada gol. Check-in nos jogos do Brasil vira bônus.
- 05
No fim do torneio
Premiação em voucher Fabrik7. Quem vence volta pra casa. A Copa termina, a relação com a marca não.
É a casa virando QG. A Copa não acontece no estádio nem na TV. Acontece na mesa.
Ecossistema ATUO em ação
Cada camada do grupo na sua área. Em arranjo, sem fronteira artificial.
O Palpiteiros é um projeto de grupo. Estratégia, produto, engenharia e operação física, cada uma com responsabilidade clara e ponto de contato direto.
ATUO.agency
Estratégia · Narrativa · Regulamento
Conceito da ativação, naming, regulamento próprio com 37 cláusulas e 14 regras numeradas de pontuação, posicionamento e comunicação na casa.
ATUO.digital
Produto · Design · Experiência
Desenho do produto, identidade visual do Palpiteiros, UX do onboarding bloqueante, fluxo de palpitação live e experiência presencial na mesa.
Code and Soul
Engenharia · Plataforma · Operação
Arquitetura serverless, 25 Lambdas, 21 DynamoDB, WebSocket, scoring engine, ledger imutável, simulador end-to-end, security gate e operação durante a Copa.
Fabrik7 Brewing & Co
Cliente · Venue · Odoo POS
Casa onde a ativação acontece. Cardápio digital em Odoo emite o token de sessão por mesa, sustenta o partner_id único e banca os prêmios em voucher.
Impacto
O que a Fabrik7 leva.
Uma plataforma própria de ativação, que opera o torneio inteiro, registra cada palpite com auditoria completa e devolve premiação sem disputa. Tudo em janela curta e custo controlado.
25
Lambdas em produção com 30+ endpoints admin
21
tabelas DynamoDB com PITR e snapshots pré-Copa
3h50
Copa completa simulada antes do primeiro kickoff
6
bugs críticos pegos no simulador antes de produção
Como abordamos
Como construímos.
Seis decisões de arquitetura que viraram padrão do projeto.
Presencial-first
Token de sessão atrelado à mesa, não ao dispositivo. Sai do bar, perde a sessão em 15 min. Check-in no estabelecimento vira pontuação na regra §14.
Ledger imutável e trilha de auditoria
Sk determinístico por jogo+regra: rescore sobrescreve, não duplica. picks-history append-only. Toda tentativa rejeitada registrada com IP e User-Agent. Toda ação de staff logada em admin-audit.
Anti-fraude embarcado
Limite de placares iguais bloqueia palpite "1×0 em tudo". Lock per-match 15 min antes do kickoff. Onboarding bloqueante para quem chega tarde. Conta única por partner_id, vinculada ao Odoo.
Mata-mata em cascade real
Os 32 jogos da fase eliminatória só aparecem quando os 72 jogos de grupos terminam. Times virtuais (winner-r32-1) viram reais no momento certo. Sem palpite no escuro.
Simulador end-to-end
Ambiente espelho com mesmo SAM stack. match-simulator gera eventos sintéticos. bot-palpiteiros palpita por contas-bot. A Copa completa (104 jogos) rodou em 3h50 reais e revelou seis bugs antes de produção.
Serverless que escala e desliga
25 Lambdas Python 3.12 arm64. HTTP API + WebSocket. 21 DynamoDB com PITR. SAM em nested stacks. Cost Anomaly Detection diário. Pico de Copa absorvido em on-demand. Custo residual zero quando o torneio termina.
Arquitetura
O sistema em uma imagem.
Mesa, Odoo, CDN, API, real-time, computa, dados e ingestão. Cada camada com responsabilidade clara, sem máquina parada quando a Copa acabar.
Lições aprendidas
Cinco coisas que só aprendemos construindo.
Plataforma boa não nasce do diagrama. Nasce de cada bug pego antes de produção. Estas são as cinco que viraram política do projeto.
Drift silencioso em nested stack de API Gateway
Causa raiz
O stack pai não detectava drift quando recursos do nested eram apagados. Quatro rotas sumiram sem aviso. detect-stack-drift no stack pai retornava IN_SYNC, mesmo com tudo já fora do lugar.
O que fizemos
Alarme CloudWatch monitorando o count de rotas no API Gateway. Mudou: regra do projeto vira correr drift detection no nested, não no pai.
Decimal do DynamoDB virando string no front-end
Causa raiz
`json.dumps(default=str)` serializa Decimal como string. Quando o front faz `Number()`, a string passa por silêncio. Pontuação acumulada virava concatenação ("2"+"3" = "23"), não soma.
O que fizemos
Encoder customizado que converte Decimal para int/float antes de serializar. Virou padrão do projeto. Toda Lambda nova herda.
Simulador parece luxo até o primeiro bug em produção
Causa raiz
Race conditions em knockout_trigger quando kickoffs reais sobrescreviam a compressão de tempo da simulação. Edge cases de UX em onboarding bloqueante. Tudo coisa que só aparece com 104 jogos rodando.
O que fizemos
sim.palpiteiros como ambiente espelho com mesmo SAM stack. Match-simulator + bot-palpiteiros. Copa completa em 3h50 antes do primeiro kickoff real. Seis bugs críticos pegos.
Write-once + força maior incompatíveis sem cláusula
Causa raiz
Política rígida de não-edição de palpites depois do lock blindava integridade, mas queimava relação quando jogador era cortado oficialmente da Copa. Palpiteiro perdia ponto por algo fora do controle dele.
O que fizemos
Cláusula §13.1 no regulamento + procedimento manual no admin para re-escolha em caso de força maior. Trilha completa no admin-audit. Integridade preservada, relação preservada.
CORS preflight bloqueando rota com JWT
Causa raiz
Browser rejeita OPTIONS quando o handler exige Authorization. Mesmo com CorsConfiguration global no API Gateway, o preflight passa pelo JWT authorizer e morre.
O que fizemos
Rota OPTIONS standalone sem auth para cada endpoint protegido. Padrão de template do projeto. Toda extensão nova inclui OPTIONS por default.
O que isso significa
Construímos plataforma. Você opera campanha.
Esse projeto não é sobre Copa do Mundo. É sobre o que acontece quando engenharia entra antes da campanha: o produto fica em pé sem você precisar pensar nele.
Para quem está planejando uma ativação presencial, uma campanha com janela curta, uma plataforma event-driven que vai operar dois meses e desligar, esse case é a evidência de que existe um jeito de fazer isso virar produção, não improviso.
Engenharia primeiro. Para a campanha acontecer.

Tem uma ativação presencial ou plataforma event-driven na mesa?
Se o seu produto precisa escalar em janela curta, com integridade e custo controlado, vale uma conversa técnica direta.
Engenharia não é decoração. É direção.