Finds highly rated businesses with poor websites, redesigns the page, publishes it, and sends the proposal β deterministic orchestrator + AI only where needed, operated through Telegram.
# the pipeline, from start to finish descoberto β qualificado # judges "bad site?" (AI) β redesenhado # premium page (AI) β publicado # git β GitHub Pages β [ PORTΓO ] # approve on Telegram (or --auto) β enviado # proposal via Resend β respondido β fechado
Semi-autonomous: the heavy phases run on their own, while you stay in control of sending. Based on the plugin prospector-de-sites (used as a reference), rebuilt as an operable service.
Finds, qualifies, redesigns, publishes, and sends β each phase is a stage in a state machine that survives restarts and is idempotent per lead.
The queue, approval gate, and states are pure, testable Python. The model (claude -p) only comes in to judge the site and redesign the page β everything else is code, with no token spend.
Discovery switches from browser to API via config. The same codebase runs locally, in a hybrid setup on a VPS, or entirely on a VPS β without rewriting anything.
Each arrow is an idempotent transition: if it has already happened, it is skipped. The only human step is gate before sending β and it disappears when the request comes with --auto.
Branches: no website / good website / no email β discarded. Network/API failure β error (Telegram alert, with /retry).
v1 runs on your machine β the browser handles the Maps captcha with you nearby. Later versions migrate to API and VPS.
The entire core. No heavy dependencies to start.
# check the version python3 --version
The AI phases (qualifying, redesigning) use claude -p with skills.
# check the CLI claude --version
Resend (email), GitHub (Pages), Telegram (bot). Tokens only in the .env, never in chat.
# template cp .env.example .env
Development is organized into milestones, each delivering testable software. The M1 (Foundation) is the current target β the design and plan are already in the repo.
demo e prospectar --provider fake already run; those that touch Google Maps, claude -p, Resend, Telegram, and deploy depend on your credentials (see README β "What's missing").The entire project starts from a versioned spec and plan.
git clone https://github.com/inematds/prospector-agent cd prospector-agent # complete design and M1 plan: # docs/superpowers/specs/2026-07-14-prospector-agent-design.md # docs/superpowers/plans/2026-07-14-m1-fundacao.md
Config, SQLite Store, state machine, and the CLI that moves a lead through the pipeline without publishing or sending.
python -m pytest -v # core suite python -m prospector demo --dry-run --auto # β discovered β qualified β redesigned β published β sent
Finds candidates on Google Maps (rating β₯ 4.7, with a website) and judges which ones have a bad website, extracting email and WhatsApp.
prospector prospectar nutricionistas Bauru # β qualified leads saved in prospector.db
Redesigns the page with a premium look (preserving the real logo, colors, and content) and publishes it on GitHub Pages with HTTPS.
prospector publicar <slug> # β https://usuario.github.io/prospector-sites/<slug>/
Sends the proposal via Resend, with the approval gate on Telegram. The bot runs everything; the --auto skips the gate.
# through the Telegram bot: /prospectar nutricionistas Bauru --auto # phases run on their own; the bot notifies you about each send
The heart of the system isn't the agent β it's the state machine and the approval gate. They stay in simple, testable code; AI is called only within two stages.
# prospector/maquina_estados.py β valid transitions
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},
}
# the A+B gate, in one line if lead.sem_portao or aprovado_no_telegram(lead): enviar(lead) # Resend else: aguardar_aprovacao(lead) # request approval on Telegram # dry-run: run the pipeline without publishing or sending $ python -m prospector demo --dry-run --auto descoberto β qualificado β redesenhado β publicado β enviado
Topology portability is a design principle: the same codebase scales up just by changing the config and where it runs.