Nicholas-V-rld/upwork-scout

Encontre, filtre e pontue vagas recentes do Upwork para seu nicho usando o conector MCP oficial do Upwork, depois rascunhe propostas honestas para as 3–5 melhores. Somente leitura por padrão; nunca envia ou gasta Connects sem aprovação explícita.

O que é upwork-scout?

Upwork Scout é uma skill de agente de IA projetada para ajudar freelancers a encontrar e se candidatar a vagas no Upwork de forma eficiente, sem desperdiçar Connects. Ela automatiza a busca, filtragem, pontuação e rascunho de propostas, usando o conector MCP oficial do Upwork. A skill é útil porque economiza tempo e esforço ao identificar as melhores oportunidades, evitar armadilhas como clientes com baixa classificação ou vagas que já foram preenchidas, e criar propostas personalizadas e honestas. Funciona em plataformas como Claude Code, Cursor e Codex, seguindo um fluxo de cinco etapas: busca e desduplicação de vagas, verificação e descarte, pontuação (0–10) das melhores, rascunho de propostas com prova verificável do freelancer e geração de um arquivo de saída. A skill é somente leitura por padrão, exigindo aprovação explícita do usuário para envio, garantindo que nenhum Connect seja gasto sem autorização.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Nicholas-V-rld/upwork-ai-playbook/tree/main/skills/upwork-scout

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Upwork scout

Encontra vagas que valem Connects, descarta as que desperdiçam e rascunha propostas que usam apenas provas que o freelancer pode comprovar.

Antes de começar

  1. Leia me.md (copie me.example.md na primeira vez e preencha). Ele contém o nicho, taxa, termos de busca e a única prova que você pode usar.
  2. Chame list_accounts e escolha a conta TALENT nameada em me.md. O conector pode trocar de conta entre sessões. Se a conta nameada não estiver lá, pare e avise. Nunca rascunhe para a pessoa errada.
  3. Leia o saldo de Connects com get_profile action=connects_balance.

1. Busca

Execute cada busca e depois deduplique por id da vaga:

  • find_jobs smart_search mode=most_recent, days_posted=2, verified_payment_only=true
  • find_jobs search com title = cada termo de título em me.md, verified_payment_only=true, proposals_max=10
  • find_jobs search com query = as "palavras de problema" em me.md (ex.: "hacked OR slow OR broken"), mesmos filtros

Pegadinhas: title não pode ser combinado com query ou com sort=relevance. search não tem filtro de data, então use smart_search mode=most_recent para "postado hoje".

Pule qualquer id de vaga já listada em um arquivo anterior na pasta de saída.

2. Verifique, depois descarte

Chame find_jobs get nas melhores ~10. Descarte uma vaga se:

  • applied for true, ou activityStat.jobActivity.totalHired ≥ 1, ou totalOffered ≥ 1
  • preferred_locations.location_required for true e excluir o país do freelancer
  • feedback_score do cliente for menor que 4,0, ou avaliações recentes forem 1–2★ (sinalize se a vaga for excelente)
  • estiver fora do nicho em me.md

3. Pontue (0–10), mantenha as 3–5 melhores

SinalPontos
Uma vaga de correção (quebrado, hackeado, lento, checkout falhando, migração)+3
Construção central no nicho+2
Trabalho contínuo ou retentor mencionado+2
Cliente gastou $1K+ com classificação 4,5★++2
0 entrevistados e menos de 5 propostas+1
Custa mais de 20 Connects−1

4. Rascunho

Para cada escolha:

  • A primeira linha é sobre o trabalho deles. Se o post nomear uma URL pública, busque-a (timeout de 20s) e abra com uma coisa real que você viu. Os clientes veem apenas as duas primeiras linhas na lista deles, então uma abertura genérica nunca é aberta.
  • Depois, um plano numerado, um preço e uma pergunta no final.
  • Responda a cada pergunta de triagem e obedeça a qualquer instrução "comece sua proposta com X" exatamente.
  • A prova vem apenas de me.md: links ao vivo, números medidos, histórias confirmadas. Qualquer coisa que só o freelancer possa saber (papel em um projeto, uma correção passada, tempo de resposta, um preço que não definiram) vai como [CONFIRM: ...]. Nunca invente resultados, clientes, números ou experiência.
  • Enquanto a conta tiver menos de 10 avaliações, precifique para vencer e planeje fazer upsell de um plano de manutenção após a entrega.

5. Escreva o arquivo

Escreva <pasta de saída>/YYYY-MM-DD.md contendo:

  1. Uma linha de cabeçalho com o saldo de Connects de hoje.
  2. Uma tabela ranqueada: link da vaga, cliente (país, gastos, classificação), custo de Connects e por que foi escolhida.
  3. Uma linha "Pulado(a)" explicando por que os outros foram descartados.
  4. O total de Connects para todas as escolhas.
  5. Um rascunho por escolha.

Se nada passar pelos filtros, ainda escreva o arquivo com uma tabela vazia e o motivo.

6. Envio (apenas quando o usuário disser)

Faça isso uma proposta de cada vez. O Upwork mantém uma única pré-visualização aberta, e criar uma segunda invalida a primeira.

  1. list_freelancer_proposals action=invitations e action=list. Se houver um convite para a vaga, use accept_invitation em vez de create.
  2. manage_proposals create constrói uma pré-visualização. Mostre ao usuário o texto completo, connects_cost, connects_balance, quaisquer unmet_preferred_qualifications e o bloco de boost (current_top_bids e recommended_connects, ou "boost indisponível").
  3. Trabalhos de preço fixo precisam de um payment_mode (by_project ou by_milestone), e o usuário deve reconhecer o texto de Assistência de Disputas do Upwork antes de você enviar.
  4. Pergunte sobre anexos de arquivo e sugira anexar projetos de portfólio relevantes via portfolio_project_ids (de get_profile action=list_highlights).
  5. Chame confirm_preview apenas após um sim explícito. Depois, leia a proposta de volta com list_freelancer_proposals action=get e verifique se connectsBid corresponde ao boost aprovado.

Nunca

  • Envie, edite, retire, mensagem ou aceite algo sem o OK explícito do usuário para aquela ação específica.
  • Coloque os fatos de uma pessoa na conta de outra.
  • Preencha uma lacuna [CONFIRM] com um palpite.

Habilidades Relacionadas