Como Construir Soluções de IA e Nuvem para Desafios Reais de Delivery!
Introdução: A Engenharia de IA no Mundo Real
No cenário moderno de tecnologia, onde a Inteligência Artificial deixou de ser um conceito teórico para se tornar o motor central das grandes operações de negócios, a criação de soluções escaláveis exige muito mais do que chamadas de API genéricas. Em ecossistemas de altíssima concorrência e volume massivo — como o mercado de delivery alimentício liderado pelo iFood —, cada componente de software precisa aliar velocidade operacional, resiliência serverless, segurança biométrica e custo de computação otimizado.
Para responder a dores operacionais concretas do mercado — desde a fricção no cadastro de novos parceiros até a mitigação de fraudes e a personalização de pedidos em milissegundos —, desenvolvi uma suíte de 4 projetos de engenharia de software e IA aplicados na AWS, com simuladores locais offline e arquiteturas em Python.
Neste artigo, apresento a arquitetura interna, os algoritmos defensivos e os padrões de design adotados em cada uma dessas quatro soluções corporativas, demonstrando como unir Inteligência Artificial Tradicional, Visão Computacional, IA Generativa e Serviços Nativos em Nuvem para resolver problemas de negócios reais.
1. Onboarding Automatizado de Entregadores (ifood-onboarding-automated)
🎯 O Desafio de Negócio
No modelo tradicional de expansão de frotas de delivery, a validação de documentos de identidade (como a Carteira Nacional de Habilitação - CNH) é realizada manualmente por equipes de backoffice. Esse processo gera três gargalos críticos:
- Lentidão no Onboarding: O tempo de espera para liberação do entregador na plataforma pode levar dias, gerando insatisfação e perda de engajamento (churn cadastral).
- Custo Operacional Elevado: Necessidade de alocar equipes massivas para analisar manualmente milhares de imagens diariamente.
- Fadiga e Erro Humano: Dificuldade em identificar inconsistências sutis em números de CPF ou CNHs vencidas sob alto volume de trabalho.
🛠️ Arquitetura e Processamento com Amazon Textract
Para automatizar esse fluxo, a arquitetura utiliza o Amazon Textract por meio da API especializada AnalyzeID. Diferente do OCR convencional — que extrai apenas texto bruto sem semântica —, o AnalyzeID utiliza modelos de Machine Learning treinados para reconhecer documentos de identidade sem a necessidade de criação de gabaritos (templates) manuais rígidos.
O fluxo de dados integra a recepção da imagem do documento no Amazon S3, o disparo do evento para o AWS Lambda, o processamento estruturado no Textract e o armazenamento final de status no Amazon DynamoDB.
A lógica central em Python (src/onboarding_cnh.py e src/utils.py) intercepta os dados estruturados e aplica um conjunto de regras defensivas de negócio:
- Validação Matemática de CPF: Executa o algoritmo oficial de dígitos verificadores da Receita Federal (módulo 11), rejeitando instantaneamente documentos com sequências numéricas fraudulentas ou matematicamente inválidas.
- Verificação Temporal de Validade: Compara a data de vencimento da CNH extraída com o fuso horário atual do servidor, sinalizando documentos expirados.
- Checagem de Categoria da Habilitação: Valida se a categoria da CNH (ex: A, B ou superior) é elegível para o veículo cadastrado.
- Filtro de Confiança da IA (Confidence Threshold): O algoritmo analisa a métrica de probabilidade fornecida pelo Textract para cada campo essencial. Se a pontuação de confiança for inferior a 90% (provocada por fotos tremidas, sombras ou baixa resolução), o cadastro é desviado para uma fila de revisão humana (Human-in-the-Loop), garantindo rigor e zero fraude cadastral.
2. Prevenção de Fraude Biométrica Facial (ifood-facematch-antifraude)
🎯 O Desafio de Negócio
O compartilhamento não autorizado e o aluguel ilegal de contas de entregadores em plataformas de delivery representam sérios riscos de segurança para o cliente final, além de expor a empresa a passivos jurídicos e reputacionais. Era fundamental criar um mecanismo dinâmico de autenticação que confirmasse a presença do titular legítimo no momento em que ele inicia seu expediente.
🛠️ Segurança Biométrica com Amazon Rekognition
O sistema ifood-facematch-antifraude implementa uma solução de biometria facial utilizando a API compare_faces do Amazon Rekognition. O motor compara em tempo real a selfie capturada pelo aplicativo antes do início do turno com a foto oficial da CNH arquivada com segurança durante o onboarding.
Tratando-se de Dados Pessoais Sensíveis (Biometria Facial), a solução foi concebida sob os preceitos da LGPD (Lei Geral de Proteção de Dados):
- Validação de Borda: O script valida a extensão (
.png,.jpeg) e limita o tamanho máximo do arquivo em 5 MB localmente antes de disparar chamadas de rede, reduzindo tráfego desnecessário. - Criptografia em Repouso: As imagens de referência no Amazon S3 utilizam chaves gerenciadas no AWS KMS (AES-256).
- Ciclo de Vida Volátil: As selfies diárias são tratadas como dados temporários e possuem políticas de expiração no S3 configuradas para exclusão em até 24 horas após o término da validação, prevenindo a retenção indevida de dados biométricos.
3. Digitalizador Inteligente de Cardápios Físicos (ifood-menu-digitizer)
🎯 O Desafio de Negócio
Para pequenos e médios restaurantes (merchants), o preenchimento manual do cardápio digital (inserindo nome do prato, descrição de ingredientes e preços) representa a maior barreira de entrada na plataforma, gerando desistências (churn no onboarding) e erros operacionais no faturamento.
🛠️ Leitura de Layouts Tabulares com Amazon Textract Tables
O ifood-menu-digitizer resolve essa fricção ao permitir que o comerciante envie uma simples foto do seu cardápio em papel. O pipeline aciona o Amazon Textract com a funcionalidade avançada de análise de Tabelas (analyze_document com a feature TABLES).
Diferente da leitura sequencial de texto, o Textract mapeia a geometria bidimensional do documento, identificando blocos do tipo TABLE, CELL e WORD. O motor Python (src/menu_processor.py) implementa as seguintes otimizações técnicas:
- Mapeador Hash $O(1)$: Constrói um dicionário de indexação (
block_map) para mapear os IDs de relacionamento em tempo constante $O(1)$, evitando travessias lentas de grafos $O(N)$ em estruturas de dados complexas. - Parser de Layout Dinâmico (2 ou 3 Colunas): Adapta-se automaticamente a cardápios simples (Prato e Preço) ou refinados (Prato, Ingredientes e Preço).
- Normalização Financeira em BRL: Executa expressões regulares em Python para tratar variações textuais de preços (
R$ 49,90,35.00,15,00 Lanche), convertendo-as em números decimais sanitizados. - Mapeamento Lógico de Cortesias: Mapeia termos como "Grátis", "Cortesia" ou "Free" para o valor decimal
0.0. - Filtragem de Cabeçalhos: Identifica e descarta automaticamente linhas administrativas (como "Item", "Descrição", "Preço"), retornando um JSON limpo e diretamente consumível pela API de catálogo.
4. Orquestrador Serverless de Delivery com Step Functions e GenAI (delivery-assistant-stepfunctions-bedrock)
🎯 O Desafio de Negócio
Em sistemas de delivery de alta concorrência, a orquestração do pedido precisa aliar precisão transacional (validação, cobrança, cozinha) com uma comunicação humanizada e personalizada ao cliente, sem comprometer a latência ou introduzir acoplamentos frágeis entre microsserviços.
🛠️ Máquina de Estados Finitos com Integração Direta ao Bedrock
A solução implementa uma Máquina de Estados Finitos (FSM) no AWS Step Functions definida em Amazon States Language (workflow.asl.json), integrada diretamente ao modelo Claude 3 Haiku no Amazon Bedrock.
O fluxo orquestrado executa os seguintes passos encadeados:
ValidarPedido(AWS Lambda): Verifica a consistência dos itens e do endereço. Se inválido, desvia paraNotificarPedidoInvalido(Fail).GerarPersonalizacaoBedrock(Amazon Bedrock): Chama o modelo generativo para sintetizar uma saudação personalizada e uma recomendação relevante de acompanhamento.ProcessarPagamento(AWS Lambda + Gateway): Processa a transação financeira. Se recusada, desvia paraNotificarFalhaPagamento(Fail).DespacharParaCozinha(AWS Lambda): Envia o pedido aprovado para a cozinha e finaliza emPedidoConcluidoComSucesso(Succeed).
Destaques de Engenharia e Resiliência Cloud:
- Integração de Serviço Direta (
bedrock:invokeModel): Em vez de envelopar a chamada à IA Generativa dentro de uma função AWS Lambda intermediária — o que geraria custos desnecessários de computação e latência de cold start —, o Step Functions gerencia o ciclo de vida da requisição diretamente com o Bedrock. - Manipulação Cirúrgica de Payloads: Usa
Parameterspara estruturar o prompt,ResultSelector($.Body.content[0].text) para filtrar exclusivamente a resposta textual eResultPath($.assistenteIA) para anexar a sugestão generativa de acompanhamento e a mensagem acolhedora sem sobrescrever o payload original do pedido. - Resiliência com Backoff Exponencial: Define políticas de retentativa para exceções de throttling e timeout (
Bedrock.ThrottlingException,Bedrock.ModelTimeoutException) com intervalo inicial de 2 segundos, multiplicador de 2x e limite de 3 tentativas.
🌐 Links e Repositórios no GitHub:
- 🛠️ Onboarding Automatizado: cleofasjunior/ifood-onboarding-automated
- 🔒 Biometria Antifraude: cleofasjunior/ifood-facematch-antifraude
- 🍕 Digitalizador de Cardápios: cleofasjunior/ifood-menu-digitizer
- 🛵 Orquestrador Step Functions & Bedrock: cleofasjunior/delivery-assistant-stepfunctions-bedrock
Artigo desenvolvido por Cleófas Júnior para a comunidade da plataforma DIO.



