buscandomilhao README

The project's README from github.com/soumatheusgomes/buscandomilhao. As one markdown file: README.md.

🚀 Buscando 1 Milhão

Um prompt. Um sistema comercial autônomo. Construído em público.


Status Meta Build in Public


Next.js TypeScript Tailwind SQLite Drizzle OpenAI Playwright


⬇️ PROMPT.md ⬇️

É esse arquivo. Preenche, cola no Codex, pronto.


O que é · Como funciona · Como usar · Setup · Regras


🎯 O que é

Um agente de IA que prospecta pelo Instagram sozinho: acha o lead, qualifica, escreve a primeira mensagem, entende a resposta, conduz a conversa, encaminha pro WhatsApp e aprende com o que converteu — ajustando público, texto, horário e cadência sem ninguém mandar.

Roda 100% local. Seu banco, sua sessão, sua chave.

Observar → Decidir → Agir → Medir → Aprender → Adaptar

Aqui não tem código pronto. Tem o prompt que constrói o código. Você troca os {{PLACEHOLDERS}} pelo seu negócio, cola no Codex, e sai um sistema seu — não uma cópia do meu.


⚙️ Como funciona

flowchart LR
    A["🔎 Descoberta<br/>perfis do ICP"] --> B["🧠 Qualificação<br/>score + prioridade"]
    B --> C["💬 1ª DM<br/>seu Chrome real"]
    C --> D{"Respondeu?"}
    D -- não --> E["⏰ Follow-up<br/>agendado"]
    E --> D
    D -- sim --> F["📡 Webhook Meta<br/>handoff de canal"]
    F --> G["🤖 Conversa<br/>API oficial + OpenAI"]
    G --> H["📱 WhatsApp<br/>ou grupo de afiliados"]
    H --> I["📊 Métricas<br/>o que converteu?"]
    I -.retroalimenta.-> A

    style A fill:#1f2937,stroke:#E1306C,color:#fff
    style C fill:#1f2937,stroke:#FFB000,color:#fff
    style G fill:#1f2937,stroke:#412991,color:#fff
    style H fill:#1f2937,stroke:#25D366,color:#fff
    style I fill:#1f2937,stroke:#00C853,color:#fff

Por que dois canais

Etapa Canal Motivo
Primeiro contato Seu Chrome, sua sessão A API oficial da Meta não abre conversa com quem nunca te respondeu
Depois da resposta API oficial + webhook É o caminho suportado, auditável e estável

Uma trava de canal garante que os dois nunca escrevam no mesmo fio. Depois do handoff, o navegador está proibido de responder.


🚦 Como usar

1 Preenche o bloco de configuração

Abre o PROMPT.md. No topo tem um bloco CONFIGURAÇÃO com uns 15 campos. Troca cada {{PLACEHOLDER}} pelo seu: nome, empresa, site, @ do Instagram, WhatsApp, oferta e quem é seu cliente ideal.

Dois campos merecem atenção:

2 Cola no Codex

Copia o arquivo inteiro, do começo ao fim, e cola numa task do Codex.

💡 Codex cloud roda em container — ele escreve toda a camada de navegador e testa contra páginas simuladas, mas não alcança o seu Chrome. O prompt já diz isso pra ele, então ele entrega tudo e deixa o teste real documentado pra você rodar local.

3 Roda na sua máquina

Clona o que ele gerou, faz o setup abaixo, e sobe:

pnpm install && pnpm dev

🔧 Setup da sua máquina

🔑 Chave da OpenAI
  1. https://platform.openai.com/api-keys → login.
  2. Settings → Billing: adiciona crédito. Sem crédito, dá 429 insufficient_quota.
  3. Settings → Limits: define um hard limit mensal (ex. USD 50). Esse é o freio real se o agente entrar em loop.
  4. Create new secret key → projeto separado (não usa o Default) → permissão Restricted, só Model capabilities: Write.
  5. Copia a chave agora, ela só aparece uma vez.
cp .env.example .env
# cola em OPENAI_API_KEY=sk-proj-...

O .env já está no .gitignore. Nunca commita, nunca aparece em print ou vídeo.

Vazou? Revoga em platform.openai.com/api-keys e gera outra. Revogar resolve — reescrever o histórico do Git é secundário.

🌐 Sessão do Instagram no seu Chrome

Perfil dedicado, separado do seu pessoal. Isso resolve três coisas de uma vez: o agente nunca vê suas abas, seu Chrome normal continua livre, e o Chrome 136+ recusa debug no perfil padrão de qualquer jeito.

macOS

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 \
  --remote-debugging-address=127.0.0.1 \
  --user-data-dir="$PWD/.chrome-profile"

