logo

RAG avanzado para la selección de equipos en grandes organizaciones

Encuentra al equipo perfecto entre más de 1000 profesionales en minutos con IA

2 de diciembre de 2024

Aunque es fácil encontrar tutoriales sobre Retrieval Augmented Generation (RAG) que muestran sistemas simples de preguntas y respuestas sobre documentos (yo mismo he publicado algunos), las necesidades reales de las empresas exigen muchas veces soluciones más sofisticadas. ¿Cómo podemos ir más allás de la simple búsqueda en documentos y construir un sistema inteligente que realmente ayude a tomar decisiones y aporte valor al negocio?

Esto es exactamente lo que voy a explorar en este artículo, explicando una solución avanzada basada en RAG que diseñé recientemente para una consultora tecnológica. El objetivo es transformar su proceso de selección de equipos para proyectos de consultoría mediante un sistema de búsqueda y selección inteligente y de generación automática de presentaciones para el cliente.

Este proyecto es un caso práctico que muestra cómo definir, estructurar y construir un sistema RAG para resolver un problema empresarial real, uno que supone una enorme pérdida de tiempo y dinero debido a procesos manuales ineficientes.

#El reto a resolver

¿Cómo seleccionar eficientemente los mejores equipos para proyectos de clientes cada vez más complejos con una plantilla de profesionales extensa y dinámica? Lo que funciona con 20 empleados se vuelve insostenible con 200, y una pesadilla con más de 1000.

Imagina este escenario: eres director en una consultora en crecimiento. Un banco importante necesita un nuevo equipo para su iniciativa de transformación digital. Los requisitos son específicos: un líder técnico con experiencia en arquitectura de sistemas, un ingeniero frontend, un ingeniero backend y un especialista en ciencia de datos, todos con experiencia previa en el sector financiero.

En algún lugar de tu plantilla de más de mil ingenieros y colaboradores externos están los candidatos perfectos. Pero encontrarlos no es tarea fácil. Los responsables dedican horas muy valiosas revisando CVs e intentando recordar proyectos similares y quién tiene qué habilidades. Es un proceso que no solo es muy lento, sino que está mal planteado.

Y además genera una serie de riesgos para el negocio:

El desafío no es solo encontrar perfiles que encajen con los requisitos. Se trata de transformar un proceso complejo de búsqueda y decisión humana en un sistema automatizado y escalable que optimice la selección de equipos y reduzca drásticamente el tiempo necesario para ello. Veamos cómo lograrlo.

#Reimaginando la selección de equipos con IA

¿Y si el proceso de formación de equipos pudiera ser tan sencillo como una conversación con un experto con acceso instantáneo a cada detalle de tu plantilla de profesionales? Eso es exactamente lo que la inteligencia artificial, y en concreto la técnica de Retrieval-Augmented Generation (RAG), hace posible.

Nuestra solución transforma la selección de equipos de una búsqueda manual a un sistema de matching inteligente con dos grandes bloques:

  1. Un bloque de selección y ranking que combina búsqueda con IA generativa para encontrar los perfiles más adecuados según los requisitos de cada proyecto.
  2. Un generador automático de presentaciones que transforma la selección final en diapositivas listas para el cliente y adaptadas al proyecto específico.

La velocidad no es lo único que hace que esta solución sea tan valiosa, también es la precisión y la fiabilidad. Cada recomendación viene acompañada de una justificación clara y respaldada por datos actualizados. No más decisiones basadas en información obsoleta o realizadas intuitivamente. Cada selección está justificada y cada decisión es transparente.

Estas son algunas de las decisiones técnicas clave adoptadas para implementar esta solución y cumplir con los requisitos del cliente:

#Cómo funciona la solución

Tras la visión general de la solución, profundicemos ahora para entender el funcionamiento interno de cada uno de los componentes.

#Procesamiento y gestión de datos

Hay dos grandes retos a resolver aquí:

  1. Crear una representación optimizada de la información (los más de 1000 CV y perfiles profesionales) para el proceso de búsqueda y selección.
  2. Asegurarse de que esta representación permanezca actualizada a medida que cambian los documentos.

En aplicaciones de RAG, generalmente, cuanto más complejo sea el sistema y las consultas que debe realizar, más avanzado será el procesamiento de datos necesario. En lugar de simplemente dividir los documentos en fragmentos y vectorizarlos con embeddings, como en aplicaciones de RAG sencillas, nuestro sistema requiere un enfoque más sofisticado:

Procesamiento de los CVs para el sistema de búsqueda y selección

{
"professional_level": {
"role": "Software Engineer",
"level": "senior",
"years_experience": 7,
"leadership": {
"has_managed_teams": true,
"team_size": 5,
"years_leading": 2
}
},
"skills": {
"frontend": {
"react": {
"level": "expert",
"years_experience": 8,
},
"angular": {
"level": "intermediate",
"years_experience": 3
}
},
"backend": {
"nodejs": {
"level": "advanced",
"years_experience": 6
}
}
},
"industries": {
"fintech": {
"years_experince": 3,
"num_projects": 4,
"roles": ["Frontend Software Engineer", "Frontend Lead"]
}
},
"languages": {
"English": "Native",
"Spanish": "C1"
}
}

El segundo reto es mantener los datos actualizados. Para ello, implementamos un sistema de sincronización en tiempo real con SharePoint mediante webhooks. Al recibir notificaciones de cambios en los documentos, repetimos el procesamiento anterior para los CV nuevos o actualizados y nos aseguramos de eliminar de la base de datos e índices de búsqueda la información obsoleta.

También conviene mencionar que, para escenarios de alta frecuencia de actualizaciones, un procesamiento por lotes periódico (batch processing) puede resultar más práctico.

