Encuentra negocios bien valorados con un sitio web deficiente, rediseña la página, la publica y envía la propuesta: orquestador determinístico + IA solo donde hace falta, operado mediante Telegram.
# el flujo completo, de principio a fin descoberto → qualificado # evalúa «¿sitio malo?» (IA) → redesenhado # página premium (IA) → publicado # git → GitHub Pages → [ PORTÃO ] # aprueba en Telegram (o --auto) → enviado # propuesta vía Resend → respondido → fechado
Semiautónoma: las fases más pesadas se ejecutan solas y tú mantienes el control del envío. Basada en el plugin prospector-de-sites (usado como referencia), reconstruida como servicio operable.
Descubre, califica, rediseña, publica y envía: cada fase es una etapa de una máquina de estados que sobrevive a los reinicios y es idempotente por lead.
La cola, la compuerta y los estados son Python puro y comprobable. El modelo (claude -p) solo se usa para evaluar el sitio y rediseñar la página; el resto es código, sin gastar tokens.
La búsqueda cambia de navegador a API mediante configuración. La misma base funciona en local, en modo híbrido en una VPS o completamente en una VPS, sin reescribir nada.
Cada flecha es una transición idempotente: si ya se realizó, se omite. El único punto que requiere intervención humana es el puerta antes del envío — y desaparece cuando el pedido viene con --auto.
Ramas: sin sitio web / sitio web bueno / sin correo electrónico → descartado. Error de red/API → error (alerta en Telegram, con /retry).
La v1 funciona en tu máquina: el navegador resuelve el captcha de Maps contigo cerca. Las versiones siguientes migran a la API y a una VPS.
Todo el núcleo. Sin dependencias pesadas al principio.
# comprueba la versión python3 --version
Las fases de IA (calificar, rediseñar) usan claude -p con skills.
# comprueba el CLI claude --version
Resend (correo electrónico), GitHub (Pages), Telegram (bot). Los tokens solo en el .env, nunca en el chat.
# plantilla cp .env.example .env
La construcción se organiza en milestones, cada uno entrega software comprobable. El M1 (Fundación) es el objetivo actual — el diseño y el plan ya están en el repo.
demo e prospectar --provider fake ya se ejecutan; los que usan Google Maps, claude -p, Resend, Telegram y deploy dependen de tus credenciales (consulta README → "Qué falta").Todo el proyecto parte de un spec y un plan versionados.
git clone https://github.com/inematds/prospector-agent cd prospector-agent # diseño completo y plan del M1: # docs/superpowers/specs/2026-07-14-prospector-agent-design.md # docs/superpowers/plans/2026-07-14-m1-fundacao.md
Configuración, Store SQLite, máquina de estados y la CLI que hace avanzar un lead por el flujo sin publicar ni enviar.
python -m pytest -v # suite del núcleo python -m prospector demo --dry-run --auto # → descubierto → calificado → rediseñado → publicado → enviado
Encuentra candidatos en Google Maps (calificación ≥ 4.7, con sitio web) y evalúa cuáles tienen un sitio web deficiente, y extrae el correo electrónico y WhatsApp.
prospector prospectar nutricionistas Bauru # → leads calificados guardados en prospector.db
Rediseña la página premium (manteniendo el logo, los colores y el contenido reales) y la publica en GitHub Pages con HTTPS.
prospector publicar <slug> # → https://usuario.github.io/prospector-sites/<slug>/
Envía la propuesta mediante Resend, con la compuerta de aprobación en Telegram. El bot lo opera todo; el --auto salta la puerta.
# a través del bot de Telegram: /prospectar nutricionistas Bauru --auto # las fases se ejecutan solas; el bot notifica cada envío
El corazón del sistema no es el agente: es la máquina de estados y la compuerta. Se mantienen en código simple y comprobable; la IA se invoca solo dentro de dos etapas.
# prospector/maquina_estados.py — transiciones 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},
}
# la puerta A+B, en una línea if lead.sem_portao or aprovado_no_telegram(lead): enviar(lead) # Resend else: aguardar_aprovacao(lead) # pide el OK en Telegram # dry-run: ejecuta el flujo sin publicar ni enviar $ python -m prospector demo --dry-run --auto descoberto → qualificado → redesenhado → publicado → enviado
La portabilidad de topología es un principio de diseño: la misma base escala cambiando solo la configuración y dónde se ejecuta.