🎯 Por que pontuar leads
O gargalo do outreach nunca é a quantidade de leads — é o seu tempo. Com uma lista grande, contatar no aleatório desperdiça o esforço mais caro (uma abordagem personalizada) em quem nunca ia comprar. O lead scoring resolve isso atribuindo uma nota a cada lead e ordenando a fila por probabilidade de conversão.
🎯 O problema concreto
Você varre a web e o Shopify para descobrir marcas de um nicho que fabricam o próprio produto. Encontra centenas. Agora: qual contatar primeiro para oferecer seu produto de dados? Sem score, é chute. Com score, é fila ordenada.
📊 Os três benefícios do scoring
- • 🚀 Priorização do outreach: em vez de contatar no aleatório, a skill ranqueia por prontidão e fit — o maior esforço vai pro lead mais propenso a virar cliente.
- • 📊 Score consistente e sem viés: toda marca é avaliada pelos mesmos critérios, removendo o achismo e o humor do dia do processo.
- • 🧠 Contexto rico por marca: o score gera evidência sobre cada negócio, então você sabe onde focar e como ajustar a mensagem antes de abordar.
Fila por probabilidade de fechar.
Mesmos critérios para todos.
Roda igual em qualquer lista.
Evidência guia a mensagem.
🏷️ A classificação que vem antes
Pontuar quem não é o alvo é desperdício de tempo e de chamadas de API. Por isso, antes do score, a skill classifica cada negócio lendo o HTML do site: só quem vende produto próprio (brand) entra na fase de scoring. Salões, revendedores e desconhecidos são marcados e deixados de fora.
A árvore de decisão (do código da skill)
1. ≥2 sinais de salão E nenhum produto próprio → salon / barber 2. tem sinal de produto próprio → brand 3. tem páginas de produto, 0 revenda, ≥2 sinais → brand 4. tem sinal de revenda E 0 produto próprio → retailer 5. tem páginas de produto → brand 6. tipo já era salon/barber → preserva 7. caso contrário → unknown
✓ Sinais de "brand" (produto próprio)
- ✓Páginas
/products,/collections,/shop. - ✓Textos como "our formula", "small batch", "we formulate".
- ✓Marcas ™ / ® no conteúdo.
- ✓História de fundação: "our story", "founder".
✗ Sinais que excluem do scoring
- ✗"we stock", "brands we love" → é revendedor (retailer).
- ✗"book appointment", "our services" → é serviço (salon).
- ✗Domínios sociais, marketplaces e diretórios são pulados.
- ✗Sem produto próprio detectável → unknown, fora da fila.
Regras ordenadas e claras.
Lê o site, não adivinha.
Filtra antes de gastar.
Não inventa "brand".
📐 As três dimensões do score
Cada marca recebe uma nota de 0 a 100, somada de três dimensões com pesos explícitos. Os pesos não são arbitrários: refletem o que importa para vender um produto de dados — capacidade de desenvolver produto pesa mais, maturidade de marca pesa menos.
Tem time de P&D? Faz formulação própria? Contrata cargos de R&D?
Tem quiz/personalização? Stack de marketing? Cargos de dados/CRM?
Está em grandes varejistas? Tem prêmios/imprensa? Time grande?
| Sinal (Dim. 1 — Produto) | Pontos |
|---|---|
| P&D / lab / formulação no site | +8 |
| Alegações "clinicamente testado" | +7 |
| Cargo sênior de R&D no LinkedIn | +25 |
| Cargo júnior de formulação/R&D | +15 |
| Vaga aberta de desenvolvimento | +10 |
💡 Dica: o score precisa ser explicável
Dimensões com pesos visíveis tornam o número legível. Você não sabe só que a marca pontuou 86 — sabe que pontuou 42 em produto, 30 em dados, 14 em marca. Isso permite ler o lead: "esta tem time de produto forte mas marca incipiente" muda a abordagem.
Produto, dados, marca.
Produto importa mais.
Cada sinal vale X pontos.
Você sabe o porquê do número.
🔎 Duas passadas: site e Apify
O scoring acontece em duas passadas, e a ordem importa: pega o sinal barato primeiro, paga pelo caro só depois. A passada 1 lê só o site (grátis). A passada 2 roda 5 buscas no Google via Apify por marca para achar cargos no LinkedIn, vagas, prêmios e presença em varejo.
Passada 1 — só o site (grátis)
Busca o site da marca uma vez (com cache) e procura sinais no HTML: menções a P&D, alegações de ciência, quiz de personalização, sistema de reviews, ferramentas de marketing (Klaviyo, GA), página de "onde comprar". Marca o resultado como scoring_depth=website_only.
Passada 2 — enriquecimento via Apify (paga)
Roda 5 buscas no Google por marca via Apify (actor apify~google-search-scraper): cargos de R&D e de dados no LinkedIn, vagas abertas, presença em varejistas, imprensa/prêmios, tamanho do time. Soma esses pontos sobre os do site, com cap por dimensão, e marca scoring_depth=full.
📊 Custo e tempo reais
- • ~$0,045 por marca — 5 buscas no Google por marca.
- • Run completo (15 marcas): ~20 minutos, ~$0,70 de Apify.
- • Só fase 2 (78 marcas): ~2 horas, ~$3,50 de Apify.
- • Filtragem de domínios: resultados de redes sociais, marketplaces, cupons e diretórios são descartados antes da pontuação — só sinal relevante conta.
Exemplo de consulta Apify (Dim. 1 — cargo de R&D)
"{nome da marca}" (formulation OR chemist OR "R&D"
OR "product development" OR "cosmetic scientist")
site:linkedin.com
→ achou cargo sênior → +25
→ achou cargo júnior → +15
→ nada → +0 (não inventa evidência)
⚠️ Regra de ouro: não fabricar evidência
Se uma busca não retorna resultado, a skill pontua 0 para aquele sinal — nunca inventa. Um score só vale se cada ponto tem evidência rastreável. Esse princípio é o que separa um scoring confiável de um gerador de números bonitos.
Site primeiro, Apify depois.
Sinal barato antes do caro.
Custo previsível por lead.
Sem busca, score 0.
🏆 Tiers e o contrato de saída
O número de 0 a 100 é traduzido em um tier — a etiqueta acionável que diz por onde começar. E o CSV de saída carrega não só o score, mas os sub-scores e a evidência de cada dimensão, formando um contrato que a próxima skill (a de outreach) consome sem adivinhação.
| Tier | Score | Significado |
|---|---|---|
| Tier 1 | ≥ 70 | Tem time de produto E capacidade de dados. Prioridade máxima. |
| Tier 2 | 50–69 | Tem produto OU dados, não os dois. Alto potencial. |
| Tier 3 | 30–49 | Dono de marca com sinais limitados de R&D/dados. Vale abordar. |
| Tier 4 | < 30 | Sinais fracos. Provavelmente pequena ou em estágio inicial. |
Exemplo de saída — uma marca Tier 1 (recriação ilustrativa)
business_name : Marca Exemplo Hair Care
qualification_score: 86
qualification_tier : Tier 1
product_dev_score : 42 (cargo sênior de R&D + ciência no site)
data_maturity_score: 30 (quiz de cabelo, reviews, Klaviyo detectado)
brand_maturity_score: 14 (imprensa + 2 redes sociais ativas)
product_dev_evidence: LinkedIn: senior R&D role found |
science-backed claims on website
data_evidence : hair quiz on website | reviews system |
marketing tech stack detected
scoring_depth : full
Linha de saída recriada para ilustrar o contrato do CSV — não é dado real de cliente.
💡 Dica: o contrato serve a próxima skill
O CSV é ordenado por score decrescente e traz colunas previsíveis (qualification_tier, product_dev_evidence, etc.). A skill de outreach lê esse contrato direto: pega o topo da fila e usa a evidência para personalizar a mensagem. Saída clara é o que torna o pipeline encaixável.
≥70 / 50 / 30 / <30.
O CSV diz o porquê.
Topo da fila = começar aqui.
Outreach consome direto.
⚙️ Checkpoint, resume e modos
Pontuar 78 marcas leva horas e gasta API. Uma interrupção no meio não pode custar o trabalho já feito. Por isso a skill tem dois modos de operação e um arquivo de checkpoint que salva o progresso após cada marca — tornando o run seguro para interromper e retomar.
Modo 1 — run completo (padrão)
Processa só as linhas ainda sem score. Classifica (fase 1b), pontua pelo site (passada 1), enriquece com Apify (passada 2), mescla com as já pontuadas e salva ordenado.
python3 qualify_leads_apify.py \ --input leads.csv
Modo 2 — só fase 2
Re-pontua só as linhas marcadas website_only com Apify, sem refazer a classificação. Útil quando você já tem um CSV pontuado só pelo site.
python3 qualify_leads_apify.py \ --input scored.csv --phase2-only
📊 Como o checkpoint protege o run
- • Salva um arquivo de checkpoint após cada marca pontuada.
- • Ao reiniciar, pula as marcas já no checkpoint e continua de onde parou.
- • Preserva as linhas já pontuadas no modo completo — não reprocessa o que já estava pronto.
- • Ao terminar o run, o arquivo de checkpoint é removido automaticamente.
✓ Tratamento de erro robusto
- ✓Sem
APIFY_API_TOKEN→ para e avisa. - ✓Run síncrono expira → cai para polling assíncrono.
- ✓Site retorna 403/429 → pula a classificação daquela linha.
- ✓Interrompeu? Rode o mesmo comando — retoma do checkpoint.
✗ Sem essas salvaguardas
- ✗Queda na marca 60 de 78 perde as 60 já feitas.
- ✗Re-run paga de novo por tudo que já tinha sido pontuado.
- ✗Um timeout de Apify derruba o processo inteiro.
- ✗Um site fora do ar para o lote em vez de pular a linha.
✍️ Exercícios práticos
Defina suas dimensões. Para o seu próprio ICP, escreva 3 dimensões e seus pesos (somando 100). Quais sinais valem pontos em cada uma? Explique por que o peso maior vai onde vai.
Crie um SKILL.md rodável. Escreva um SKILL.md de qualificação com a description disparando em "qualificar/pontuar/filtrar leads", documente os dois modos e o contrato de saída do CSV. Teste o disparo com uma planilha pequena.
Desenhe a classificação. Antes de pontuar, que sinais no site separam o seu alvo do não-alvo? Escreva a árvore de decisão (estilo a do tópico 2) para o seu nicho.
Teste o checkpoint. Pontue 5 linhas, interrompa na 3ª, e rode de novo. A skill retoma da 3ª ou recomeça? Garanta que a evidência de cada dimensão tem uma fonte rastreável (nunca fabricada).
📌 Resumo do Módulo
Fim da Trilha 4:
Você dominou três skills que operam dados e automação. A próxima trilha leva as skills para a consultoria de IA.