Felo API PlatformFelo API Platform

Pesquisa

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.

Tempo20 minutosNívelIntermediárioAtualizado2026-10-29
Para quemFundadores e operadoresPesquisadores de mercadoTimes de GTM

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 briefing de pesquisa com fontes para [pergunta ou decisão].

Escopo: [mercado, região, idioma]. Janela de tempo: [últimos 30 dias / últimos 12 meses]. Público: [quem vai ler]. Profundidade: [visão de uma página / briefing completo].

Produza um briefing em Markdown com:
1. Uma resposta curta em três tópicos.
2. Uma tabela de evidências: afirmação, título da fonte, URL, data de publicação.
3. Onde as fontes divergem.
4. O que ainda é desconhecido.
5. Uma lista completa de fontes.

Regras:
- Toda afirmação factual precisa de um link de fonte. Separe fatos, opiniões e suas inferências.
- Nunca invente citações, métricas, datas ou fontes. Dado ausente é “Não disponível”, nunca zero.
- Prefira fontes primárias. Use o X como sinal de profissionais, não como prova.
- Transforme a janela de tempo em datas explícitas de início e fim e informe o fuso horário.
- Antes de gastar créditos, mostre as chamadas de API planejadas e aguarde minha aprovação.
- Não crie tarefa recorrente, não envie mensagens e não publique nada.
- Grave o resultado em ./research-brief.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.

Exemplo de briefing (trecho)

Modelos pequenos vão substituir os grandes em bots de suporte?

Resposta curta

  • Modelos pequenos já bastam para classificação e respostas de primeira linha.
  • O gargalo é a qualidade da recuperação, não o tamanho do modelo.
  • Times que migraram relatam custo menor por ticket, não taxa de resolução maior.
AfirmaçãoFonteData
A qualidade da recuperação domina a qualidade da respostahttps://example.com/rag-eval2026-10-12
Custo por ticket resolvido caiu 38%https://example.com/support-case2026-09-28

Onde as fontes discordam

Benchmarks de fornecedores mostram quase paridade; testes independentes ainda veem diferença em reembolsos de várias etapas.

Ainda desconhecido

Se a diferença fecha com melhores ferramentas ou exige um modelo maior.

As chamadas exatas

Para desenvolvedores: o mesmo fluxo em código, na ordem de execução.

Mostrar as chamadas reais da API
  1. Pergunte à web

    O Chat pesquisa a web, ordena as fontes, escreve a resposta e devolve os recursos usados. Guarde as três principais: cada passo seguinte segue um desses links. O helper abaixo envia a chave uma vez e lança erro em respostas fora de 2xx.

    research.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 }[] };
    };
    
    export async function answer(question: string) {
      const chat = await felo<ChatData>("/v2/chat", { query: question });
      return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) };
    }

    Saída de exemplo

    {
      "answer": "Recent developments include …",
      "sources": [
        { "link": "https://example.com/article", "title": "…" }
      ]
    }
  2. Baixe as páginas por trás da resposta

    Um trecho não basta para um briefing. Baixe as páginas em Markdown com legibilidade ativada, para que citações e títulos sobrevivam sem o ruído de navegação. Pedir a mesma URL de novo pode usar o cache de extração.

    research.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    Saída de exemplo

    // pages[0].content
    "# Example Article\n\nExtracted article content…"
  3. Adicione o que o X está dizendo

    Notícias cobrem anúncios; o X mostra o que as pessoas encontram na prática. Pesquise os últimos sete dias e guarde autor e data para que o briefing atribua cada afirmação. Aumente limit para ampliar a rede; cada página de resultados traz um cursor.

    research.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const social = await felo<XData>("/v2/x/tweet/search", {
      query: question,
      limit: 10,
      since_time: since,
    });

    Saída de exemplo

    { "data": { "tweets": [
      { "content": "…", "author": { "username": "…" }, "created_at": "…" }
    ] } }
  4. Arquive as evidências em um LiveDoc

    Crie um LiveDoc e adicione as fontes como recursos de URL. A API deduplica o que já viu e devolve um resource id por URL, então as mesmas evidências podem ser consultadas por perguntas futuras sem nova busca.

    research.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: `Research: ${question.slice(0, 60)}`,
      description: "Sources collected while answering the question",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: sources.map((source) => ({ url: source.link, title: source.title })),
    });
    
    console.log(doc.data.short_id); // keep this for later queries
  5. Consulte as evidências de novo depois

    É aqui que está o ganho: a próxima pergunta faz busca semântica no LiveDoc em vez da web aberta. Passe resource_ids apenas quando quiser limitar a um subconjunto conhecido.

    research.ts
    type Retrieved = {
      data: { title: string; content: string; score: number }[];
    };
    
    async function ask(livedoc: string, query: string) {
      const hits = await felo<Retrieved>(
        `/v2/livedocs/${livedoc}/resources/retrieve`,
        { query },
      );
      return hits.data.filter((hit) => hit.score >= 0.7);
    }

    Saída de exemplo

    [
      { "title": "…", "content": "…", "score": 0.92 }
    ]

O que está incluído

  • Resposta com fontes do Chat API e as páginas por trás dela
  • Extração das páginas completas em Markdown para as fontes mais fortes
  • Posts do X com autor e data como sinal de praticantes
  • LiveDoc que mantém as evidências consultáveis para perguntas futuras

O que não faz

  • Somente fontes públicas; páginas com paywall ou só para login podem falhar
  • A cobertura do X é um sinal, não uma pesquisa representativa
  • Sem entrevistas, dados privados ou bancos pagos
  • Quando as evidências são poucas, o briefing diz isso em vez de preencher lacunas
  • Uma execução por prompt; o agendamento fica com seu agent ou cron

Perguntas

De onde vêm as fontes?

O Chat API devolve as páginas que usou, o Web Fetch transforma as mais fortes em Markdown e o X Search adiciona posts datados de praticantes. Cada item mantém sua URL.

Posso pesquisar um mercado fora de tecnologia?

Sim. Troque o campo de escopo pelo seu mercado. Mercados de nicho podem ter menos fontes públicas; o briefing marca essas lacunas em vez de adivinhar.

As evidências ficam salvas depois da execução?

Sim, quando o passo do LiveDoc roda. O short_id retornado permite que perguntas futuras consultem as mesmas páginas sem buscá-las de novo.

Quanto custa um briefing?

A cobrança é por créditos de uso; as tarifas atuais estão na página de preços. O prompt pede aprovação antes de gastar.

Posso rodar toda semana?

Sim, mas este prompt roda uma vez. Coloque o agendamento em um agent ou cron que execute o mesmo fluxo.

E se uma fonte estiver atrás de paywall?

Ela é ignorada e marcada como indisponível. O briefing nunca preenche uma lacuna com um fato ou citação inventados.

Fluxos relacionados

Faça do seu jeito

A mesma receita, adaptada ao seu processo real.

Salve o briefing em arquivo

Junte a resposta, os trechos das páginas e as citações do X em Markdown e entregue à sua ferramenta de relatórios ou faça commit no repositório de docs. Mantenha os links ao lado das afirmações — o briefing vale tanto quanto suas citações.

Rode em um agendamento

Envolva `answer()` em um cron e grave cada briefing em um arquivo datado. O mesmo LiveDoc acumula fontes, e na quarta semana você responde com as evidências das três primeiras.

Pule o LiveDoc

Se você já tem um banco de dados, salve lá a resposta do chat e as páginas extraídas. O passo do LiveDoc é para busca, não para armazenamento padrão.

As páginas de referência por trás desta receita e para onde ir depois.