Este documento resume las experiencias de InfoJobs utilizando Neo4j para dos proyectos principales: Plan de Carrera y InfoJobs Social. Plan de Carrera usa Neo4j para proporcionar información estadística sobre carreras a candidatos al almacenar currículums como nodos y relaciones. InfoJobs Social añade una capa social sobre las ofertas de empleo para mostrar contactos y sugerencias de contactos a los candidatos.
3. 3
■ Marc Pou
■ En InfoJobs desde 2.016
■ Product Owner (Candidatos)
■ @marc_pou
■ marc.pou@infojobs.net
■ Rubén Arana
■ En InfoJobs desde 2.013
■ Technical Leader
■ @RbnArana
■ ruben.arana@infojobs.net
¿QUIENES SOMOS?
4. 4
“Hacer fácil a todas las personas encontrar el mejor empleo posible”
■ 700.000 usuarios únicos al día
■ 36.5 millones de visitas al mes
■ 325 millones de páginas vistas al mes
■ + de 150.000 puestos vacantes disponibles
■ + de 1 millón de descargas de la App en 2.015
■ 831.000 contratos conseguidos en 2.015
SOBRE INFOJOBS
6. 6
Plan de Carrera (2.012 / 2.013)
■ Portal de información estadística
■ Ayuda para mejorar la carrera
profesional de los candidatos
■ Múltiples filtros de información
InfoJobs Social (2.014 / 2.015)
■ Red social de InfoJobs
■ Aporta capa relacional sobre las
ofertas de empleo
■ Ofrece posibilidades
complementarias a la búsqueda de
empleo tradicional
PROYECTOS
8. 8
■ ¿Cuál es el siguiente puesto más habitual al puesto <P>?
■ ¿Dónde van los empleados que dejan la empresa <E>?
■ ¿Cuáles son los conocimientos habituales de un candidato que trabaja de <P>?
■ ¿De qué centro de formación salen mejores profesionales?
¿A QUÉ RESPONDE PLAN DE CARRERA?
9. 9
¿DE QUÉ DISPONEMOS?
■ Amplia BBDD de currículums
■ 4 Millones de candidatos
■ 8 Millones de experiencias
■ 8 Millones de estudios
■ 16 Millones de conocimientos
10. 10
¿CÓMO LO SOLUCIONAMOS?
■ Responder a los retos planteados mediante una BBDD relacional es muy
costoso.
■ Modelamos el problema con un grafo
■ Transformamos el CV en Nodos y Relaciones
■ El grafo nos permite tener secuencialidad de las experiencias y estudios
■ Nos permite relacionar fácilmente elementos comunes
13. EJEMPLO
13
■ Misma información, dos prismas.
■ Información para candidatos
■ Información para empresas
■ La clave está en recorrer el grafo por
un camino o por otro pero con el
mismo modelo.
14. 14
■ Actualización mensual de datos (No Real Time)
■ Procesos de limpieza y normalización en ficheros CSV
■ Carga grafo off-line (mayor rapidez) mediante la API de
Neo4j
■ Uso intensivo de memoria para mantener nodos padres
y poder establecer relaciones
■ Ser estrictos en propiedades e información que se
carga en los nodos (menos es más). Evitar textos
■ 6Gb – 8Gb de tamaño del grafo
■ Warm Up (recorrer todo el grafo para cargar todos los
datos en memoria)
■ Queries:
■ Cypher: fácil de experimentar, leer, mantener.
■ API: óptimo para queries consolidadas, costosas,
críticas en rendimiento.
■ Grafo de solo lectura (no realizamos operaciones de
escritura)
■ Múltiples opciones de consulta y filtros. El grafo facilita
el modelo de cálculo. No es Use Case habitual.
■ Consultas costosas cuando se filtra por properties.
■ Múltiples capas de persistencia para agilizar
rendimiento. WarmUp de consultas habituales.
RESULTADOS / APRENDIZAJES
16. 16
■ ¿Qué hacen los candidatos cuando ya han repasado todas las ofertas de
empleo del portal?
■ Activan su red de contactos (on-line / off-line) para encontrar
oportunidades, referencias, recomendaciones, etc…
■ Podemos añadir una capa social por encima de InfoJobs que ayude a los
candidatos a encontrar contactos en las ofertas que les interesen
¿A QUÉ RESPONDE INFOJOBS SOCIAL?
17. 17
■ Mostrar contactos de 1er o 2º nivel
en ofertas de empleo
■ Mostrar sugerencias de contactos
con alta probabilidad de conocerse
■ Gestión de mi red de contactos
■ Invitaciones recibidas
■ Mis contactos
■ Generar confianza en la red
■ Contactos en común entre dos
candidatos
■ Elementos en común entre dos
candidatos
■ Buscador de contactos
EJEMPLOS DE SERVICIOSA OFRECER
19. 19
■ Sistema vivo
■ Tiempo real
■ Lectura / Escritura
■ Alta disponibilidad
■ Mecanismo de recuperación rápida
■ Gran volumen de datos
■ Tiempo de respuesta estable con
independencia del volumen de datos
■ Pesos en relaciones
■ “Independencia” del Site de Empleo
REQUISITOS
20. MODELO
20
Sugerencias de contactos
■ Personas que han trabajado en la
misma empresa en un mismo periodo
de tiempo
■ Personas que han realizado un mismo
estudio en un mismo centro de
formación en un mismo periodo de
tiempo.
■ Ponderar sugerencias en función de
tiempo de coincidencia y antigüedad de
la coincidencia.
24. ARQUITECTURA
24
■ Cluster Neo4j
■ Master (W) / Slave (R)
■ Cambios en IJ se aplican a
Grafo mediante sistema de
colas
■ API Rest
■ Operaciones Neo4j mediante
plugins
■ Importer externo. Carga de
BD
25. 25
■ Carga directa de BBDD
■ Multithreading para reducir tiempos
de carga y tiempos de espera
■ Grafo de dependencias en el
proceso de carga
■ Proceso de limpieza incorporado
■ Tiempo de carga “reducido”
■ 60Gb tamaño
■ 14M candidatos
■ 2.5M contactos
■ 2.2M invitaciones
■ 4M contactos rechazados
■ 32M sugerencias por email
■ 18M estudios
■ 40M experiencias
■ 75M emails del móvil
■ 180M telfs del móvil
IMPORTER
26. 26
ALGORITMO DE
RECOMENDACIONES
■ Operaciones muy sencillas y
rápidas.
■ Obtener recomendaciones
■ Obtener rewards
■ Eliminar nodos
■ Aplicar reglas de negocio
■ Aplicar pesos a nodos y
resultados
27. 27
SEARCH ENGINE
■ Usamos el índice de Neo4j
para buscar contactos por
texto.
■ Funciona bastante rápido.
28. 28
■ Super nodos
■ Teléfonos => Limpiar y limitar teléfonos muy comunes
■ Empresas => Mercadona, Carrefour, … => Nos falta información de localización => Sugerencias en
super nodos son poco relevantes
■ Rotación de candidatos
■ No acción en sugerencias => No interés => Rotar
■ Sugerencias de emails
■ Evitar repeticiones de sugerencias
■ Gestión del cambio del modelo de InfoJobs => Entorno cerrado a entorno abierto
PROBLEMAS ENCONTRADOS