PTENES
v1 · núcleo construido y probado (47 pruebas)

Una agencia de sitios web de una sola persona, automáticamente

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
Qué es

Un flujo que se ejecuta encontró → rehízo → publicó → ofreció

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.

⛏️ Flujo completo

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.

🧠 IA solo donde hace falta

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.

🔌 Modular y portable

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.

Cómo funciona

El ciclo de vida de un lead

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.

descubierto→ calificado→ rediseñado→ publicado→ [ compuerta ]→ enviado→ respondido→ cerrado

Ramas: sin sitio web / sitio web bueno / sin correo electrónico → descartado. Error de red/API → error (alerta en Telegram, con /retry).

Requisitos previos

Lo que vas a necesitar (v1, local)

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.

Python 3.11+

Todo el núcleo. Sin dependencias pesadas al principio.

# comprueba la versión
python3 --version

Claude Code CLI

Las fases de IA (calificar, rediseñar) usan claude -p con skills.

# comprueba el CLI
claude --version

Cuentas + secretos

Resend (correo electrónico), GitHub (Pages), Telegram (bot). Los tokens solo en el .env, nunca en el chat.

# plantilla
cp .env.example .env
Guía de uso · recorrido por milestone

Cómo ponerlo en marcha

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.

Estado: v1 (núcleo determinista) construido y probado — 47 pruebas aprobadas. Los comandos 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").
0

Clonar y leer el diseño

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
1

M1 · Fundación — el núcleo y el dry-run

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
2

M2 · Descubrimiento + Calificación

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
3

M3 · Creación + Publicación

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>/
4

M4 · Envío + Telegram (flujo completo)

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 núcleo

Control determinista, en código

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
Hoja de ruta

Local → híbrido → todo en VPS

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.

v1 · Local
Flujo completo en tu máquinaDescubrimiento mediante navegador (tú resuelves el captcha), compuerta activada, dashboard local.
v1.x · Híbrido
Orquestador en la VPSEl bot, la publicación y el envío siempre están activos en la VPS; el escáner (browser) funciona localmente y envía los leads.
v2 · Todo en VPS
Búsqueda mediante API, sin navegadorPlaces API (oficial) o terceros como provider conectable; repo propio + dominio personalizado por cliente al convertirlo.