01 · Portfolio

Un copiloto de IA que sustituyó el sourcing booleano

El recruiter describe a quién busca en su idioma y recibe una lista corta con la evidencia detrás de cada nombre.

Rol
Head of Product. Discovery, especificación, UX y decisión de alcance.
Contexto
SelfRecruit · 2026
Stack
LLM con salida estructurada · Búsqueda agéntica · Scoring contra criterios explícitos · Postgres
Una búsqueda resuelta · la tabla con una columna por criterio y una fila abierta con su evidencia
Una búsqueda resuelta · la tabla con una columna por criterio y una fila abierta con su evidencia
Antes

Sourcing con cadenas booleanas. El recruiter traducía el perfil a operadores de búsqueda y una lista decente costaba semanas.

Después

Se describe el perfil en lenguaje natural. La plataforma deriva los criterios, lee los perfiles, puntúa de 0 a 100 contra ellos y enseña la evidencia de cada posición.

El problema

SelfRecruit es el motor de búsqueda de Self AI: la parte que encuentra a la persona antes de que el producto pueda decir nada sobre ella.

El sourcing booleano le pide al recruiter una habilidad que no es la suya. Y cuando la lista sale mal no hay forma de saber si falló la consulta o el mercado.

El objetivo

Que describa el perfil como se lo contaría a un compañero y reciba una lista que pueda defender delante de su hiring manager.

La métrica
Activación: que un registro llegue a hacer su primera búsqueda

Registros y búsquedas suben con presupuesto de anuncios: premian gastar más, no construir mejor. La activación no se mueve con dinero. Era el KR del trimestre, con meta en el 85 %.

Discovery

A quién tenía delante antes de diseñar nada.

Usuario tipo

Marta

Recruiter en una agencia de selección técnica

Lleva entre seis y diez vacantes a la vez, para clientes distintos. Trabaja con un buscador de perfiles y una hoja de cálculo, y aprendió los operadores booleanos mirando a un compañero.

Qué necesita

Entregar una lista corta que su hiring manager acepte a la primera, y poder decir en una frase por qué está cada nombre.

Qué se lo impide

Traducir un perfil a una cadena de operadores es una habilidad que no es la suya. Cuando la lista sale mal no sabe si falló su consulta o si el mercado no tiene ese perfil, así que repite a ciegas y gasta el cupo del mes.

«Si me preguntan por qué este candidato y contesto que salió en la búsqueda, ya perdí la reunión.»

Historia de usuario

Como recruiter quiero que un dato de contacto que no existe no me cueste crédito, para poder probar la búsqueda avanzada sin gastar el cupo del mes en perfiles vacíos.

Cómo lo investigué

Antes de fijar las metas del trimestre reproduje a mano, contra la base de producción, cada cifra del documento de OKRs. No para auditar a nadie: para saber si el panel que iba a medirnos durante tres meses medía algo.

Muestra 186 cuentas · 404 búsquedas · 3 cohortes mensuales
  1. 01Diecisiete cuentas tenían plan de pago concedido a mano, sin suscripción detrás. Cualquier consulta que contara "plan distinto de gratis" habría reportado veinte clientes de pago, que era exactamente la meta del trimestre, habiendo cuatro. El panel iba a decirnos que el objetivo estaba cumplido.
  2. 02El baseline de activación del documento no reproducía con ninguna definición que probé. El numerador era correcto pero de otro mes, y el denominador no salía de ningún sitio. El valor real estaba entre el 38 % y el 47 %, no en el 33 % escrito.
  3. 03La herramienta del panel conectaba como un rol normal de Postgres, así que las políticas por usuario le aplicaban y las consultas devolvían cero filas sin lanzar error. Un panel de objetivos con métricas en cero que parecen medición es el peor modo de fallo que puede tener: no avisa, confirma.
Resultado medido
73 %
activación

71 de los 97 registros de julio. La meta del trimestre estaba en el 85 %.

49 → 73 %
en un mes

La cohorte de junio activó al 49,4 %. Entre las dos se arregló cómo se cobraban los créditos.

44 %
de los que buscan, guardan

31 de los 71 que hicieron una búsqueda guardaron alguien en el shortlist.

90 s
por búsqueda

Recupera perfiles, los lee y los evalúa contra los criterios, contando en qué etapa va.

Cómo funciona

Del lenguaje natural a una lista que se puede defender.

