THE FUTURE IS NOW
3
■ Marc Pou
■ En InfoJobs desde 2.016
■ Product Owner (Candidatos)
■ @marc_pou
■ Rubén Arana
■ En InfoJobs desde 2.013
■ Technical Leader
■ @RbnArana
¿QUIENES SOMOS?
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
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
■ ¿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
¿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
¿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
12
ESQUEMA SOLUCIÓN
In OutN
Dicc
ExplotaciónExportación
datos
Limpieza y
Normalización
Carga grafo
De base de datos
relacional a ficheros CSV
Warm up
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
■ 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
■ ¿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
■ 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 SERVICIOS A OFRECER
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
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.
EVOLUCIÓN MODELO
21
Excluir candidatos que…
■ …hemos enviado invitaciones
■ …hemos hemos rechazado
■ ....con los que ya estamos
conectados
EVOLUCIÓN MODELO
22
Incluir nodos de otras redes
■ Incluimos contactos de Facebook
■ Sugerimos amigos de amigos de
EVOLUCIÓN MODELO
23
Incluir contactos del teléfono
Incrementar red social en base a red
social real existente
■ Emails
■ Teléfonos
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
■ 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
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
SEARCH ENGINE
■ Usamos el índice de Neo4j
para buscar contactos por
texto.
■ Funciona bastante rápido.
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
29
ALGUNOS RESULTADOS
0
20000
40000
60000
80000
100000
120000
20
14
/20
20
14
/24
20
14
/28
20
14
/32
20
14
/36
20
14
/40
20
14
/45
20
14
/49
20
15
/01
20
15
/05
20
15
/09
20
15
/13
20
15
/17
20
15
/21
20
15
/25
20
15
/29
20
15
/33
20
15
/37
20
15
/41
Invitations vs Suggestionsweek by week
Ignore
Connect
0.00%
5.00%
10.00%
15.00%
20.00%
25.00%
30.00%
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
20
1…
% Application rate
Without Contacts
With Contacts
0.0%
5.0%
10.0%
15.0%
20.0%
25.0%
30.0%
W+1 W+2 W+3 W+4
% of Updated CVsweek by week after registration
Candidates (Week 38)
Social Candidates (Week38)
■ 2,6M de conexiones
■ 7% de las recuperaciones de candidatos
■ +12% de opciones de actualizar el CV