Install
$ agentstack add skill-hermes-brasil-hermes-brasil-prospeccao-b2b-comercio-local ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Prospecção B2B — Comércio Local
> Pipeline automatizado de prospecção B2B para comércio local. > Cobre coleta → qualificação → envio → registro → follow-up. > Nichos: clínicas, salões, pet shops, restaurantes, mercados, lojas, oficinas, franquias.
Visão geral do fluxo
1. COLETA: Google Places API → nomes, endereços, telefones, sites, avaliações
2. DEDUP: consultar banco ANTES de inserir (zero duplicatas)
3. FILTRO: manter só comércios com WhatsApp OU Instagram OU site
4. ENVIO: WhatsApp (Evolution API) com delay entre mensagens
5. REGISTRO: SQLite + planilha (Google Sheets)
6. RESUMO: relatório no Telegram
1. Coleta — Google Places API (New) — RECOMENDADO
Muito mais rápido e confiável que browser:
curl -s "https://places.googleapis.com/v1/places:searchText?key={API_KEY}" \
-H "Content-Type: application/json" \
-H "X-Goog-FieldMask: places.displayName,places.formattedAddress,places.nationalPhoneNumber,places.rating,places.websiteUri" \
-d '{"textQuery":"auto pecas em Pirituba Sao Paulo","maxResultCount":10}'
⚠️ Header OBRIGATÓRIO: X-Goog-FieldMask — sem ele retorna erro 400.
Setup (uma única vez)
console.cloud.google.com→ ativar Places API- ATIVAR FATURAMENTO (obrigatório mesmo com crédito grátis)
- US$ 200/mês de crédito cobre ~20.000 buscas
- Gerar chave em Credentials > API Key
| Erro | Causa | Solução | |---|---|---| | REQUEST_DENIED + "enable Billing" | Faturamento não propagou | Aguardar 5-30 min | | PERMISSION_DENIED | Chave restrita | Liberar no console | | 400 "FieldMask required" | API Nova sem header | Adicionar X-Goog-FieldMask |
2. Dedup — Consultar banco ANTES de adicionar
import sqlite3, re
db = sqlite3.connect("leads.db")
cur = db.cursor()
digits = re.sub(r'\D', '', raw_phone)
cur.execute("SELECT id FROM leads WHERE telefone = ?", (digits,))
if cur.fetchone() is None:
cur.execute("INSERT INTO leads ... VALUES (...)")
else:
print(f"⬇️ Duplicata ignorada: {nome}")
3. Filtro — WhatsApp OU Instagram OU Site
Regra prática: incluir comércios com WhatsApp OU Instagram OU site.
import re
digits = re.sub(r'\D', '', phone)
# Número móvel brasileiro = 11 dígitos, DDD + '9'
if (len(digits) == 11 and digits[2] == '9') or instagram or website:
manter = True
else:
manter = False # fixo sem Instagram/site -> descartar
4. Envio via WhatsApp (Evolution API)
import urllib.parse, requests
instance = urllib.parse.quote("nome-instancia")
r = requests.post(
f"{EVOLUTION_URL}/message/sendText/{instance}",
json={"number": "5511XXXXXXXXX", "text": mensagem,
"options": {"delay": 120000}}, # 2 min entre mensagens
headers={"apikey": API_KEY, "Content-Type": "application/json"})
⚠️ Delay de 2 MINUTOS entre mensagens (evita bloqueio do WhatsApp). Use apenas com número que aceite contato não solicitado dentro das regras da plataforma.
5. Registro no SQLite
Após cada envio:
- Sucesso →
status='enviado' - Número inexistente →
status='fixo' - Erro →
status='erro_envio'
6. Abordagem de porta (presencial — alto diferencial)
Dono de pequeno negócio confia mais em quem aparece. Não vender — mostrar.
"Oi, tudo bem? Sou da região, trabalho com um sistema que atende
seus clientes pelo WhatsApp 24h. Tem 2 minutos? vou te mostrar."
[Mostra o sistema no celular do dono]
"Olha: o cliente pergunta o preço, o sistema responde na hora.
Ele pergunta o estoque, o sistema consulta e responde. Automático."
"Quer testar 15 dias grátis? Se não gostar, não paga nada."
Indicação: oferecer desconto — "Seu amigo fechar, você ganha 1 mês grátis."
Pitfalls
- Google Maps (browser) cai sem login e com CAPTCHA → preferir Places API
- Nomes genéricos de loja retornam resultados de outras cidades → incluir bairro
- Places API NÃO retorna Instagram → buscar separadamente (web_search)
- Verificar conexão real do WhatsApp (profileName preenchido, não só status "open")
- Enviar com delay para não ser bloqueado
- Respeitar LGPD e boas práticas de prospecção
Quando usar
- Prospecção B2B de comércio local
- Captar leads para automação WhatsApp
- Montar pipeline de vendas porta-a-porta + digital
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Hermes-brasil
- Source: Hermes-brasil/hermes-brasil
- License: MIT
- Homepage: https://hermesatlas.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.