La salida no es una lista: es una lista con el motivo de cada nombre. Un recruiter no adopta lo que no puede explicarle a su hiring manager.

  1. describe
  2. traduce
  3. puntúa
  4. justifica
  5. contacta
  1. 01

    describe

    El recruiter escribe el perfil como se lo contaría a un compañero, sin operadores ni sintaxis.

    La decisión

    La caja arranca con un ejemplo real rotando dentro en vez de con un texto de ayuda. Un campo que acepta cualquier cosa es un campo que nadie sabe cómo llenar, y la primera búsqueda es justo la que decide si vuelve.

    La caja vacía, con un ejemplo de prompt real rotando encima
  2. 02

    traduce

    La descripción se convierte en criterios con su peso, a la vista y editables. Cambiar uno reordena la lista al instante y gratis.

    La decisión

    Enseñar los criterios antes de ejecutar la búsqueda parecía un paso de más y es lo que hizo que la gente volviera: cuando la lista sale mal, el recruiter ve dónde. Reordenar un peso no cuesta crédito, porque iterar es usar el producto y no consumirlo dos veces.

    Los criterios que salieron del prompt, ordenables a mano y renombrables
  3. 03

    puntúa

    Cada candidato se evalúa contra esos criterios, no contra un parecido difuso: un Match de 0 a 100 y una columna por criterio.

  4. 04

    justifica

    tu decisión

    Cada fila se abre en la evidencia que sostiene cada criterio. La diferencia entre un 85 y un 85 porque lideró ese mismo tipo de sistema en una empresa comparable.

    La decisión

    La evidencia por criterio es lo que convierte una lista en algo defendible delante de un hiring manager. El dato de contacto queda bajo llave aquí a propósito: se cobra solo el que aparece, y el que no se encuentra no se cobra.

    La ficha del candidato: el Match, la trayectoria completa y los datos de contacto bajo llave
  5. 05

    contacta

    El candidato guardado pasa al shortlist, que resuelve email y teléfono y lanza la secuencia. Una lista solo vale si se le puede escribir.

    La decisión

    El shortlist existe porque una lista que no se puede contactar no es un entregable. La invitación sale sin nota y el pitch va en el mensaje siguiente, que es lo que deja sitio para mandar más primeros toques.

    La secuencia del proyecto: la invitación sale sin nota y el pitch va en el mensaje siguiente
Lo que no construí
  • Una bolsa mensual y un crédito por dato de contactoLo que había

    Descartado. Un teléfono nos costaba diez veces lo que un email de trabajo y los dos valían un crédito, así que el usuario pagaba lo mismo por cosas muy distintas y nosotros perdíamos en una de las dos.

  • Cobrar el reintento y la ampliación de criteriosCero de construir, y era lo que estaba pasando

    Descartado, y es el que movió la aguja. Con un plan gratuito de dos búsquedas, un reintento se comía la mitad de la prueba y una búsqueda duplicada se la comía entera. Gente que se iba antes de ver un resultado, contada como falta de interés.

  • Nombrar al proveedor de datos en la aplicaciónGratis, y más fácil de explicar

    Descartado. No aparece en copys, ni en nombres de tablas, columnas o rutas: solo en el código de servidor que lo llama y en los secrets. Un proveedor que se puede cambiar sin renombrar media aplicación es un proveedor del que no dependes.

  • Precio por tipo de dato, cobrado solo si apareceelegidoEspejo exacto de lo que nos cuesta

    Elegido. Un email de trabajo cuesta un crédito, uno personal tres y un teléfono diez, y el que no se encuentra no se cobra. El usuario puede probar la búsqueda avanzada sin miedo, que es la única forma de que la use.

Cómo se lo pedí a desarrollo

La regla que hizo usable la parte de pago del producto. Es corta, y la mitad del trabajo estaba en el orden de las dos primeras líneas.

Criterios de aceptación
  • El crédito se reserva al pedir el dato y no al recibirlo. Diez peticiones en paralelo no pueden pasarse del cupo del plan.
  • Si la búsqueda vuelve vacía el crédito se devuelve, y el perfil queda marcado como no encontrado para que nadie reintente lo mismo.
  • Solo se cobra el dato que aparece, y cada tipo tiene su precio: uno el email de trabajo, tres el personal, diez el teléfono.
  • El precio vive en una tabla, no en una constante del código. Cambiarlo no es un despliegue.

El orden de los dos primeros criterios es lo que importa. Reservar antes y devolver después parece la vuelta larga, y es lo único que impide que diez peticiones simultáneas se pasen del cupo. Pasarse significa deberle dinero al proveedor por datos que ya regalamos.

Cómo lo lancé

No fue un lanzamiento por mercados, fue una secuencia de arreglos entre dos cohortes: junio activó al 49 % y julio, medida tras estos seis cambios, al 73 %. Correlación medida, no causalidad probada.

  1. 013 de junio

    dos búsquedas gratis en vez de una

    Con una sola, equivocarse en el prompt costaba la prueba entera.

    Qué medíaActivación de la cohorte
  2. 0223 de junio

    los créditos se dan al registrarse

    Un alta que no provisionaba créditos no podía buscar: activación cero por un fallo de alta, contada como falta de interés.

    Qué medíaRegistros que pueden buscar
  3. 0324 de junio

    la primera búsqueda deja de perder su historial

    La búsqueda salía bien y desaparecía del historial. La primera es justo la que hay que poder volver a mirar.

    Qué medíaActivación de la cohorte
  4. 0430 de junio

    la búsqueda duplicada deja de cobrar doble

    Un doble clic gastaba los dos créditos del plan gratuito de una vez.

    Qué medíaCréditos gastados sin resultado
  5. 053 de julio

    el reintento y la ampliación no cobran

    Reintentar lo que falló y ampliar criterios pasan a ser gratis: iterar es usar el producto, no consumirlo dos veces.

    Qué medíaBúsquedas por usuario activado
  6. 0628 de julio

    editar el prompt desde los resultados, con versionario

    El prompt se edita desde la lista y las versiones quedan comparables entre sí.

    Qué medíaReintentos sobre la misma vacante
Lo que me llevé

La tentación era enseñar la lista y esconder el mecanismo. Enseñar los criterios antes de ejecutar la búsqueda parecía un paso de más, y fue lo que hizo que la gente volviera: cuando la lista salía mal, el recruiter veía dónde.

Siguiente casoUn modelo psicométrico que se puede leer sin ser psicólogo02 · Self AI · 2026Abrir caso
Gabriel SerranoProducto de IA · SaaS B2B · fintech y HRTech
BlogLinkedIn ↗© 2026 Gabriel Serrano