Pesquisa
Monte uma análise de concorrente que o time de vendas possa usar
Reúna as páginas do próprio concorrente, a cobertura ao redor dele e o que os compradores dizem no X, depois monte uma análise em que cada afirmação tem fonte, data e status.
Copiar o prompt
Substitua os campos entre colchetes e cole no Claude Code, Codex ou qualquer IA com acesso ao terminal. Ela instala a skill da Felo, pergunta antes de gastar créditos e executa o fluxo.
Monte um teardown competitivo de [nome do concorrente] para [nosso produto]. Escopo: [segmento], [região], [idioma]. Janela de tempo: [últimos 90 dias / últimos 12 meses]. Decisão que ele apoia: [mudança de preço / posicionamento de lançamento / tratamento de objeções]. Fontes iniciais: [domínio do concorrente], [URL da página de preços], [URL do changelog]. Produza um teardown em Markdown com: 1. Como eles se posicionam, nas próprias palavras. 2. Uma tabela de evidências: afirmação, título da fonte, URL, data, status (Verified / Vendor claim / Third-party / Signal / Inference / Not verified). 3. Preços: o que a página diz, com o link e a data de verificação. Nunca copie um valor para o texto sem a página e a data. 4. Onde os compradores discordam, com contas do X e datas, marcado como sinal. 5. O que devemos fazer em seguida, marcado como recomendação. 6. Uma lista completa de fontes. Regras: - Cite o posicionamento deles; não reformule para algo mais forte. - Separe alegações do fornecedor, cobertura de terceiros e suas inferências. Rotule cada linha. - Nunca invente preço, métrica, nome de cliente ou benchmark. Dado ausente é “Não disponível”. - Transforme a janela de tempo e a região em valores explícitos. - Antes de gastar créditos, mostre as chamadas de API planejadas e aguarde minha aprovação. - Não publique, envie, agende nem grave nada em um CRM. - Grave o resultado em ./competitor-teardown.md e resuma no chat.
A cópia também inclui os passos de instalação e as regras de segurança.
O que você recebe
Saída de exemplo de uma execução. Não é geração ao vivo.
Análise de concorrente — [concorrente], verificado em 2026-10-30
Como se posicionam
Manchete da home: “A plataforma para times de suporte em crescimento.” Página de categoria: “Tudo o que seu time de suporte precisa.” Ambas são alegações do fornecedor, citadas como escritas.
Tabela de evidências
| Afirmação | Fonte | Data | Status |
|---|---|---|---|
| Posiciona-se como plataforma, não ferramenta pontual | https://example.com/competitor/home | 2026-10-30 | Verified |
| Entrega mudanças toda semana | https://example.com/competitor/changelog | 2026-10-28 | Verified |
| Coberto em roundups independentes | https://example.com/roundup | 2026-10-27 | Third-party |
| Compradores citam onboarding lento | post do X citado abaixo | 2026-10-14 | Signal |
| Enterprise é o maior segmento | Não disponível | — | Not verified |
Preços
A página de preços lista um plano em camadas e um por uso. As tarifas não são repetidas aqui; consulte a página ao vivo e a data: https://example.com/competitor/pricing (2026-10-30).
Onde os compradores discordam
@example_dev, 2026-10-14: “a configuração levou mais tempo do que a demo sugeria.” Um post datado; é reclamação, não estimativa de frequência.
Recomendação
Destacar o tempo até o primeiro resultado na página de comparação. É nossa inferência, não alegação do concorrente.
Fontes
- https://example.com/competitor/home
- https://example.com/competitor/pricing
- https://example.com/competitor/changelog
As chamadas exatas
Para desenvolvedores: o mesmo fluxo em código, na ordem de execução.
Mostrar as chamadas reais da API
Comece por uma base com fontes
O Chat devolve uma resposta e as páginas que usou, o que dá um mapa de onde o concorrente é discutido. Trate a resposta como pista, não como fonte: o que importa são os links, que fornecem as linhas de terceiros na tabela de evidências. O helper abaixo envia a chave uma vez e lança erro em respostas fora de 2xx.
competitor.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ChatData = { data: { answer: string; resources: { link: string; title: string; snippet: string }[]; }; }; const competitor = "Example Competitor"; const segment = "mid-market support teams"; const baseline = await felo<ChatData>("/v2/chat", { query: `How does ${competitor} position itself for ${segment}? Include pricing and recent launches.`, }); const seedSources = baseline.data.resources.slice(0, 5);Saída de exemplo
{ "answer": "The competitor positions itself as …", "sources": [ { "link": "https://example.com/competitor", "title": "…", "snippet": "…" } ] }Baixe as páginas que eles controlam
A cobertura de terceiros mostra o que as pessoas pensam; as páginas do concorrente mostram o que ele afirma. Extraia home, preços e changelog em Markdown com legibilidade e carimbe a data de captura: uma página de preços sem data é uma armadilha.
competitor.ts type ExtractData = { data: { content: string } }; const ownedPages = [ { url: "https://example.com/competitor/home", title: "Homepage" }, { url: "https://example.com/competitor/pricing", title: "Pricing" }, { url: "https://example.com/competitor/changelog", title: "Changelog" }, ]; const fetched = await Promise.all( ownedPages.map(async (page) => { const res = await felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, with_cache: true, }); const checkedAt = new Date().toISOString().slice(0, 10); return { ...page, checkedAt, content: res.data.content }; }), );Saída de exemplo
{ "url": "https://example.com/competitor/pricing", "checkedAt": "2026-10-30", "content": "# Pricing\n\nExtracted page text…" }Veja o que os compradores dizem no X
Pesquise no X as objeções e contornos que as pessoas publicam sobre o concorrente. Guarde o perfil e a data de cada post; uma citação datada é evidência de uma reclamação, não de sua frequência, então a análise marca como sinal e nunca transforma alguns posts em porcentagem.
competitor.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const buyerSignal = await felo<XData>("/v2/x/tweet/search", { query: `"${competitor}" (pricing OR onboarding OR migration)`, limit: 25, since_time: since, }); const objections = buyerSignal.data.tweets.slice(0, 5);Saída de exemplo
{ "data": { "tweets": [ { "content": "setup took longer than the demo suggested", "author": { "username": "example_dev" }, "created_at": "2026-10-14T09:20:00Z", "metrics": { "retweet_count": 3, "favorite_count": 24 } } ] } }Monte a análise com uma tabela de evidências
Este é o passo editorial: transforme as páginas e os posts em afirmações e dê a cada uma fonte, data e status. A coluna de status mantém o documento honesto:
Verifiedpara o que a página diz,Vendor claimpara o marketing deles,Third-partypara cobertura externa,Signalpara um post datado,Inferencepara a sua leitura eNot verifiedquando falta evidência.competitor.ts const today = new Date().toISOString().slice(0, 10); const row = (claim: string, source: string, date: string, status: string) => `| ${claim} | ${source} | ${date} | ${status} |`; const teardown = [ `# Competitor teardown — ${competitor}`, `Scope: ${segment}. Checked ${today}.`, "", "| Claim | Source | Date | Status |", "| --- | --- | --- | --- |", row("Free tier listed on the pricing page", ownedPages[1].url, fetched[1].checkedAt, "Verified"), row("Positions as a platform, not a point tool", ownedPages[0].url, fetched[0].checkedAt, "Vendor claim"), row("Discussed in independent coverage", seedSources[0]?.link ?? "Not available", today, "Third-party"), row("Buyers report onboarding friction", "X post, quoted below", today, "Signal"), row("Most revenue comes from enterprise", "Not available", "—", "Not verified"), "", "## Recommendation", "Lead with time-to-first-result on the comparison page. Inference, not a competitor claim.", ].join("\n"); console.log(teardown);Saída de exemplo
| Free tier listed on the pricing page | https://example.com/competitor/pricing | 2026-10-30 | Verified |
Arquive no LiveDoc para a próxima atualização
Crie um LiveDoc por concorrente, adicione as páginas capturadas como recursos de URL e a própria análise como documento. Reenviar URLs é deduplicado, então no próximo trimestre você baixa só o que mudou e a análise anterior continua no mesmo arquivo.
competitor.ts type LiveDocData = { data: { short_id: string } }; const teardownDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Teardown: ${competitor}`, description: `Sources and teardown checked ${today}`, }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/urls`, { urls: fetched.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/doc`, { title: `Teardown ${today}`, content: teardown, }); console.log(teardownDoc.data.short_id); // the next refresh reuses this LiveDocSaída de exemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
O que está incluído
- Base com fontes do Chat API e as páginas por trás da resposta
- Home, preços e changelog do concorrente extraídos em Markdown
- Comentários datados de compradores no X, marcados como sinal e não prova
- Tabela de evidências que separa fatos verificados, alegações do fornecedor e inferência
- LiveDoc que guarda as fontes para a próxima atualização não começar do zero
O que não faz
- Somente fontes públicas; sem entrevistas de ganho/perda, notas de CRM ou dashboards privados
- Preços são linkados e datados, nunca congelados em uma tabela sem data de checagem
- A cobertura do X é incompleta e não é uma amostra representativa de compradores
- Não escolhe seu posicionamento; recomendações são marcadas como inferência
- Não publica a análise nem grava em ferramentas de battlecard
Perguntas
De onde vêm as evidências?
O Chat API devolve uma base com fontes e as páginas que usou, o Web Fetch transforma as páginas do concorrente em Markdown e o X Search adiciona posts datados de compradores. Cada linha mantém fonte e data, e inferências têm status próprio.
Posso cobrir mais de um concorrente?
Sim. Rode o mesmo prompt uma vez por concorrente e mantenha um LiveDoc por empresa. Uma página comparativa combina apenas linhas marcadas como verificadas, sem misturar evidências de duas execuções.
Posso citar os preços deles?
O fluxo registra o que a página de preços diz, com link e data de checagem. Não congela tarifas no texto, porque preços de fornecedores mudam e um número antigo é pior que nenhum.
E as nossas notas de ganho/perda?
Ele lê apenas fontes públicas. Adicione notas internas como um recurso de documento separado no LiveDoc e marque como interno; elas nunca são citadas em material para clientes.
Com que frequência atualizar?
Atualize por gatilho, não por calendário: mudança de preço, lançamento ou início de ciclo de vendas. Rode de novo no mesmo LiveDoc para a análise anterior ficar ao lado da nova.
Quanto custa uma análise?
Cada chamada de chat, extração e busca no X gasta créditos por uso; as tarifas atuais estão na página de preços. O prompt pede aprovação antes de gastar.
Fluxos relacionados
Transforme uma pergunta em um briefing de pesquisa com fontes
Pergunte à web, salve as páginas por trás da resposta como Markdown, adicione o que os praticantes dizem no X e mantenha as evidências em um LiveDoc que você pode consultar depois.
Abrir o fluxo de trabalhoPesquisaTransforme uma pergunta de mercado em um briefing go-to-market
Faça uma pergunta precisa ao mercado, leia as páginas de categoria e preços por trás da resposta, colete como os compradores descrevem o problema no X e salve um briefing de GTM com afirmações de fontes e perguntas em aberto.
Abrir o fluxo de trabalhoConteúdoPublique um resumo diário de IA que a equipe realmente lê
Obtenha um resumo com fontes, adicione o que os praticantes publicam no X, pegue uma transcrição de vídeo, monte a edição em Markdown e arquive no LiveDoc.
Abrir o fluxo de trabalhoFaça do seu jeito
A mesma receita, adaptada ao seu processo real.
Atualize por gatilho, não por calendário
Rode o mesmo fluxo quando o concorrente mudar preço, lançar algo grande ou antes de um ciclo de vendas. Mantenha cada análise como documento datado no mesmo LiveDoc, para o trimestre anterior ficar ao lado do novo.
Transforme a análise em battlecards
Da mesma tabela, escreva uma página por persona — comprador econômico, campeão e revisor técnico — usando apenas linhas `Verified`, com os links anexados. Deixe `Inference` fora de qualquer material para clientes.
Compare dois concorrentes
Rode o fluxo uma vez por concorrente com LiveDocs separados e monte uma página comparativa apenas com linhas `Verified` nas duas execuções. Nunca junte duas execuções em uma tabela sem a coluna de status.
Continue
As páginas de referência por trás desta receita e para onde ir depois.