Mapa de Dor do Comprador a partir de Vagas no LinkedIn
Pegue posts de vagas do LinkedIn. Decodifique-os em um mapa de dor do comprador estruturado com pontuações, dores e ângulos de outreach.
Regra crítica: Toda dor inferida deve citar linguagem específica da descrição da vaga que a suporte. Nunca alucine dores que não estejam fundamentadas no texto. Se um post for muito genérico para inferir dor, diga isso explicitamente e atribua uma pontuação de força de sinal baixa.
Regra ética: Não infira atributos pessoais ou características protegidas sobre os candidatos. Foque estritamente na dor operacional no nível da empresa e nas necessidades organizacionais.
Passo 1: Verificação de Configuração
Confirme as variáveis de ambiente necessárias:
echo "GEMINI_API_KEY: ${GEMINI_API_KEY:+set}"
Se GEMINI_API_KEY estiver faltando: Pare. Informe ao usuário: "GEMINI_API_KEY é necessária. Obtenha em aistudio.google.com. Adicione ao seu arquivo .env."
Passo 2: Coletar Entradas
A skill precisa de 3 entradas obrigatórias. Colete-as antes de prosseguir.
2a: Brief do Produto
Pergunte: "Descreva seu produto em 2 a 5 frases. O que você faz, qual é sua proposta de valor central e para quem você segmenta?"
Se o usuário já incluiu isso no prompt: Extraia. Confirme: "Brief do produto capturado: [resumo]."
2b: Descrição do ICP
Pergunte: "Descreva seu perfil de cliente ideal em 2 a 6 tópicos: setores, portes de empresa, cargos para os quais você vende, dicas de stack tecnológico."
Se o usuário já incluiu isso no prompt: Extraia. Confirme: "ICP capturado: [resumo]."
2c: Posts de Vagas
Pergunte: "Cole as descrições de vagas que você deseja analisar. Para cada post, inclua o nome da empresa, o título do cargo e o texto completo da descrição. Você pode colar de 1 a 15 posts."
Formatos aceitos:
- Texto bruto colado com nome da empresa e título do cargo claramente identificados
- Objetos JSON estruturados com campos:
company_name,job_title,location(opcional),seniority(opcional),team_or_function(opcional),job_description_text,job_url(opcional) - Vários posts separados por delimitadores claros (--- ou numerados)
Se algum campo estiver faltando: Infira o que puder a partir do texto da descrição. Se company_name ou job_description_text estiver faltando, peça antes de prosseguir.
2d: Entradas Opcionais
Se o usuário fornecer algum destes, capture:
account_notes: contexto adicional por empresa (financiamento, stack tecnológico, ferramentas conhecidas, contatos)focus_dimension: "pipeline" (tendência a pontuação e priorização), "positioning" (tendência a ângulos de mensagem) ou "both" (padrão)
Passo 3: Extrair Sinais
Para cada post de vaga, analise e extraia:
- Time / função: Em qual time esse cargo está? (GTM, Produto, Infra, Dados, RevOps, CS, Engenharia, etc.)
- Senioridade: IC, Senior IC, Gerente, Diretor, VP, C-level
- Ênfase nas responsabilidades: Classifique o modo dominante:
- Apagar incêndios: "estabilizar", "corrigir", "reduzir tempo de inatividade", "desbloquear"
- Construir novo: "construir do zero", "0→1", "greenfield", "projetar e implementar"
- Otimizar: "dimensionar", "otimizar", "melhorar eficiência", "automatizar"
- Substituir: "substituir legado", "migrar de", "modernizar"
- Linguagem dos requisitos: Observe palavras-chave que sinalizam intenção: "primeira contratação X", "cargo crítico", "imediato", "deve ter"
- Dicas de ferramentas / stack: Quaisquer referências a ferramentas específicas, plataformas ou categorias de tecnologia que se sobreponham à área de produto do usuário
Agrupe por empresa. Se vários posts vierem da mesma empresa, agrupe seus sinais juntos.
Informe: "Sinais extraídos de X posts em Y empresas."
Passo 4: Pontuar com o LLM
Leia references/scoring-rubric.md para o modelo de pontuação completo.
Construa a requisição LLM:
cat > /tmp/pain-map-score-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Você é um analista de GTM especializado em decodificar sinais de contratação em intenção de compra. Para cada conta fornecida, você pontuará três dimensões e inferirá o contexto da empresa. Regras: (1) Cada pontuação deve incluir uma explicação em texto simples de uma frase. (2) signal_strength mede quantos e quão específicos são os sinais de contratação em relação à área de produto do usuário. (3) urgency mede o quão urgente a necessidade de contratação parece. (4) icp_fit mede o quão próxima a empresa está da descrição do ICP do usuário. (5) Cada pontuação é de 1 a 10. (6) overall_score = round((0.4 * signal_strength + 0.3 * urgency + 0.3 * icp_fit) * 10). (7) Infira buy_vs_build a partir da linguagem da vaga. Use EXATAMENTE um destes rótulos: 'Leaning build', 'Leaning buy', 'Hybrid (buy-and-build)', 'Unknown'. (8) Infira stage_guess a partir de pistas da empresa: estágio de financiamento, número de funcionários, tipo de empresa. (9) Produza apenas JSON válido."
}]
},
"contents": [{
"parts": [{
"text": "SCORING_CONTEXT_HERE"
}]
}],
"generationConfig": {
"temperature": 0.2,
"maxOutputTokens": 4096
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/pain-map-score-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
Substitua SCORING_CONTEXT_HERE por:
- O brief do produto e a descrição do ICP do Passo 2
- Os sinais extraídos por empresa do Passo 3
- As regras da rubrica de pontuação de
references/scoring-rubric.md - Instruções para produzir JSON com:
company_name,headline,overall_score,score_breakdown(signal_strength, urgency, icp_fit — cada um com pontuação e explicação),stage_guess,buy_vs_build_guess
Passo 5: Construir Mapa de Dor
Para cada conta, use os sinais extraídos e o contexto de pontuação do LLM para construir o mapa de dor do comprador.
cat > /tmp/pain-map-analysis-request.json << 'ENDJSON'
{
"system_instruction": {
"parts": [{
"text": "Você é um analista de dor B2B que lê descrições de vagas e identifica as dores operacionais que uma empresa está enfrentando. Regras: (1) Toda dor deve ter um rótulo curto, uma descrição de 1 a 3 frases e frases específicas citadas do post de vaga como evidência de suporte. (2) Classifique as dores como primárias (diretamente relevantes para o produto do usuário) ou secundárias (dor real, mas tangencial ao produto). (3) Se um post for muito genérico para inferir dor específica, declare isso explicitamente — não alucine. (4) Para cada conta, gere também de 1 a 3 ângulos de outreach recomendados. Cada ângulo tem: angle_name (curto), narrative (1-2 frases sobre como liderar) e talk_track_bullets (2-4 pontos de conversa concretos). (5) Os ângulos de outreach devem referenciar dores e evidências específicas, não propostas de valor genéricas. Nenhuma palavra proibida: sinergia, alavancar, inovador, de ponta, melhor da classe, classe mundial, transformador, disruptivo, perfeito, robusto, abrangente, revolucionar, transformar, otimizar. (6) Produza apenas JSON válido."
}]
},
"contents": [{
"parts": [{
"text": "ANALYSIS_CONTEXT_HERE"
}]
}],
"generationConfig": {
"temperature": 0.4,
"maxOutputTokens": 8192
}
}
ENDJSON
curl -s -X POST \
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d @/tmp/pain-map-analysis-request.json \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d['candidates'][0]['content']['parts'][0]['text'])"
Substitua ANALYSIS_CONTEXT_HERE por:
- O brief do produto e a descrição do ICP
- Os posts de vagas de cada empresa (texto completo)
- As pontuações e o contexto do Passo 4
- Notas da conta, se fornecidas
- A preferência de
focus_dimension(pipeline / positioning / both) - Instruções para produzir por conta:
buyer_pain_map(primary_pains, secondary_pains) erecommended_outreach_angles
Leia references/examples.md para calibrar a qualidade e profundidade esperadas da saída.
Passo 6: Construir Objeto de Handoff
Para cada conta, gere um bloco de handoff estruturado que o outreach-sequence-builder possa consumir diretamente:
handoff:
for_outreach_sequence_builder:
account_summary: Resumo de 2 a 3 frases da situação da empresa e do contexto de contratação
key_pain: A dor mais acionável em uma frase
suggested_personas: 2 a 4 títulos de cargos das pessoas com maior probabilidade de serem donas dessa dor
tone: Uma frase descrevendo o tom de outreach recomendado
O handoff deve ser concreto o suficiente para que alguém possa colá-lo no prompt do outreach-sequence-builder e obter uma sequência utilizável sem pesquisar novamente a conta.
Passo 7: Auto-QA
Execute cada verificação e corrija violações antes de apresentar:
- Toda dor inferida cita pelo menos uma frase específica da descrição da vaga
- Nenhuma dor alucinada para posts genéricos/de sinal fraco (verifique posts com signal_strength ≤ 3)
- Todas as três pontuações (signal_strength, urgency, icp_fit) têm uma explicação de uma frase
- A pontuação geral corresponde à fórmula:
round((0.4 × signal + 0.3 × urgency + 0.3 × icp_fit) × 10) - O rótulo comprar-vs-construir é um de: "Leaning build", "Leaning buy", "Hybrid (buy-and-build)", "Unknown"
- Nenhuma palavra proibida em ângulos de outreach: sinergia, alavancar, inovador, de ponta, melhor da classe, classe mundial, transformador, disruptivo, perfeito, robusto, abrangente, revolucionar, transformar, otimizar
- Cada ângulo de outreach tem de 2 a 4 bullets de talk track, não declarações de valor genéricas
- Contas fora do ICP são sinalizadas com uma recomendação clara para despriorizar
- Objetos de handoff estão completos com todos os 4 campos (account_summary, key_pain, suggested_personas, tone)
- Nenhum atributo pessoal ou característica protegida inferido sobre candidatos
- Posts agrupados por empresa quando vários posts são da mesma empresa
Corrija qualquer violação antes de apresentar.
Passo 8: Saída e Salvamento
Saída legível para humanos
Apresente a análise completa neste formato:
## Mapa de Dor do Comprador — [YYYY-MM-DD]
**Produto:** [nome do produto do brief]
**Posts analisados:** X posts em Y empresas
**Foco:** [pipeline / positioning / both]
---
### [Nome da Empresa] — Pontuação: [N]/100
**Título:** [resumo de uma linha sobre o que a contratação revela]
| Dimensão | Pontuação | Explicação |
|----------|-----------|-------------|
| Força do Sinal | N/10 | [uma frase] |
| Urgência | N/10 | [uma frase] |
| Adequação ao ICP | N/10 | [uma frase] |
**Estágio:** [palpite de estágio] | **Comprar-vs-Construir:** [rótulo de postura]
#### Dores Primárias
- **[Rótulo da dor]:** [descrição de 1 a 3 frases]
- Evidência: "[frase citada do post de vaga]"
#### Dores Secundárias
- **[Rótulo da dor]:** [descrição de 1 a 3 frases]
- Evidência: "[frase citada do post de vaga]"
#### Ângulos de Outreach Recomendados
1. **[Nome do ângulo]:** [narrativa]
- [bullet 1]
- [bullet 2]
- [bullet 3]
#### Handoff → outreach-sequence-builder
> **Resumo:** [2 a 3 frases]
> **Dor chave:** [uma frase]
> **Personas sugeridas:** [lista]
> **Tom:** [uma frase]
---
[repita para cada empresa, ordenado por overall_score decrescente]
Salvar em arquivo
mkdir -p docs/pain-maps
OUTFILE="docs/pain-maps/$(date +%Y-%m-%d).md"
cat > "$OUTFILE" << 'EOF'
REPORT_CONTENT_HERE
EOF
echo "Mapa de dor salvo em $OUTFILE"
Se várias empresas forem analisadas, salve também arquivos individuais usando nomes de empresa slugificados (minúsculas, substitua espaços e caracteres especiais por hífens, remova hífens finais):
ex.: "ACME, Inc." → acme-inc.md, "CoolStartup Inc" → coolstartup-inc.md
SLUG=$(echo "NOME_DA_EMPRESA" | tr '[:upper:]' '[:lower:]' | sed 's/[^a-z0-9]/-/g' | sed 's/--*/-/g' | sed 's/-$//')
cat > "docs/pain-maps/${SLUG}.md" << 'EOF'
CONTEÚDO_DA_CONTA_INDIVIDUAL_AQUI
EOF
Quando Usar
- Você tem de 1 a 15 descrições de vagas coladas e quer saber qual dor cada empresa está sentindo
- Você está planejando outreach baseado em conta e precisa de análise de dor estruturada antes de escrever sequências
- Você quer priorizar quais contas com sinal de contratação abordar primeiro
- Um PMM quer linguagem de dor do mundo real a partir de posts de vagas para refinar o posicionamento
Quando NÃO Usar
- Você precisa encontrar empresas que estão contratando (use
linkedin-hiring-intent-scannerouyc-intent-radar-skill) - Você precisa escrever mensagens de outreach (use
outreach-sequence-builder— alimente-o com o handoff desta skill) - Você quer monitorar uma plataforma por sinais ao longo do tempo (use
reddit-icp-monitoroutwitter-GTM-find-skill) - Você precisa de informações de contato ou enriquecimento de e-mail (esta skill não fornece isso)
Funciona Bem Com
- outreach-sequence-builder: Passe o bloco
handoff.for_outreach_sequence_builderdiretamente como contexto ao construir uma sequência. - noise-to-linkedin-carousel: Use as dores primárias e citações de evidência como material de origem para um carrossel sobre problemas do comprador.
- reddit-icp-monitor: Faça referência cruzada de temas de dor de posts de vagas com temas de dor que aparecem em discussões do Reddit.