
Caso de éxito
Hiring Signal Pipeline
Creamos un motor diario de contactos para agencias de selección. Cada mañana revisa los portales de empleo públicos en busca de empresas que acaban de empezar a contratar para los puestos que cubre la agencia, encuentra a una persona con nombre a quien escribir, investiga un motivo comprobable para escribir ahora y redacta una primera frase a partir de ese dato. Funciona solo con fuentes públicas y gratuitas, sin proveedores de datos de pago ni costes por contacto. Cada nombre se guarda con la página de la que sale y se comprueba contra ella, cada correo indica si fue publicado o deducido, y nada se envía nunca. Una persona lee el resumen y decide a quién escribir.
- ofertas revisadas en un solo barrido
- 5,310
- empresas con una persona identificada
- 14/18
- nombres sin confirmar que se descartaron
- 3
- proveedores de datos o listas de pago
- 0
El reto
Una agencia de selección gana clientes cuando llega a una empresa en las semanas después de que empieza a contratar, antes de que un equipo interno u otra agencia cubra los puestos. Las herramientas habituales son bases de datos de contactos y servicios de enriquecimiento de pago, que cobran cada mes y prometen un correo "verificado" que no siempre pueden dar. El correo en frío que envían casi todas las agencias también está gastado: la misma plantilla, una cifra garantizada y un motivo para escribir que el lector nota que nadie comprobó. El objetivo era un sistema que encuentre contrataciones reales y recientes, ponga una persona real y un motivo cierto detrás de cada fila, y no cueste nada por contacto.
Nuestro enfoque
Cuatro reglas guiaron cada etapa. Solo fuentes gratuitas, para que la agencia sea dueña de todo el sistema y no pague a nadie por contacto. Mejor vacío que inventado, así que un dato o un nombre que falta deja el campo en blanco en vez de rellenarlo con algo creíble. Cada afirmación lleva su fuente, para que quien recluta pueda comprobar cualquier fila con un clic antes de escribir a nadie. Y el sistema redacta pero nunca envía, porque la cuenta y la reputación en juego son de la agencia. El filtro es un documento en lenguaje sencillo que la agencia puede leer, con los puestos, regiones y tamaños de empresa que cuentan como señal. También es el archivo que ejecuta el sistema, así que editarlo cambia la lista de la mañana siguiente, y cada fila, aceptada o rechazada, explica por qué.
Detectar contrataciones nuevas
El sistema lee las API públicas de empleo de Greenhouse, Lever, Ashby y SmartRecruiters. Esos portales se consultan empresa por empresa, así que por sí solos no pueden decir quién acaba de empezar a contratar. El hilo mensual "Who is hiring?" de Hacker News cubre ese hueco: nombra empresas nuevas y enlaza sus portales, y los lectores las incorporan en la misma ejecución, así que la cobertura crece cada mes. Las ofertas se agrupan por empresa y se cruzan con la lista de clientes de la agencia, para que una empresa con la que ya trabaja quede marcada en vez de recibir dos propuestas. Una oferta sin fecha de publicación conserva la fecha vacía en lugar de la de hoy, y un portal que falla aparece en el resumen de la mañana en vez de reducir la lista sin avisar.
Una persona a quien escribir
Los portales de empleo nunca indican quién contrata, así que la primera versión encontraba la empresa y el puesto, pero no a quién escribir. La solución usa Claude con búsqueda web para encontrar a una persona por empresa, como quien la fundó, quien dirige el talento o quien dirige el equipo que contrata, a partir de la web de la empresa, la prensa o GitHub. La respuesta del modelo no se acepta sin más. Cada página que cita se descarga, y el nombre tiene que aparecer en ella o se descarta. LinkedIn nunca se usa como fuente. Para el correo, va primero el que la propia persona publicó. Después va el formato de la empresa, aprendido de otras direcciones que ha publicado, para que una empresa que usa jdoe@ no reciba jane.doe@. Una suposición genérica va al final, y solo en un dominio que coincide con el nombre de la empresa. Las suposiciones se marcan como tales.
Un motivo para escribir ahora
Para cada empresa, la etapa de investigación pide un dato concreto de los últimos seis meses que un tercero pueda comprobar: una ronda de financiación con su importe y su mes, un lanzamiento con nombre, una adquisición, una oficina nueva. Las instrucciones dicen que una respuesta vacía es la correcta cuando no se sabe nada concreto, y cada respuesta pasa luego un filtro en el código. No lo pasan las evasivas como "parece que" o "según se dice", ni las frases hechas como "equipo en crecimiento" o "mercado competitivo", ni ninguna frase sin un número, una fecha, un enlace o un nombre propio que el lector pueda buscar. La primera frase del correo se redacta solo a partir de ese dato. Si no hay dato, no hay frase, en vez de una plantilla con el nombre de la empresa insertado.
El resultado
El primer barrido completo revisó 5.310 ofertas y dio 35 señales, todas con fechas de publicación reales, pero ninguna nombraba a una persona ni tenía un correo. Con la búsqueda de personas en marcha, una ejecución del 16 de octubre de 2026 revisó 692 ofertas y produjo 31 señales en 18 empresas. 14 de las 18 tienen ahora una persona identificada, cada una enlazada a la página que la nombra, y 3 nombres que propuso el modelo se descartaron porque su página no los confirmaba. 8 empresas tenían un motivo comprobable para escribir, y las demás quedaron en blanco a propósito. Los límites también figuran en el resultado. Un correo deducido no es un buzón verificado, porque comprobarlo exige un servicio de pago, así que las filas con correos deducidos conviene enviarlas de pocas en pocas cada día. En las empresas grandes, la persona nombrada suele ser un directivo citado en la prensa, que puede estar desactualizado, y el enlace a la fuente está ahí para comprobarlo.
Tecnología y despliegue
El sistema es una herramienta de línea de comandos en Node.js con SQLite para los datos. Funciona en ocho etapas: lectura, deduplicación, filtro, enriquecimiento, investigación, redacción, exportación y resumen. Una etapa que falla queda registrada y se omite, así que una búsqueda rota aún deja a la agencia una lista y un resumen que explica qué falló. La investigación y la redacción usan la herramienta local de línea de comandos de Claude, y el sistema funciona sin ella, solo que con esos campos vacíos. Cada petición tiene un límite de tiempo estricto, y cada portal recibe una petición a la vez, con pausas entre ellas, para que las fuentes gratuitas sigan abiertas. Cada mañana genera un CSV, una copia en JSON y un resumen breve, y repetir un día reescribe los mismos archivos sin duplicar filas. La palabra "verificado" ni siquiera se puede guardar: la base de datos la rechaza, y una prueba comprueba que lo haga. El conjunto tiene 50 pruebas y ninguna usa la red.