Código e Automação

26 de fev. de 2026

Go back

Como Transformei um Extrator de Emails em um Pipeline Industrial de Prospecção B2B

Veja como evoluí um simples extrator de emails para um pipeline industrial de prospecção B2B com segmentação empresarial, enriquecimento via API, controle incremental por hash, logs por execução e arquitetura escalável em Python.

A crazy but friendly cartoon scientist with messy hair, wearing a white lab coat, holding a giant glowing EMAIL EXTRACTOR

Fique por dentro do que há de mais relavante no Marketing Digital, assine a nossa newsletter:

A maioria dos projetos começa simples.

Um script.
Um CSV.
Algumas requisições HTTP.

Mas quando a necessidade deixa de ser pontual e passa a ser estratégica, o script precisa evoluir.

Foi exatamente isso que aconteceu quando um extrator básico de e-mails se transformou em um pipeline industrial de prospecção B2B, com controle de estado, versionamento por execução, logs estruturados, processamento incremental e hardening de qualidade de dados.

Neste artigo explico a arquitetura, as decisões técnicas e os princípios de engenharia que guiaram essa evolução.

O problema: scripts não escalam

Um extrator simples resolve:

  • Ler uma lista de domínios

  • Fazer crawl

  • Buscar padrões de e-mail

  • Gerar um CSV

Mas ele não resolve:

  • Reprocessamento inteligente

  • Controle de concorrência

  • Auditoria de execução

  • Versionamento de base

  • Reprodutibilidade

  • Governança técnica

  • Controle de custo de API

Ou seja: funciona como ferramenta, mas não como sistema.

Quando o processo passou a rodar por segmentos empresariais e integrar enriquecimento via Google Maps API, ficou claro que era necessário estruturar uma engine com mentalidade de produto.

Arquitetura do pipeline

O sistema foi dividido em duas camadas principais.

Camada de consolidação e segmentação

Arquivo principal: linkedin_processor.py

Responsável por:

  • Consolidar bases (Connections + Imported Contacts)

  • Deduplicar por URL

  • Classificar empresas por segmento empresarial

  • Gerar CSVs segmentados

  • Controlar execução por run

  • Aplicar controle incremental por hash

Essa camada organiza e prepara os dados antes da extração.

Engine de extração

Responsável por:

  • Enriquecimento via Google Maps API

  • Filtragem por confidence_score

  • Geração de root_domain

  • Deduplicação por domínio raiz

  • Crawl multi-thread controlado

  • Extração de e-mails

  • Consolidação final por segmento

A separação permite escalar cada camada de forma independente.

Controle industrial implementado

A transformação mais relevante não foi o crawler.

Foi o controle.

Lock de execução

Um arquivo .pipeline.lock impede execução simultânea.

Isso evita:

  • Corrupção de CSV

  • Concorrência acidental

  • Duplicidade de processamento

  • Estado inconsistente

Run-based architecture

Cada execução cria um diretório estruturado:

linkedin_processed/runs/YYYY-MM-DD_HH-MM-SS
linkedin_processed/runs/YYYY-MM-DD_HH-MM-SS
linkedin_processed/runs/YYYY-MM-DD_HH-MM-SS

Dentro dele:

  • Snapshot dos CSV de entrada

  • Logs da execução

  • Hash dos arquivos processados

  • Relatório consolidado da run

Isso torna o pipeline:

  • Auditável

  • Reproduzível

  • Versionado implicitamente

  • Rastreável

🔑 Hash de integridade (SHA256)

Cada CSV recebe um hash SHA256.

O sistema compara hashes para:

  • Detectar alterações reais

  • Processar apenas segmentos modificados

  • Evitar retrabalho desnecessário

  • Reduzir uso de API externa

Em bases com milhares de registros, essa decisão tem impacto financeiro direto.

Processamento incremental

Se um segmento não sofreu alteração de hash, ele simplesmente não é reprocessado.

Isso reduz:

  • Uso de Google Maps API

  • Tempo de execução

  • Risco de bloqueio

  • Custo operacional

  • Consumo desnecessário de threads

