Quando Dados Sujos Custam R$ 50 Mil: A História Real

Outubro 2023. Cliente grande. 2 milhões de clientes no CRM. Ninguém checou qualidade em 3 anos.

Quando analisamos:

• 47 mil emails duplicados
• 123 mil telefones inválidos
• 89 mil CEPs que não existem

Resultado? 300 mil cartas para endereço errado. Custo: R$ 50 mil + reação reputacional.

Tudo evitado com validação BÁSICA no ponto de entrada.

As 4 Camadas de Validação

Camada 1: Formato. Email tem @? CEP tem 8 dígitos? Telefone tem 11?

Camada 2: Regra de Negócio. Status ativo = sem data_cancelamento? Type PJ = CNPJ obrigatório?

Camada 3: Integridade Referencial. Cliente_id existe? Produto_id está ativo?

Camada 4: Consistência. Valor_total = soma de items? Data_pedido < data_entrega?

Esqueça 1 camada e seus dados entram sujos.

Código Real

import re
      class Validador:
      @staticmethod
      def email(email: str) -> tuple:
      if not email or len(email) < 5:
      return False, "Email vazio"
      if not re.match(r'^[\w\.-]+@[\w\.-]+\.\w+$', email):
      return False, "Formato inválido"
      if email.count('@') != 1:
      return False, "Múltiplos @"
      return True, ""
      @staticmethod
      def telefone(tel: str) -> tuple:
      apenas_digitos = re.sub(r'\D', '', tel)
      if len(apenas_digitos) != 11:
      return False, f"Deve ter 11, recebeu {len(apenas_digitos)}"
      if not apenas_digitos.startswith('1'):
      return False, "Sem DDD"
      return True, ""
      @staticmethod
      def cep(cep: str) -> tuple:
      apenas_digitos = re.sub(r'\D', '', cep)
      if len(apenas_digitos) != 8:
      return False, f"Deve ter 8, recebido {len(apenas_digitos)}"
      return True, ""
      # Uso
      validator = Validador()
      emails_ruim = ["fulano@", "email.com", "teste@[email protected]"]
      for email in emails_ruim:
      valido, erro = validator.email(email)
      if not valido:
      print(f"{email}: {erro}")

Onde Aplicar

1. Na entrada: Antes de salvar, valide. Se inválido, rejeite.

2. Na saída: Antes de enviar, valide. Navision odeia caractere especial? Tire antes.

3. Periodicamente: Uma vez por semana, encontre dados ruins e marque como "revisar".

ROI

Implementar validação = 2 dias de trabalho = R$ 2 mil.

Não implementar = 1 erro por ano = R$ 50 mil + R$ 100 mil em oportunidade.

← Back to blog