Linux

google-chrome --remote-debugging-port=9222 --user-data-dir="$PWD/.chrome-profile"

Windows (PowerShell)

& "C:\Program Files\Google\Chrome\Application\chrome.exe" `
  --remote-debugging-port=9222 `
  --user-data-dir="$PWD\.chrome-profile"

Nessa janela que abriu, entra no instagram.com, loga normal, resolve o 2FA. A sessão fica salva e sobrevive a reinício.

Testa:

curl -s http://127.0.0.1:9222/json/version

⚠️ Segurança: essa porta dá controle total sobre a sessão logada nesse perfil. Mantém em 127.0.0.1, nunca 0.0.0.0, e não roda em máquina compartilhada. O .chrome-profile/ guarda seus cookies do Instagram — já está no .gitignore e não sai da sua máquina.


🛡️ Regras que não se negocia

Como o agente não queima a conta
Controle Padrão
DMs por dia 30, com aquecimento gradual
Intervalo entre DMs 90–240s aleatório
Janela de operação 09:00–20:00, fuso configurável
Circuit breaker Pausa tudo em erro anormal, restrição ou opt-out em alta

Ritmo humano existe por saúde da conta — mesma disciplina de um SDR de verdade. Não tem fingerprint forjado, API privada nem tentativa de burlar bloqueio.

Como o agente não mente

A IA só pode afirmar o que está em VERIFIED_CLAIMS. Qualquer coisa em UNVERIFIED_CLAIMS fica bloqueada até virar prova.

Ela nunca inventa taxa, condição, garantia ou superlativo, nunca promete aprovação de conta, e nunca finge ser cliente pra arrancar resposta.

Como o agente respeita quem não quer

Pedido de parar é atendido na hora. O perfil entra em do_not_contact — permanente, sem follow-up, sem reentrada por outra campanha, por nenhum canal.

Como o custo não explode

Toda chamada à OpenAI grava tokens e custo. Ao bater OPENAI_MONTHLY_BUDGET_USD, o sistema pausa sozinho.

O painel mostra custo por lead e custo por cliente ativo — sem isso não dá pra saber se a automação dá lucro.



Este repositório é público de propósito.

Pega o PROMPT.md, troca os {{PLACEHOLDERS}}, e constrói o seu.


⭐ Se isso te ajudou, deixa uma estrela e acompanha a jornada.

buscandomilhao (soumatheusgomes/buscandomilhao)

rate-limiting
Searching Database…

What is this?It is an AI agent that prospects for leads on Instagram on its own: it finds leads, qualifies them, writes the first message, reads replies, carries the conversation, hands off to WhatsApp, and learns from what converted to adjust audience, copy, timing and cadence.
How do I turn this into a working system?Open PROMPT.md, fill in the ~15 {{PLACEHOLDER}} fields (your name, company, Instagram handle, WhatsApp, offer, ideal customer), paste the whole file into a Codex task, then clone what Codex generates and run the local machine setup.
Do I need an OpenAI API key to run it?Yes: you create an OpenAI account, add billing credit (no credit means a 429 insufficient_quota error), set a hard monthly spend limit, and generate a restricted secret key just for this project.
Can Codex build and test the whole thing remotely for me?Codex Cloud runs in a container, so it writes and tests the browser-automation layer against simulated pages, but it can never reach your actual Chrome; the real browser test is left for you to run locally.
Where does my Instagram session and data get stored?Everything runs 100% locally: your database, your Chrome session and your API key stay on your machine, and the .chrome-profile folder holding your Instagram cookies is gitignored and never leaves your computer.
What stops the agent from spamming and getting the Instagram account banned?It caps DMs at 30 per day with gradual warm-up, waits 90-240 random seconds between messages, only operates 09:00-20:00, and has a circuit breaker that pauses everything on abnormal errors, restrictions, or a spike in opt-outs.
Can the AI exaggerate claims to convince a lead?No: it can only state facts listed in VERIFIEDCLAIMS, while anything in UNVERIFIEDCLAIMS stays blocked until proven, and it never invents fees, guarantees, or poses as a customer.
What happens if a lead asks the bot to stop contacting them?The request is honored immediately and the profile is permanently added to a do-not-contact list, with no follow-up or re-entry from any future campaign or channel.
How does it keep OpenAI costs from spiraling out of control?Every OpenAI call logs tokens and cost, and the system auto-pauses once spend hits the configured OPENAI_MONTHLY_BUDGET_USD, with a dashboard showing cost per lead and per active customer.
Size
<0.1 MB
Stars
401
Updated
CommitAug 27
Age
1mo
Commits · 90 Days