Essa é uma das decisões arquiteturais mais estratégicas do projeto.

Enriquecimento com Google Maps API

O enriquecimento resolve problemas comuns de dados B2B:

  • Empresas sem website no LinkedIn

  • Domínios inconsistentes

  • Correção de nomes

  • Classificação por confiança

  • Validação prévia antes do crawl

O pipeline filtra por confidence_score >= 0.65, gera root_domain e elimina redundâncias antes de iniciar a extração.

Esse pré-processamento aumenta significativamente a eficiência do sistema.

Crawl multi-thread com controle

A extração roda com:

  • ThreadPoolExecutor controlado

  • Retry automático

  • Backoff de conexão

  • Timeout configurável

  • Filtro de domínios inválidos

  • Remoção de subdomínios técnicos

Erros como:

  • Connection reset by peer

  • Max retries exceeded

São tratados como eventos operacionais esperados, não como falhas estruturais.

O objetivo não é agressividade. É estabilidade.

🔒 Hardening de qualidade da extração (v4.2.0)

Uma evolução importante foi o reforço da qualidade da extração de e-mails.

PDFs frequentemente geram ruído estrutural como:

  • a@b.c

  • sg.@n..

  • tokens quebrados com múltiplos @

A engine agora implementa:

  • Regex restritiva com validação mínima de TLD (>= 2 caracteres)

  • Validação mínima da local-part

  • Bloqueio de múltiplos @

  • Filtro contra domínios malformados

  • Sanitização obrigatória

  • Rejeição de padrões inválidos

A decisão foi estratégica:

É preferível reduzir volume do que comprometer qualidade.

Em prospecção B2B, qualidade de dado é ativo financeiro.

CLI flags e flexibilidade operacional

O pipeline aceita flags como:

  • --dry-run

  • --no-enrich

  • --only-segment ONG

  • --resume

  • --skip-processed

Isso permite:

  • Testar execução sem rodar extração real

  • Processar apenas um segmento específico

  • Ignorar enriquecimento

  • Retomar execução interrompida

  • Pular segmentos já processados

Flexibilidade sem alterar código.

O que mudou na prática?

Antes:
Um script que gerava um CSV.

Agora:
Um sistema com:

  • Versionamento implícito por run

  • Controle de integridade por hash

  • Processamento incremental

  • Arquitetura modular

  • Logs estruturados

  • Hardening de qualidade de dados

  • Governança técnica

A diferença não está apenas no código.

Está na mentalidade de engenharia.

Próximos passos

As próximas evoluções previstas incluem:

  • Persistência de estado em SQLite

  • API interna REST

  • Cache inteligente de enriquecimento

  • Dashboard de priorização comercial

  • Integração com CRM

  • Camada adicional de validação (MX / SMTP)

A base arquitetural já está preparada para escalar.

Conclusão

Transformar scripts em sistemas é uma mudança de postura.

Quando você adiciona:

  • Controle de execução

  • Integridade de dados

  • Segmentação estratégica

  • Arquitetura modular

  • Hardening de qualidade

  • Governança técnica

Você deixa de ter automação pontual e passa a ter infraestrutura.

Esse projeto começou como um extrator.

Hoje ele é uma engine industrial de prospecção B2B.

E essa mentalidade de engenharia aplicada a marketing, dados e tecnologia é parte do que estrutura os projetos desenvolvidos na Ad Rock.

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Conteúdo original pesquisado e redigido pelo autor. Ferramentas de IA podem ter sido utilizadas para auxiliar na edição e no aprimoramento.

Posts relacionados:

Posts relacionados:

Compartilhe!

Go back

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

Deixe a IA fazer o trabalho para Você Crescer Mais Rápido

Agende uma conversa hoje e comece a automatizar.

© 2010 - 2026 Copyright

All Rights Reserved - Develop by Ad Rock Digital Mkt

Tecnologias utilizadas

© 2010 - 2026 Copyright

All Rights Reserved - Develop by
Ad Rock Digital Mkt

Tecnologias utilizadas