Investigación
Investiga una cuenta objetivo antes de tu primer contacto
Lee la web de la empresa, la cobertura reciente y lo que publica, y escribe un brief de cuenta con movimientos recientes, prioridades probables, temas de conversación e incógnitas honestas.
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 brief de cuenta sobre [nombre o dominio de la empresa] antes de [primer contacto / llamada de descubrimiento / renovación]. Nuestra oferta: [producto o servicio]. Comprador que nos interesa: [rol]. Ventana de movimientos recientes: [últimos 90 días / últimos 12 meses]. Lee su propio sitio, cobertura pública y publicaciones públicas. Genera un brief en Markdown con: 1. Qué hacen, en un párrafo, con fuentes. 2. Movimientos recientes: lanzamientos, financiación, contratación, liderazgo, alianzas, con fechas y enlaces. 3. Prioridades probables del trimestre, marcadas claramente como inferencia. 4. Temas para abrir conversación: tres observaciones concretas, cada una con su fuente. 5. Incógnitas: lo que no pudiste verificar con fuentes públicas. 6. Una lista completa de fuentes. Reglas: - Nunca inventes nombre de contacto, correo, teléfono, plantilla, ingresos ni importe de financiación. - Solo fuentes públicas: sin datos privados, sin páginas que requieran inicio de sesión y sin directorios extraídos. - No escribas en un CRM ni en ningún otro sistema. El brief es un archivo que revisa una persona. - Marca cada inferencia como tal; conserva los hechos con sus enlaces y fechas. - No presentes la intención del comprador como un hecho. - Antes de gastar créditos, muestra las llamadas API previstas y espera mi aprobación. - No envíes, programes, publiques ni escribas a nadie. - Escribe el resultado en ./account-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 de cuenta — [empresa], comprobado el 2026-10-30
Qué hacen
Fabrica robots de picking para almacenes de operadores logísticos medianos. Fuente: https://example.com/about (comprobado el 2026-10-30).
Movimientos recientes
- Abrió un segundo centro de ensamblaje — https://example.com/news/expansion (2026-10-24)
- Contrata un equipo de «operaciones de despliegue» — https://example.com/careers (comprobado el 2026-10-30)
- Publicación de su cuenta sobre una integración de partner — @example_company (2026-10-21)
Prioridades probables (inferencia)
Despliegues más rápidos en más sedes. Inferencia del anuncio de expansión y del nuevo rol de despliegue; no es un plan declarado ni está confirmado públicamente.
Temas para abrir conversación
- Su segunda sede es nueva: preguntar cómo cambia el manual de despliegue cuando las sedes difieren. Fuente: https://example.com/news/expansion
- Un rol dedicado de operaciones de despliegue sugiere un traspaso entre ventas e instalación. Fuente: https://example.com/careers
Incógnitas
- Quién lidera hoy operaciones de despliegue: no disponible en fuentes públicas.
- Tamaño de flota y valores de contrato: no disponible.
Fuentes
- https://example.com/about
- https://example.com/news/expansion
- https://example.com/careers
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Obtén la visión de empresa
Pregunta a Chat qué hace la empresa y qué cambios públicos recientes hay, guardando las fuentes citadas.
account.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 company = "Example Robotics"; const domain = "example.com"; const buyerRole = "Head of Operations"; const overview = await felo<ChatData>("/v2/chat", { query: `What does ${company} do, who buys from it, and what changed in the last 90 days?`, }); const seedSources = overview.data.resources.slice(0, 5);Salida de ejemplo
{ "answer": "The company builds …", "sources": [ { "link": "https://example.com/about", "title": "…", "snippet": "…" } ] }Lee web, precios y empleo
Con Web Fetch, lee About, precios y empleo para entender producto, clientes y roles abiertos.
account.ts type ExtractData = { data: { content: string } }; const companyPages = [ { url: `https://${domain}/about`, title: "About" }, { url: `https://${domain}/pricing`, title: "Pricing" }, { url: `https://${domain}/careers`, title: "Careers" }, ]; const pages = await Promise.all( companyPages.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/careers", "checkedAt": "2026-10-30", "content": "# Careers\n\nOpen roles: deployment operations…" }Mira señales públicas de 90 días
Busca en X el nombre de la empresa y del producto, guardando posts públicos, cuentas y fechas de los últimos 90 días.
account.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 posts = await felo<XData>("/v2/x/tweet/search", { query: `"${company}" (hiring OR launch OR partnership OR expansion)`, limit: 20, since_time: since, }); const recent = posts.data.tweets.slice(0, 5);Salida de ejemplo
{ "data": { "tweets": [ { "content": "We just opened our second assembly site", "author": { "username": "example_company" }, "created_at": "2026-10-21T14:02:00Z", "metrics": { "retweet_count": 4, "favorite_count": 31 } } ] } }Escribe el brief de cuenta
Describe visión, movimientos recientes, prioridades probables, temas de conversación, incógnitas y fuentes.
account.ts const today = new Date().toISOString().slice(0, 10); const accountBrief = [ `# Account brief — ${company}`, `Checked ${today}. Buyer role: ${buyerRole}.`, "", "## What they do", overview.data.answer, "", "## Recent moves", ...recent.map( (post) => `- ${post.created_at.slice(0, 10)}: ${post.content} (from @${post.author.username})`, ), ...pages.map((page) => `- ${page.title} page captured ${page.checkedAt}: ${page.url}`), "", "## Likely priorities (inference)", "<!-- One or two sentences from the moves above. Mark them as inference, never a stated plan. Delete this comment when filled. -->", "", "## Conversation starters", ...recent.slice(0, 3).map( (post) => `- Ask about: ${post.content.slice(0, 100)} (dated ${post.created_at.slice(0, 10)})`, ), "", "## Unknowns", "- Who owns the workflow we sell into: Not available from public sources.", "- Contract values and team size: Not available.", "", "## Sources", ...pages.map((page) => `- ${page.title}: ${page.url}`), ...seedSources.map((source) => `- ${source.title}: ${source.link}`), ].join("\n"); console.log(accountBrief);Salida de ejemplo
# Account brief — Example Robotics
Guarda en el LiveDoc
Guarda el brief y las fuentes en el LiveDoc para reutilizar en el próximo contacto.
account.ts type LiveDocData = { data: { short_id: string } }; const accountDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Account: ${company}`, description: `Briefs and sources checked ${today}`, }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/urls`, { urls: [ ...pages.map((page) => ({ url: page.url, title: page.title })), ...seedSources.map((source) => ({ url: source.link, title: source.title })), ], }); await felo(`/v2/livedocs/${accountDoc.data.short_id}/resources/doc`, { title: `Account brief ${today}`, content: accountBrief, }); console.log(accountDoc.data.short_id); // the next call reuses this LiveDocSalida de ejemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Qué incluye
- Visión de empresa con fuentes de Chat
- Web, precios y empleo extraídos en Markdown
- Posts públicos fechados en X
- Brief de cuenta estructurado
- LiveDoc con evidencias
Qué no hace
- No proporciona emails, teléfonos ni datos personales
- No lee datos privados ni páginas solo con login
- No escribe en el CRM ni envía mensajes
- Empleados, ingresos y financiación solo con fuente explícita
- Prioridades e intenciones se marcan como inferencia
Preguntas
¿Da emails de contacto?
No. Solo hace investigación pública y no proporciona email, teléfono ni datos personales.
¿De dónde vienen los datos?
Chat devuelve una visión con fuentes, Web Fetch lee web, precios y empleo, y X Search añade posts públicos. Cada elemento conserva enlace y fecha.
¿Puedo investigar empresas fuera de tecnología?
Sí. Donde falta información pública, el brief marca incógnitas en vez de inventar.
¿Escribe en el CRM?
No. Solo genera un brief Markdown; la integración con CRM es tuya.
¿Las prioridades son hechos?
No. El brief marca «prioridades probables» como inferencia y da la base; la decisión final es del vendedor.
¿Cuánto cuesta una ejecución?
Chat, extracción y X Search se facturan por uso; las tarifas actuales están en la página de precios y el prompt pide aprobación antes de gastar.
Flujos relacionados
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.
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 trabajoContenidoConvierte un brief de producto en una landing page
Investiga la audiencia, guarda el brief en LiveDoc, crea una tarea de Landing Page desde ese contexto y consulta hasta que la página alojada esté lista.
Abrir el flujo de trabajoHazlo tuyo
La misma receta, adaptada a cómo entregas de verdad.
Solo un segmento
Restringe a un sector o región para un brief más concreto.
Añade el último lanzamiento
Incluye la página del lanzamiento como fuente extra para temas actuales.
Junto al análisis de competencia
Compara prioridades del brief con el posicionamiento del análisis para encontrar un ángulo.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.