Investigación
Investiga un nicho de producto antes de comprar inventario
Reúne el contexto de categoría, captura páginas de competidores en una fecha declarada, lee de qué se quejan los compradores en X y guarda evidencias y memo en un LiveDoc para revisar antes de pedir.
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.
Investiga este nicho de producto antes de comprar stock o lanzar: [producto o categoría]. Mercado: [país o región]. Canal: [marketplace / DTC / retail]. Ventana de publicaciones de compradores: últimos [30] días. Productos comparables o URL de competidores: [URL]. Restricciones de presupuesto y margen: [restricciones]. Audiencia: [equipo]. Genera un memo en Markdown con: 1. Un veredicto de un párrafo: merece la pena investigar más y qué cambiaría tu opinión. 2. Señales de demanda: qué dicen las fuentes sobre interés, estacionalidad y sustitutos. 3. Productos competidores: qué afirma cada uno, el precio capturado en su página y dónde dicen los compradores que falla. 4. Posicionamiento de precio: los precios encontrados realmente en las páginas, cada uno con su fecha de captura. 5. Quejas y necesidades no cubiertas, con citas, cuentas y fechas. 6. Riesgos y preguntas abiertas que resolver antes de comprar inventario. 7. Fuentes: cada página y publicación usada, con URL y fecha. Reglas: - Usa solo lo que devuelven las API. Nunca inventes tamaño de mercado, estimaciones de ventas, número de reseñas ni precios de competidores. - Reporta los precios exactamente como se capturaron, con la URL de la página y la fecha. Nunca los promedies ni normalices. - Trata las publicaciones de X como anécdotas, no como datos de mercado, y dilo cuando la muestra sea escasa. - Separa lo que afirma el proveedor de lo que reporta el comprador. - Antes de gastar créditos, muestra las extracciones y búsquedas previstas y espera mi aprobación. - No contactes con proveedores, no hagas pedidos ni escribas a nadie en X. - Escribe el resultado en ./product-research.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.
Investigación de producto — categoría de ejemplo
Veredicto
Merece una mirada más cercana, pero la evidencia pública no basta para decidir inventario. Las preguntas abiertas son el siguiente paso.
Contexto de categoría
Los compradores comparan espacio en encimera y limpieza más que presión. Ninguna fuente pública sostiene una estimación de tamaño de mercado.
Páginas de competidores
- Example A — página de producto (capturada el 2026-10-30)
- Example B — página de producto (capturada el 2026-10-30)
Lo que reportan los compradores
- @example_buyer: «Tercer recambio en un año; la junta falla.» — 2026-10-19
- @example_home: «Limpiarlo lleva minutos y nadie lo menciona.» — 2026-10-24
Posicionamiento de precio
Los precios se capturaron el 2026-10-30 de las páginas enlazadas. Hay dos niveles; cada página se cita directamente, sin promediar.
Riesgos y preguntas abiertas
- La durabilidad de la junta es la queja más repetida.
- Ninguna fuente cubre tasas de devolución.
- Comprobar plazos del proveedor y coste puesto antes de pedir.
Fuentes
- https://example.com/product-a — 2026-10-30
- https://x.com/example_buyer/status/... — 2026-10-19
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Pide a Chat la imagen de categoría
Empieza por la respuesta con fuentes, no por una página en blanco: Chat busca en la web pública, ordena páginas y devuelve los recursos usados. Pregunta por contexto de demanda, sustitutos y quejas comunes en una consulta y guarda los mejores recursos como lista de evidencias.
product-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; snippet: string }[]; }; }; const niche = "portable espresso maker"; // replace with the category you are judging const context = await felo<ChatData>("/v2/chat", { query: `Demand, price bands, and buyer complaints for ${niche} in the US`, }); const sources = context.data.resources.slice(0, 5);Salida de ejemplo
{ "answer": "Buyers compare on counter space and cleanup …", "sources": [ { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" } ] }Captura las páginas de competidores
Extrae dos o tres páginas de producto de competidores en Markdown con legibilidad. El objetivo es la afirmación y el precio en la página hoy, no una ficha técnica reescrita. Mantén la URL junto al contenido y anota la fecha de captura: un precio sin fecha es un rumor.
product-research.ts const PRODUCT_PAGES = [ { url: "https://example.com/product-a", title: "Example A — product page" }, { url: "https://example.com/product-b", title: "Example B — product page" }, ]; type ExtractData = { data: { content: string } }; const listings = await Promise.all( PRODUCT_PAGES.map((page) => felo<ExtractData>("/v2/web/extract", { url: page.url, output_format: "markdown", with_readability: true, }).then((extracted) => ({ ...page, content: extracted.data.content })), ), );Salida de ejemplo
[ { "url": "https://example.com/product-a", "title": "Example A — product page", "content": "# Example A\n\nSpecs and price as displayed…" } ]Lee lo que reportan los compradores en X
Las páginas de proveedores listan funciones; los compradores describen fallos. Busca el nicho junto a palabras de fricción —envío, calidad, reembolso— en los últimos 30 días y guarda cuenta, fecha y enlace. Son anécdotas, no datos de demanda, y el memo debe decirlo.
product-research.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number; reply_count: number }; url: string; }[]; }; }; const since = Math.floor((Date.now() - 30 * 24 * 60 * 60 * 1000) / 1000); const search = await felo<XData>("/v2/x/tweet/search", { query: `"${niche}" (shipping OR quality OR refund)`, limit: 50, since_time: since, }); const complaints = search.data.tweets;Salida de ejemplo
{ "data": { "tweets": [ { "content": "Third replacement in a year; the seal fails.", "author": { "username": "example_buyer" }, "created_at": "2026-10-19T15:02:00Z", "metrics": { "retweet_count": 1, "favorite_count": 12, "reply_count": 3 }, "url": "https://x.com/example_buyer/status/..." } ] } }Redacta el memo
Este paso es código simple: junta la respuesta de categoría, las fechas de captura, las citas de compradores y la lista de fuentes en un Markdown. Sé honesto con las preguntas abiertas: el memo es útil porque separa lo que las páginas prueban de lo que falta confirmar con un proveedor.
product-research.ts const capturedOn = new Date().toISOString().slice(0, 10); const memo = [ `# Product research — ${niche}`, "", "## Category context", context.data.answer, "", "## Competitor pages", ...listings.map( (page) => `- [${page.title}](${page.url}) — captured ${capturedOn}`, ), "", "## What buyers report", ...complaints.slice(0, 10).map( (post) => `- @${post.author.username} (${post.created_at.slice(0, 10)}): ${post.content}`, ), "", "## Sources", ...sources.map((source) => `- [${source.title}](${source.link})`), ].join("\n"); console.log(memo);Archiva las evidencias en un LiveDoc
Ejecuta una vez por nicho: crea el LiveDoc y guarda el
short_iden configuración. Añade las páginas de competidores y fuentes de Chat como recursos URL para que el archivo deduplique, y el memo como documento. Antes de comprar, consulta las capturas y mira qué precios se movieron.product-research.ts type LiveDocData = { data: { short_id: string } }; const research = await felo<LiveDocData>("/v2/livedocs", { name: `Product research: ${niche}`, description: "Competitor pages, buyer posts, and the memo", }); await felo(`/v2/livedocs/${research.data.short_id}/resources/urls`, { urls: [ ...listings.map((page) => ({ url: page.url, title: page.title })), ...sources.map((source) => ({ url: source.link, title: source.title })), ].slice(0, 10), }); await felo(`/v2/livedocs/${research.data.short_id}/resources/doc`, { title: `Product memo — ${capturedOn}`, content: memo, });Salida de ejemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Qué incluye
- Imagen de categoría con fuentes de Chat y las páginas detrás
- Páginas de competidores en Markdown con fecha de captura
- Quejas de compradores en X con cuentas, fechas y enlaces
- Memo Markdown montado con esas entradas
- Un LiveDoc con evidencias y memo
Qué no hace
- Solo fuentes públicas; informes de pago, presupuestos de proveedores y ventas internas fuera
- No estima tamaño de mercado, volumen de ventas ni margen
- Los precios se registran tal como se capturan, nunca normalizados ni promediados
- Los posts de X son anécdotas, no datos de demanda
- No contacta proveedores, no hace pedidos ni modifica listings
Preguntas
¿De dónde viene el contexto de mercado?
El Chat API devuelve una respuesta con fuentes y las páginas públicas usadas. Las páginas de competidores vienen de tus URLs y las extrae Web Fetch; los posts vienen de X Search. No se usan datos privados de ventas.
¿Me dice si un producto se venderá?
No. Organiza evidencias públicas —contexto, precios capturados y quejas— y escribe lo desconocido. Validar demanda requiere tus datos: anuncios, preventas o conversaciones con proveedores.
¿Y si el marketplace bloquea la extracción?
Web Fetch descarga páginas públicas una URL a la vez y algunos sitios bloquean. Usa una página accesible y deja que el memo marque la captura ausente en vez de adivinar un precio.
¿Cómo evito precios desactualizados?
Cada precio del memo está ligado a la URL y a la fecha de captura. Vuelve a extraer cerca de la decisión de compra; el archivo guarda capturas anteriores para ver movimientos.
¿Contacta con proveedores o vendedores?
No. El flujo es de solo lectura: extrae páginas, busca posts públicos y escribe un memo local. Nunca envía mensajes, hace pedidos ni edita listings.
¿Cuánto cuesta una investigación?
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 trabajoContenidoConvierte las conversaciones sociales en un brief semanal de escucha
Busca los posts de X de la última semana sobre tu marca y competidores, añade contexto web con fuentes, lee las páginas detrás y archiva cada edición para que la siguiente semana empiece por lo conocido.
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.
Añade transcripciones de reviews
Si la categoría tiene vídeos de review, obtén la transcripción con YouTube Subtitling y añade dos o tres citas con timestamp a la sección de compradores. Un review sigue siendo la experiencia de una persona: mantén la etiqueta de anécdota.
Compara dos candidatos
Ejecuta los mismos pasos por candidato y pon los memos lado a lado: funciones afirmadas, precio capturado, queja recurrente y pregunta abierta. La comparación sigue siendo cualitativa hasta tener datos propios.
Actualiza antes de comprar
Vuelve a extraer el día antes del pedido. Mantén el mismo LiveDoc y añade un memo nuevo para que el archivo muestre qué cambió entre la investigación de escritorio y la compra.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.