#Sistema de selección y ranking

El sistema de selección va más allá de una simple búsqueda semántica. Se trata de un proceso inteligente que consta de varias fases:

Selection and ranking engine

  1. Procesamiento de consultas: Cuando el usuario proporciona los requisitos del proyecto y los roles en lenguaje natural, el primer paso es procesar la consulta de forma análoga al procesamiento de documentos descrito anteriormente. El objetivo principal aquí es reducir la distancia entre la consulta del usuario y la información de los perfiles profesionales. Esto implica:
    • Extraer requisitos según las variables de interés.
    • Generar vectores (embeddings) específicos para cada variable.
    • Crear un perfil de candidato ideal usando el mismo formato estructurado (esquema JSON) explicado anteriormente.
  2. Búsqueda híbrida en múltiples índices: Realizar búsquedas paralelas en los diferentes índices de búsqueda correspondientes a las variables de interés. Las búsquedas serán híbridas, combinando búsqueda de texto (full-text search) y búsqueda vectorial.
  3. Ranking: Combinar los resultados de las diferentes búsquedas y devolver un ranking final de resultados (por perfil deseado), utilizando un algoritmo de ranking como Reciprocal Rank Fusion (RRF). Una idea interesante es implementar un ranking ponderado, donde diferentes variables tienen diferentes pesos según su importancia para la selección de candidatos.
  4. Filtrado y búsqueda estructurada: Las búsquedas vectoriales y de texto completo anteriores se pueden combinar con una búsqueda y filtrado más precisos usando la representación estructurada (esquema JSON). Esto nos permite definir requisitos necesarios (por ejemplo, "mínimo 3 años de experiencia en React", "nivel senior o superior") y también requisitos deseables mediante un sistema de puntuación que valora positivamente ciertas características (por ejemplo, "preferiblemente experiencia en fintech", "idealmente con experiencia en liderazgo de equipos").
  5. Re-ranking con LLM: En la fase final, empleamos el modelo de lenguaje para realizar un re-ranking inteligente de los candidatos identificados en las fases anteriores. El LLM analiza la información disponible tanto de los candidatos como de los requisitos del proyecto para generar un ranking definitivo con los mejores candidatos para cada perfil.
  6. Selección final interactiva: El sistema presenta múltiples candidatos por perfil al usuario, incluyendo enlaces a los CVs completos y justificaciones generadas por IA que explican cada selección. Esto permite un proceso de selección iterativo donde los usuarios pueden revisar recomendaciones, proporcionar feedback y ajustar preferencias hasta conseguir el equipo óptimo.

#Generación automática de la presentación

Una vez que el usuario ha confirmado la selección final del equipo, el sistema automatiza la creación de una presentación lista para el cliente. Este proceso consta de dos pasos:

  1. El LLM analiza los perfiles seleccionados y luego sintetiza y personaliza la información más relevante para el proyecto, destacando las habilidades, experiencias y logros más importantes de cada perfil.
  2. A continuación, el sistema genera automáticamente las diapositivas de la presentación para el cliente, usando el contenido generado y una plantilla corporativa de PowerPoint.

#Interfaz de usuario

El sistema es accesible a través de una sencilla interfaz de chat en Microsoft Teams, perfectamente integrada en los flujos de trabajo existentes de la empresa. Para implementarla es necesario utilizar el SDK de Microsoft Bot Framework y el Servicio de Bot de Azure AI, con la autenticación gestionada por Microsoft Identity Platform.

La interacción con el sistema es intuitiva y clara, estructurada en tres simples pasos:

  1. Describir los requisitos del proyecto y los perfiles deseados en lenguaje natural.
  2. Revisar y ajustar la selección de candidatos de forma interactiva.
  3. Obtener las diapositivas de presentación del equipo generadas automáticamente.

Es importante destacar la sencillez de esta interfaz: toda la complejidad del sistema RAG permanece invisible para los usuarios finales, que solo necesitan mantener una conversación natural sobre los proyectos y requisitos de personal.

#Impacto en el negocio y ROI

El paso de un proceso manual a un sistema de selección de equipos con IA produce mejoras inmediatas y fácilmente cuantificables. El tiempo recuperado gracias a la automatización se traduce directamente en ahorro de costes. Lo que antes requería horas de búsqueda de CVs y de preparación de diapositivas para clientes, ahora se resuelve en cuestión de minutos. Los directores y responsables de proyecto pueden centrarse en tareas de alto impacto.

Pero el verdadero valor va más allá del ahorro de tiempo. La evaluación basada en IA contempla numerosos factores que el ojo humano podría pasar por alto, sobre todo cuando se trata de cientos de perfiles. Esto significa mejores perfiles y equipos realmente alineados con las necesidades del proyecto. Además el sistema garantiza decisiones sólidamente justificadas.

También hace que el conocimiento sea más accesible. La selección de equipos ya no depende de la memoria colectiva de unos pocos responsables. Todas las experiencias en proyectos, competencias y casos de éxito pasan a ser fácilmente localizables y aprovechables.

Y gracias a la sincronización en tiempo real con SharePoint, las decisiones siempre se basan en información actualizada.

Pero quizá lo más importante es que esto es solo el principio. Al recopilar feedback humano sobre las selecciones de equipo, monitorizar métricas de rendimiento y analizar los resultados reales, podemos implementar un ciclo de mejora continua del proceso de selección. Esto garantiza que el sistema se vuelva cada vez más efectivo, adaptándose a los patrones y preferencias de la organización. No es solo una herramienta de selección de profesionales: es el primer paso hacia la gestión inteligente del talento humano.

Si tienes cualquier pregunta, comentario o estás intentando automatizar procesos similares en tu empresa, puedes escribirme a guillermo@codeawake.com.