Investigación
Convierte una pregunta de mercado en un brief go-to-market
Haz una pregunta precisa al mercado, lee las páginas de categoría y precios detrás de la respuesta, recoge cómo describen el problema los compradores en X y guarda un brief GTM con afirmaciones con fuentes y preguntas abiertas.
Copiar el prompt
Sustituye los campos entre corchetes y pégalo en Claude Code, Codex o cualquier IA con acceso a terminal. Instala el skill de Felo, pregunta antes de gastar créditos y ejecuta el flujo.
Elabora un informe de investigación go-to-market para [producto] que entra en [segmento o ICP] en [región], en [idioma]. Motion: [self-serve / ventas / partner]. Decisión que apoya: [lanzamiento / precio / reposicionamiento]. Ventana temporal: [últimos 90 días / últimos 12 meses]. Genera un informe en Markdown con: 1. Definición del segmento: quiénes son, qué usan hoy y qué dicen las fuentes sobre el tamaño: cita una fuente o escribe «No disponible». 2. Lenguaje del comprador: cómo describen el problema, con enlaces y fechas. 3. Alternativas: de qué se cambian, incluidos hojas de cálculo y no hacer nada. 4. Objeciones y las pruebas que piden los compradores. 5. Preguntas abiertas que las fuentes públicas no pueden responder. 6. Una lista completa de fuentes. Reglas: - Toda afirmación de mercado necesita enlace y fecha. Nunca estimes tamaño, crecimiento o presupuesto por intuición. - Separa fuentes independientes, páginas de proveedores y tus propias inferencias. - Usa X para lenguaje y objeciones, no como prueba del tamaño de mercado. - Convierte la ventana temporal y la región en valores explícitos. - Antes de gastar créditos, muestra las llamadas API previstas y espera mi aprobación. - No publiques, envíes, programes ni escribas en ningún CRM. - Escribe el resultado en ./gtm-brief.md y resúmelo en el chat.
La copia también incluye los pasos de instalación y las reglas de seguridad.
Lo que obtienes
Salida de ejemplo de una ejecución. No es generación en vivo.
Informe GTM — [segmento] en [región]
Definición del segmento
Equipos operativos pequeños que gestionan turnos en hojas de cálculo. Tamaño: no disponible en las fuentes públicas revisadas; no pongas un número sin fuente.
Lenguaje del comprador
- «seguimos haciendo esto en una hoja de cálculo» — publicación de X, 2026-10-18
- «la configuración es la parte difícil» — publicación de X, 2026-10-02
Etiquetado como lenguaje, no como prueba de prevalencia.
Alternativas que mencionan
Hojas de cálculo, una suite existente y no hacer nada. Fuente: https://example.com/thread (2026-10-18).
Objeciones y pruebas exigidas
Revisión de seguridad y ruta de migración. Los compradores piden una referencia con nombre; no tenemos ninguna pública, así que sigue abierto.
Preguntas abiertas
- ¿Qué parte del segmento ya tiene una línea de presupuesto propia?
- ¿La objeción cambia con el tamaño de la empresa?
Fuentes
- https://example.com/category-page
- https://example.com/pricing-page
- https://example.com/thread
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Enmarca la pregunta de mercado
Chat devuelve una respuesta y las páginas usadas, así que empieza por una pregunta lo bastante estrecha: quién compra, qué usan hoy y qué objeciones surgen. Guarda los recursos como enlaces-pista; la respuesta es pista, los enlaces son evidencia y cierran la lista de fuentes.
gtm.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 product = "scheduling tool"; // replace with your product const segment = "operations teams at 50-200 person companies"; const region = "DACH"; const market = await felo<ChatData>("/v2/chat", { query: `Who buys ${product} for ${segment} in ${region}, what do they use today, and what objections come up?`, }); const seedSources = market.data.resources.slice(0, 5);Salida de ejemplo
{ "answer": "Buyers in this segment usually start from spreadsheets and …", "sources": [ { "link": "https://example.com/category-page", "title": "…", "snippet": "…" } ] }Lee las páginas de categoría
Descarga las páginas que enmarcan el mercado: visión de categoría, comparación y precios. Extráelas en Markdown con legibilidad y pon fecha de captura, porque la calidad de la lectura depende de las páginas detrás.
gtm.ts type ExtractData = { data: { content: string } }; const marketPages = [ { url: "https://example.com/category", title: "Category overview" }, { url: "https://example.com/comparison", title: "Comparison page" }, { url: "https://example.com/pricing", title: "Pricing page" }, ]; const pages = await Promise.all( marketPages.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 }; }), );Salida de ejemplo
{ "url": "https://example.com/category", "checkedAt": "2026-10-30", "content": "# Category overview\n\nExtracted page text…" }Recoge cómo describen el problema
Busca en X las palabras que usan los compradores al encontrarse el problema, no el nombre de tu producto. Guarda cuentas y fechas; el brief usa esos posts para lenguaje y objeciones, nunca como medida del tamaño de mercado o frecuencia de una objeción.
gtm.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 language = await felo<XData>("/v2/x/tweet/search", { query: `(spreadsheet OR "scheduling tool") (alternative OR "looking for")`, limit: 25, since_time: since, }); const quotes = language.data.tweets.slice(0, 5);Salida de ejemplo
{ "data": { "tweets": [ { "content": "we are still doing this in a spreadsheet", "author": { "username": "example_ops" }, "created_at": "2026-10-18T11:05:00Z", "metrics": { "retweet_count": 1, "favorite_count": 18 } } ] } }Escribe el brief alrededor de la decisión
Reúne definición de segmento, lenguaje de compradores, alternativas, objeciones y preguntas abiertas en un Markdown. Cada afirmación conserva fuente y fecha, el tamaño de mercado solo aparece con fuente y lo que las fuentes públicas no responden va a preguntas abiertas en vez de inferencia.
gtm.ts const today = new Date().toISOString().slice(0, 10); const sourceLine = (title: string, url: string, date: string) => `- ${title}: ${url} (checked ${date})`; const brief = [ `# GTM brief — ${segment} in ${region}`, "", "## Segment definition", "See the category page for how the segment is described. Market size: Not available from public sources reviewed.", "", "## Buyer language", ...quotes.map((post) => `- @${post.author.username}, ${post.created_at.slice(0, 10)}: ${post.content}`), "", "## Alternatives buyers mention", "Spreadsheets, an incumbent suite, and doing nothing. Treated as language until a source ranks them.", "", "## Objections and proof required", "Migration path and a named reference. Marked open: whether the objection changes by company size.", "", "## Open questions", "- How much of the segment already has a dedicated budget line?", "- Which objection blocks a pilot most often?", "", "## Sources", ...pages.map((page) => sourceLine(page.title, page.url, page.checkedAt)), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(brief);Salida de ejemplo
# GTM brief — operations teams at 50-200 person companies in DACH
Guarda las evidencias para el siguiente mercado
Crea un LiveDoc por segmento y región, añade las páginas capturadas como recursos URL y el brief como documento. El siguiente mercado parte de las mismas fuentes sin volver a descargar categorías, y reañadir una URL se deduplica.
gtm.ts type LiveDocData = { data: { short_id: string } }; const briefDoc = await felo<LiveDocData>("/v2/livedocs", { name: `GTM: ${segment} — ${region}`, description: `Market evidence checked ${today}`, }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, { urls: pages.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, { title: `GTM brief ${today}`, content: brief, }); console.log(briefDoc.data.short_id); // reuse for the next regionSalida de ejemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Qué incluye
- Lectura de mercado con fuentes del Chat API y las páginas detrás
- Páginas de categoría, comparación y precios en Markdown
- Lenguaje y objeciones de compradores en X con cuentas y fechas
- Brief estructurado alrededor de la decisión de lanzamiento, no del tema
- LiveDoc para reutilizar evidencias en la siguiente región o lanzamiento
Qué no hace
- Solo fuentes públicas; sin informes de pago, paneles ni entrevistas con clientes
- Nunca estima tamaño o crecimiento del mercado — sin datos escribe «No disponible»
- Los posts de X son lenguaje y señal, no una muestra representativa de compradores
- No elige el segmento ni el precio por ti
- No publica el brief ni escribe en el CRM
Preguntas
¿Necesito un informe de mercado de pago?
No. El flujo lee fuentes públicas y marca los huecos. Si ya tienes un informe, añádelo como documento en el LiveDoc y cítalo como cualquier otra fuente.
¿Puedo investigar un mercado en otro idioma?
Sí. Define región e idioma. Las citas quedan en el original con traducción al lado para que un revisor local compruebe la redacción.
¿Me da el tamaño de mercado?
Solo cuando una fuente lo indica, con enlace y fecha. Si no, el brief escribe «No disponible» en vez de inventar un número o extrapolar de un post.
¿Puede hablar con clientes?
No. Lee fuentes públicas. Añade notas de entrevista como documento y márcalas como internas; el brief nunca presenta notas privadas como evidencia pública.
¿En qué se diferencia del brief de investigación?
El brief de investigación responde a una pregunta. Este flujo organiza las evidencias alrededor de una decisión go-to-market —segmento, lenguaje de compradores, alternativas, objeciones y pruebas que piden— para alimentar un plan de lanzamiento.
¿Cuánto cuesta un brief?
Cada llamada de chat, extracción y búsqueda en X consume créditos por uso; las tarifas actuales están en la página de precios. El prompt pide aprobación antes de gastar.
Flujos relacionados
Convierte una pregunta en un brief de investigación con fuentes
Pregunta a la web, guarda las páginas detrás de la respuesta como Markdown, añade lo que dicen los profesionales en X y conserva las evidencias en un LiveDoc que puedes consultar después.
Abrir el flujo de trabajoInvestigaciónCrea un análisis de competencia que tu equipo de ventas pueda usar
Reúne las páginas del competidor, la cobertura a su alrededor y lo que dicen los compradores en X, y monta un análisis donde cada afirmación lleva fuente, fecha y estado.
Abrir el flujo de trabajoOficinaConvierte una página de investigación en una presentación
Extrae la página, guárdala como contexto LiveDoc, deja que la API PPT Task construya el deck y consulta hasta obtener el enlace final.
Abrir el flujo de trabajoHazlo tuyo
La misma receta, adaptada a cómo entregas de verdad.
Ejecuta por región
Mantén la estructura y cambia solo región e idioma. Un LiveDoc por región y las mismas preguntas para que los briefs se comparen.
Añade tus notas de entrevista
Pega notas de llamadas como recurso de documento y márcalas internas. El brief puede citarlas junto a evidencias públicas, pero nunca presenta una nota privada como fuente pública.
Alimenta el deck de lanzamiento
Pasa la sección de objeciones y pruebas al flujo de deck manteniendo la lista de fuentes. El brief es la capa de evidencia; el deck es una presentación, no una segunda fuente de verdad.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.