Radar de Empresas
Orquestador de inteligencia competitiva. Toma nombres de empresas, ejecuta investigación paralela en más de 8 plataformas, puntúa cada una en una escala de calor de 0 a 100 y produce un informe de radar estructurado con resúmenes generados por IA.
Este es un skill de orquestación. Delega la recopilación de datos a micro-skills existentes de opendirectory y coordina su salida; no las reemplaza.
Arquitectura
ENTRADA: Nombre(s) / URL(s) de empresa
|
[1. Fase de Perfil] -- Investigación web para construir perfiles de empresa
|
[2. Recolección de Señales] -- Investigación paralela en plataformas (8 canales)
/ | | | | | \ \
GH TW RD HN PH YC WEB MEDIOS
|
[3. Motor de Puntuación] -- Puntuación de calor en 4 dimensiones (0-100)
|
[4. Síntesis de IA] -- Generación de resumen ejecutivo
|
SALIDA: Informe de Radar + Análisis Detallado por Empresa
Canales de Señal y sus Mapeos de Opendirectory
| Canal | Skill de Opendirectory | Qué Detecta |
|---|---|---|
| GitHub | gh-issue-to-demand-signal + búsqueda web | Estrellas, forks, commits, lanzamientos, velocidad de envío |
| Twitter/X | twitter-GTM-find-skill | Tweets, menciones, participación, actividad del fundador |
reddit-icp-monitor, reddit-post-engine | Sentimiento de la comunidad, puntos débiles, rumores | |
| Hacker News | hackernews-intel | Menciones en historias, puntos, señales en portada |
| Product Hunt | producthunt-launch-kit | Lanzamientos, votos, actividad del creador |
| YC Jobs | yc-intent-radar-skill / yc-jobs-scraper | Ofertas de empleo, departamentos contratando, señales de crecimiento |
| Web / Prensa | Búsqueda Tavily + competitor-pr-finder | Noticias, anuncios de productos, financiación |
| Precios | pricing-finder | Cambios de precios, actualizaciones de planes, estructura de planes |
| Posición de Mercado | map-your-market | ICP, panorama competitivo, vacíos de mensajería |
Errores Comunes
| El agente querrá... | Por qué está mal |
|---|---|
| Ejecutar skills secuencialmente | Los 8 canales de señal son independientes. Deben ejecutarse en paralelo. |
| Alucinar conteos de estrellas de GitHub o cifras de contratación | Cada dato debe rastrearse hasta un resultado de búsqueda o salida de skill específicos. No "aproximadamente 500 estrellas". |
| Omitir el cálculo de la puntuación de calor | El informe de radar requiere salida puntuada, no solo un volcado de datos. La puntuación de calor es el diferenciador principal. |
| Generar informes incompletos porque un skill falló | Un canal que falla no bloquea el informe completo. Puntúa lo que tienes, anota las brechas. |
| Usar conocimiento de entrenamiento de IA para descripciones de empresas | Cada descripción de empresa debe provenir de investigación web en vivo, no de la memoria. |
| Olvidar puntuar los niveles de actividad de las puntuaciones de calor | La puntuación de calor tiene umbrales explícitos: Alta (60+), Media (30-59), Baja (1-29), Inactiva (0). |
Paso 1: Verificación de Configuración
Verifica que las claves API requeridas sean accesibles para los canales que admite la plataforma del usuario:
if [ -z "$TAVILY_API_KEY" ]; then echo "TAVILY_API_KEY: NO ESTABLECIDA -- requerida para enriquecimiento web"; else echo "TAVILY_API_KEY: configurada"; fi
if [ -z "$GITHUB_TOKEN" ]; then echo "GITHUB_TOKEN: no establecida -- API de GitHub limitada a 60 solicitudes/hora"; else echo "GITHUB_TOKEN: configurado"; fi
Los skills específicos que se están orquestando tienen sus propios requisitos de clave API. Consulta el SKILL.md de cada skill para más detalles. Requerido para el funcionamiento completo:
TAVILY_API_KEY-- búsqueda web y enriquecimiento de empresas (consíguela en app.tavily.com)GITHUB_TOKEN-- acceso a la API de GitHub (consíguelo en github.com/settings/tokens)
Si TAVILY_API_KEY falta: detente e informa al usuario. Sin ella, el perfilado de empresas y el enriquecimiento web no pueden funcionar.
Paso 2: Analizar Entrada
Recopila de la conversación:
companies: lista de nombres/URLs de empresas a rastrear (requerido, mínimo 1, máximo 10 por ejecución)output_preference: "informe completo" (predeterminado), "solo alertas", "solo informe", o "solo puntuación de calor" (tabla de clasificación + puntuaciones solo, sin análisis detallados)timeframe: "tiempo real" (predeterminado) o "última semana" o "último mes"
Si el usuario da un solo nombre de empresa: aún así ejecuta el pipeline completo del radar. Los radares de una sola empresa son válidos: obtén el perfil completo.
Si hay más de 10 empresas: dile al usuario "Máximo 10 empresas por escaneo de radar. Ejecutaré las primeras 10. Avísame si quieres reemplazar alguna."
Pregunta si alguna empresa tiene handles conocidos específicos:
- Nombre de organización de GitHub (si es diferente del nombre de la empresa)
- Handle de Twitter
- Lote de YC (si es empresa de YC)
- Slug de Product Hunt
Esto ahorra tiempo de investigación. Si se desconoce, la fase de perfil los descubrirá.
Paso 3: Fase de Perfil de Empresa
Para cada empresa, crea un perfil básico antes de ejecutar la investigación en plataformas.
Paso 3a: Enriquecimiento Web Inicial
Para cada empresa, ejecuta una búsqueda en Tavily para descubrir:
[nombre de empresa] sitio web oficial twitter github linkedin producthunt yc fundadores
Extrae de los resultados de búsqueda:
- Dominio / URL del sitio web
- Descripción (2-3 frases)
- Handle de Twitter (de URLs de twitter.com/X.com en los resultados)
- Organización de GitHub (de URLs de github.com en los resultados)
- URL de LinkedIn
- Slug de Product Hunt
- Lote de YC y URL (si aplica)
- Nombres de fundadores y handles de Twitter
Formato de salida: Para cada empresa, produce un objeto de perfil siguiendo references/company-profile-format.md.
Paso 3b: Confirmar con el Usuario
Muestra los perfiles descubiertos y pide al usuario que confirme o corrija antes de continuar.
## Perfiles de Empresa Descubiertos
| Empresa | Dominio | Twitter | GitHub | Lote YC | Fundadores |
|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... |
¿Corregir algún handle incorrecto antes de proceder con la recolección de señales?
Espera la confirmación del usuario. No saltes este paso: handles incorrectos producen señales incorrectas.
Paso 4: Recolección Paralela de Señales
Ahora ejecuta la investigación en todas las plataformas en paralelo para todas las empresas confirmadas.
Mapa de Recolección de Señales
Para cada plataforma, usa el método apropiado. Ejecuta TODAS las plataformas simultáneamente, no las secuencies.
Señal de GitHub
Usa la búsqueda web (Tavily) para encontrar la organización de GitHub, luego busca:
github.com/[org] estrellas forks commits
Extrae:
- Total de estrellas en todos los repositorios
- Total de forks
- Commits recientes (últimos 7 días)
- Lanzamientos recientes (últimos 30 días)
- Fecha del último push
- Lenguaje principal
- Número de issues abiertos
O llama al skill gh-issue-to-demand-signal si deseas un análisis más profundo de la señal de demanda a partir de Issues de GitHub.
Señal de Twitter/X
Usa twitter-GTM-find-skill o la búsqueda de Tavily:
twitter.com/[handle] site:twitter.com [empresa] startup
Extrae:
- Número de tweets recientes (últimas 24 h)
- Volumen de menciones
- Actividad de tweets del fundador
- Temas/hashtags clave
Señal de Reddit
Usa el enfoque de reddit-icp-monitor o la búsqueda de Tavily:
site:reddit.com [nombre de empresa] [categoría de producto]
Extrae:
- Número de menciones
- Puntuaciones de publicaciones (upvotes)
- Sentimiento (positivo/negativo/mixto)
- Quejas o elogios clave
- Subreddits relevantes
Señal de Hacker News
Usa el enfoque de hackernews-intel o la búsqueda en la API de HN Algolia:
site:news.ycombinator.com [nombre de empresa]
Extrae:
- Número de historias
- Puntos totales
- Historias en portada
- Temas clave
Señal de Product Hunt
Usa el enfoque de producthunt-launch-kit o la búsqueda de Tavily:
site:producthunt.com [nombre de empresa] productos
Extrae:
- Lanzamientos recientes
- Número de votos positivos
- Comentarios/sentimiento
- Frecuencia de lanzamientos
Señal de YC Jobs
Usa el enfoque de yc-intent-radar-skill / yc-jobs-scraper o la búsqueda de Tavily:
site:workatastartup.com [nombre de empresa] OR site:ycombinator.com/companies [nombre de empresa]
Extrae:
- Número de empleos abiertos
- Títulos/roles de empleo
- Desglose por departamento (Ingeniería, Ventas, Marketing, etc.)
- Ubicación/estado remoto
Señal Web / Prensa
Usa la búsqueda de Tavily:
[nombre de empresa] financiación anuncio lanzamiento de producto noticias 2026
Extrae:
- Rondas de financiación recientes
- Lanzamientos de productos
- Contrataciones clave anunciadas en prensa
- Anuncios de asociaciones
Señal de Precios (opcional, ejecutar si el usuario quiere inteligencia de precios)
Usa el skill pricing-finder o la búsqueda de Tavily:
[nombre de empresa] precios planes 2026
Extrae:
- Niveles de precios
- Cambios en la estructura de planes
- Plan gratuito vs de pago
Manejo de Fallos
- Si algún canal devuelve 0 resultados, anótalo en el informe como "No se detectó señal"
- Si algún skill no está disponible (falta clave API), anota como "Canal no disponible"
- Nunca fabriques datos de memoria. Si no puedes encontrarlos, márcalos como no encontrados.
- Un canal vacío no invalida el informe completo.
Paso 5: Cálculo de Puntuación de Calor
Usa el script incluido scripts/heat-score-calc.mjs para puntuar cada empresa. Este script implementa el algoritmo de puntuación en 4 dimensiones de references/heat-score-methodology.md.
Cómo Ejecutarlo
Recopila todos los datos de señal en un archivo JSON que coincida con este esquema:
{
"companies": [{
"name": "NombreDeEmpresa",
"signals": {
"stars": null, "forks": null, "ph_votes": null,
"commits_week": null, "releases_month": null,
"active_shipping": false, "last_activity_days": null,
"tweets_24h": null, "mentions": null,
"reddit_posts": null, "reddit_score": null,
"hn_stories": null, "hn_points": null,
"youtube_videos": null,
"jobs": null, "dept_count": null,
"sentiment": null, "traction": null
}
}]
}
Completa cada campo con el valor descubierto. Deja null para todo lo no encontrado; el script trata null como 0.
Luego ejecuta:
node scripts/heat-score-calc.mjs --file signals.json
o redirige:
echo '{"companies":[...]}' | node scripts/heat-score-calc.mjs
Qué Devuelve
El script genera JSON con resultados por empresa:
{
"generated_at": "2026-05-29T...",
"company_count": 3,
"companies": [
{
"name": "Vercel",
"heat_score": 89,
"level": "Alta",
"dimensions": {
"authority": { "score": 25, "max": 25, "breakdown": {...} },
"shipping": { "score": 25, "max": 25, "breakdown": {...} },
"social": { "score": 17, "max": 25, "breakdown": {...} },
"growth": { "score": 22, "max": 25, "breakdown": {...} }
},
"alerts": [...]
}
]
}
Cada empresa incluye:
heat_score— total 0-100level— Alta (60+), Media (30-59), Baja (1-29), Inactiva (0)dimensions— puntuación por dimensión con máximo y desglose detalladoalerts— señales notables detectadas automáticamente
Reglas de Puntuación (implementadas en el script)
Estas son las fórmulas que aplica el script. Se documentan aquí para transparencia:
| Dimensión | Señales | Máx |
|---|---|---|
| Autoridad | Estrellas de GitHub (min(15, estrellas/1000*3)), forks (min(5, forks/200*2)), votos PH (min(5, votos/100*5)) | 25 |
| Actividad | Commits/semana (min(10, commits*2)), lanzamientos/mes (5 si >0), indicador activo (5), actualización (5 si <7d, 3 si <30d) | 25 |
| Social | Tweets (5), menciones (5), publicaciones en Reddit (3) + puntuación (2), historias HN (4) + puntos (3), YouTube (3) | 25 |
| Crecimiento | Empleos (min(10, empleos*3)), diversidad de departamentos (min(5, num_departamentos*2)), sentimiento IA (5), tracción IA (5) | 25 |
- Cada dimensión tiene un tope de 25. Las señales faltantes puntúan 0. Nunca estimes datos.
- Metodología completa y casos extremos en
references/heat-score-methodology.md.
Paso 6: Resumen Ejecutivo de IA
Para cada empresa puntuada por encima de 0 (es decir, se detectó alguna señal), genera un resumen ejecutivo de IA usando los datos recopilados.
El resumen debe cubrir:
**Resumen Ejecutivo: [Nombre de Empresa]**
**Contexto:** 1-2 frases sobre lo que hacen y su posición en el mercado
**Puntuación de Calor:** [puntuación]/100 — [Nivel de Actividad]
**Actividad Reciente:**
- Producto: señales clave de producto o lanzamiento encontradas
- Contratación: estado de contratación, departamentos, roles notables
- Comunidad: resumen de sentimiento de Reddit/HN/Twitter
**Evaluación de Amenaza:**
- Nivel de amenaza competitiva: [Bajo / Medio / Alto]
- Justificación: 2-3 frases sobre por qué
**Señal Clave (el hallazgo más importante):**
Una frase sobre lo más importante que está sucediendo con esta empresa.
**Confianza de Datos:**
Qué canales tenían buenos datos vs. cuáles faltaban.
Reglas:
- Cada afirmación en el resumen debe rastrearse hasta los datos recopilados
- La sección "Confianza de Datos" es obligatoria: sé honesto sobre las brechas
- La evaluación de amenaza debe comparar con las otras empresas en el radar, no en el vacío
- Mantén cada resumen por debajo de 250 palabras
Paso 7: Ensamblar y Generar el Informe de Radar
Compila todo en el formato estructurado de informe de radar. Usa references/radar-report-template.md para la estructura de salida exacta.
El informe debe incluir:
- Resumen Ejecutivo — Hallazgos principales con empresas clasificadas
- Tabla de Clasificación de Puntuación de Calor — Tabla clasificada de todas las empresas
- Análisis Detallado por Empresa — Cada empresa con perfil completo, datos de señal, desglose de puntuación y resumen de IA
- Alertas de Señal — Eventos notables detectados (aumentos de contratación, momentos virales, lanzamientos)
- Notas de Calidad de Datos — Qué canales tenían datos, cuáles faltaban
Genera en formato markdown, listo para copiar en Slack, Notion, Google Docs o correo electrónico.
Paso 8: Opcional — Programar Radar Recurrente
Si el usuario desea monitoreo continuo:
- Guarda la lista de empresas y la configuración de API
- Configura un programa cron (GitHub Actions o cron del sistema)
- Cada ejecución produce un informe actualizado
- Configura alertas para cambios de puntuación (por ejemplo, "alertar si alguna empresa sube 20+ puntos")
Este skill es un orquestador: cada ejecución ejecuta el pipeline completo desde cero.