Descobre negócios bem avaliados com site ruim, redesenha a página, publica e manda a proposta — orquestrador determinístico + IA só onde precisa, operado pelo Telegram.
# a esteira, do começo ao fim descoberto → qualificado # julga "site ruim?" (IA) → redesenhado # página premium (IA) → publicado # git → GitHub Pages → [ PORTÃO ] # aprova no Telegram (ou --auto) → enviado # proposta via Resend → respondido → fechado
Semi-autônoma: as fases pesadas rodam sozinhas, e você mantém o controle do envio. Baseada no plugin prospector-de-sites (usado como referência), reconstruída como serviço operável.
Descobre, qualifica, redesenha, publica e envia — cada fase é um estágio de uma máquina de estados que sobrevive a reinício e é idempotente por lead.
Fila, portão e estados são Python puro e testável. O modelo (claude -p) entra só pra julgar o site e redesenhar a página — o resto é código, sem gastar token.
A descoberta troca de navegador para API por config. A mesma base roda local, híbrido em VPS ou tudo em VPS — sem reescrever nada.
Cada seta é uma transição idempotente: se já foi feita, pula. O único ponto de humano é o portão antes do envio — e ele some quando o pedido vem com --auto.
Ramos: sem site / site bom / sem e-mail → descartado. Falha de rede/API → erro (alerta no Telegram, com /retry).
A v1 roda na sua máquina — o navegador resolve o captcha do Maps com você por perto. As versões seguintes migram pra API e VPS.
Todo o núcleo. Sem dependências pesadas no começo.
# confira a versão python3 --version
As fases de IA (qualificar, redesenhar) usam claude -p com skills.
# confira o CLI claude --version
Resend (e-mail), GitHub (Pages), Telegram (bot). Tokens só no .env, nunca no chat.
# template cp .env.example .env
A construção é por milestones, cada um entregando software testável. O M1 (Fundação) é o alvo atual — o design e o plano já estão no repo.
demo e prospectar --provider fake já rodam; os que tocam Google Maps, claude -p, Resend, Telegram e deploy dependem das suas credenciais (ver README → "O que falta").Todo o projeto parte de um spec e um plano versionados.
git clone https://github.com/inematds/prospector-agent cd prospector-agent # design completo e plano do M1: # docs/superpowers/specs/2026-07-14-prospector-agent-design.md # docs/superpowers/plans/2026-07-14-m1-fundacao.md
Config, Store SQLite, máquina de estados e a CLI que avança um lead pela esteira sem publicar nem enviar.
python -m pytest -v # suíte do núcleo python -m prospector demo --dry-run --auto # → descoberto → qualificado → redesenhado → publicado → enviado
Acha candidatos no Google Maps (nota ≥ 4.7, com site) e julga quais têm site ruim, extraindo e-mail e WhatsApp.
prospector prospectar nutricionistas Bauru # → leads qualificados salvos no prospector.db
Redesenha a página premium (mantendo logo, cores e conteúdo reais) e publica no GitHub Pages com HTTPS.
prospector publicar <slug> # → https://usuario.github.io/prospector-sites/<slug>/
Manda a proposta via Resend, com o portão de aprovação no Telegram. O bot opera tudo; o --auto pula o portão.
# pelo bot do Telegram: /prospectar nutricionistas Bauru --auto # fases correm sozinhas; o bot notifica cada envio
O coração do sistema não é o agente — é a máquina de estados e o portão. Ficam em código simples e testável; a IA é chamada só dentro de dois estágios.
# prospector/maquina_estados.py — transições válidas
TRANSICOES = {
DESCOBERTO: {QUALIFICADO, DESCARTADO},
QUALIFICADO: {REDESENHADO, DESCARTADO},
REDESENHADO: {PUBLICADO, ERRO},
PUBLICADO: {AGUARDANDO_APROVACAO, ENVIADO, ERRO},
AGUARDANDO_APROVACAO: {ENVIADO, DESCARTADO},
ENVIADO: {RESPONDIDO, ERRO},
RESPONDIDO: {FECHADO, DESCARTADO},
}
# o portão A+B, em uma linha if lead.sem_portao or aprovado_no_telegram(lead): enviar(lead) # Resend else: aguardar_aprovacao(lead) # pede OK no Telegram # dry-run: roda a esteira sem publicar nem enviar $ python -m prospector demo --dry-run --auto descoberto → qualificado → redesenhado → publicado → enviado
A portabilidade de topologia é um princípio de design: a mesma base sobe de nível só trocando config e onde roda.