Apunte 19 — El embudo de reclutamiento: yield ratios, TTF, CPH y QoH

Analítica de Personas · Semestre otoño 2026 · Semana 8 · Prof. René Gempp

1. La metáfora del embudo y por qué es útil

Cuando publicas una vacante, recibes muchos CV y, al final, contratas a una sola persona. Entre lo uno y lo otro hay una serie de filtros que, mirados juntos, tienen forma de embudo: ancho arriba, angosto abajo. La metáfora se popularizó en marketing (el «funnel» de conversión) y migró al reclutamiento porque captura algo cierto: en cada etapa perdemos candidatos, y los lugares donde más perdemos son los que más conviene examinar.

El estándar SHRM/ANSI 2012 Cost-per-Hire Standard reconoce las siguientes etapas básicas, aunque cada empresa adapta el detalle a su proceso:

  1. Postulaciones recibidas (top del embudo).
  2. Pasaron filtro de CV (screening por reclutador o ATS).
  3. Pasaron evaluación técnica (test de aptitud, prueba práctica, ejercicio de código).
  4. Pasaron entrevista estructurada (con jefatura o panel).
  5. Recibieron oferta formal.
  6. Aceptaron la oferta (= contrataciones).

El dataset innovaco_postulaciones.csv tiene una columna por etapa, así que vamos a poder calcular tasas de paso de manera directa.

2. Yield ratio: la métrica más simple y más usada

El yield ratio de una etapa es la proporción de candidatos que pasaron a la etapa siguiente. Existen dos versiones:

Yield ratio etapa-a-etapa: candidatos que pasan a la etapa k+1 ÷ candidatos que estaban en la etapa k

Yield ratio acumulado: candidatos en la etapa k ÷ postulaciones totales

El yield ratio acumulado del último paso es lo que en marketing se llama tasa de conversión global: candidatos que terminan contratados sobre el total de postulaciones.

library(tidyverse)
postulaciones <- read_csv("innovaco_postulaciones.csv")

postulaciones |>
  summarise(
    n_postulaciones    = n(),
    n_paso_cv          = sum(paso_filtro_cv == 1, na.rm = TRUE),
    n_paso_entrevista  = sum(score_entrevista >= 3.0, na.rm = TRUE),
    n_recibio_oferta   = sum(recibio_oferta == 1, na.rm = TRUE),
    n_acepto_oferta    = sum(acepto_oferta == 1, na.rm = TRUE)
  ) |>
  mutate(
    yield_global = n_acepto_oferta / n_postulaciones
  )
  n_postulaciones n_paso_cv n_paso_entrevista n_recibio_oferta n_acepto_oferta yield_global
1           3000      1150              905              108              99       0.033

El yield global de InnovaCo es del 3,3%: por cada 100 postulaciones, terminamos contratando a poco más de 3 personas. Es una cifra coherente con benchmarks SHRM (2-5% en cargos profesionales), aunque está lejos del 15% que reporta una agencia headhunter típica para sus procesos guiados.

2.1 Yield ratio por fuente: dónde está la diferencia

Calcular el yield global no nos dice dónde poner el dinero. Lo que sí lo dice es desagregar por fuente:

postulaciones |>
  group_by(fuente) |>
  summarise(
    n_postulaciones = n(),
    n_contratados   = sum(acepto_oferta == 1, na.rm = TRUE),
    yield_ratio     = n_contratados / n_postulaciones
  ) |>
  arrange(desc(yield_ratio))
  fuente         n_postulaciones n_contratados yield_ratio
1 Headhunter                 158            22       0.139
2 Referido                   238            16       0.067
3 Universidades              196             8       0.041
4 LinkedIn                   908            22       0.024
5 Portal Web                 762            10       0.013
6 Indeed                     449             4       0.009
7 Trabajando.com             289             1       0.003

Cinco veces más probable que un postulante de Headhunter termine contratado que uno de LinkedIn. Cuarenta veces más probable que uno de Trabajando.com. Esto justifica que el costo unitario por candidato del headhunter sea alto: pocos candidatos, todos pre-seleccionados.

El yield ratio por sí solo no decide Que Headhunter tenga el mejor yield no significa automáticamente que sea la mejor fuente. El costo por candidato es 20 veces más alto que el de LinkedIn. La pregunta correcta es: ¿cuánto vale cada contratación que produce esa fuente, considerando además la calidad? Para eso vamos a necesitar el quality-of-hire.

3. Time-to-fill: la métrica del tiempo

El time-to-fill (TTF) es el número de días entre la apertura de la vacante y el inicio efectivo del contrato. Es la métrica de eficiencia operativa por excelencia: cuando un cargo está vacante, está costando productividad pérdida.

Una distinción importante que SHRM/ANSI 2012 explicita pero que en la práctica muchas empresas ignoran:

MétricaInicio del conteoFin del conteo
Time-to-fillApertura formal de la vacante (requisición aprobada)Día de inicio del contrato
Time-to-hireDía en que el candidato entra al procesoDía en que acepta la oferta

El TTF es siempre mayor o igual al time-to-hire. La diferencia es relevante: si tu time-to-hire es bajo pero el TTF es alto, el problema no está en la velocidad de tu reclutamiento, sino en la lentitud para abrir requisiciones.

postulaciones |>
  filter(acepto_oferta == 1) |>
  summarise(
    n           = n(),
    ttf_mediana = median(time_to_fill_dias, na.rm = TRUE),
    ttf_media   = mean(time_to_fill_dias,   na.rm = TRUE),
    ttf_p25     = quantile(time_to_fill_dias, 0.25, na.rm = TRUE),
    ttf_p75     = quantile(time_to_fill_dias, 0.75, na.rm = TRUE),
    ttf_p90     = quantile(time_to_fill_dias, 0.90, na.rm = TRUE)
  )
  n  ttf_mediana ttf_media ttf_p25 ttf_p75 ttf_p90
1 99          63      69.4      45      88     115
Por qué reportamos mediana y P90, no solo el promedio La distribución del TTF es típicamente sesgada a la derecha: la mayoría de los procesos toma 40-70 días, pero hay una cola larga de procesos que demoran 120, 150, 200 días. La media se infla con esa cola; la mediana es robusta. Y el P90 te dice cuánto demora el 10% más lento de tus procesos, que es justamente donde está el problema operativo.

4. Cost-per-hire: la métrica del dinero

El estándar SHRM/ANSI 2012 define el cost-per-hire (CPH) como:

CPH = (Costos externos + Costos internos) ÷ Número de contrataciones realizadas en el periodo

Donde los costos externos incluyen fees a headhunters, publicación en portales y pagos a agencias; y los costos internos incluyen salarios prorrateados de reclutadores, administración del ATS, y los días-persona de jefaturas dedicados a entrevistar.

En el dataset, la columna costo_proceso_clp ya tiene imputada esa contabilidad. El cálculo del CPH por fuente es:

postulaciones |>
  group_by(fuente) |>
  summarise(
    n_contratados      = sum(acepto_oferta == 1, na.rm = TRUE),
    costo_total        = sum(costo_proceso_clp, na.rm = TRUE),
    cost_per_hire      = costo_total / n_contratados
  ) |>
  filter(n_contratados > 0) |>
  arrange(cost_per_hire)
  fuente         n_contratados costo_total cost_per_hire
1 Indeed                     4    7980000        1995000
2 Trabajando.com             1    2150000        2150000
3 Portal Web                10   30100000        3010000
4 LinkedIn                  22   75300000        3422727
5 Universidades              8   31200000        3900000
6 Referido                  16   40500000        2531250
7 Headhunter                22   97800000        4445454

El CPH varía en un orden de magnitud entre las fuentes baratas (Indeed, ~CLP 2 millones por contratación) y las caras (Headhunter, ~CLP 4,4 millones). El CPH promedio de InnovaCo está alrededor de CLP 3 millones, en línea con benchmarks SHRM 2024 para cargos profesionales en Chile (CLP 2-5 M).

Trampa frecuente del CPH: dividir entre cero Si una fuente tuvo postulaciones pero ninguna contratación, su CPH es indefinido (división por cero). Asegúrate siempre de filtrar fuentes con n_contratados > 0 antes de calcular el ratio. Para el reporte, conviene listar esas fuentes aparte como «sin contrataciones en el periodo».

5. Quality-of-hire: la métrica que más importa pero menos se mide

Las tres métricas anteriores —yield, TTF, CPH— miden el proceso. La pregunta que falta es: ¿qué tan buenas son las contrataciones que estamos haciendo? Esa es la quality-of-hire (QoH), y es la métrica que más cambia las decisiones cuando se mide bien.

No hay una sola fórmula canónica. Las definiciones más usadas son combinaciones de:

Una versión simple y defensible para empezar es el producto del desempeño promedio por la permanencia:

QoHfuente = desempeño_promedio_a_12m × tasa_permanencia_12m

Si todos los contratados de una fuente permanecen y tienen desempeño 4.0/5, la QoH = 4.0. Si la mitad se va antes del año, aunque los que quedan sean 4.0, la QoH = 2.0. La métrica castiga las fuentes que producen contrataciones inestables.

postulaciones |>
  filter(acepto_oferta == 1) |>
  group_by(fuente) |>
  summarise(
    n_contrataciones      = n(),
    n_con_desempeno_12m   = sum(!is.na(desempeno_12m)),
    desempeno_promedio    = mean(desempeno_12m,    na.rm = TRUE),
    permanencia_promedio  = mean(permanencia_12m,  na.rm = TRUE),
    quality_of_hire       = desempeno_promedio * permanencia_promedio
  ) |>
  arrange(desc(quality_of_hire))
  fuente          n_contrat n_desemp desemp_prom perm_prom QoH
1 Referido                16        7       4.33      1.00 4.33
2 LinkedIn                22       11       4.12      1.00 4.12
3 Universidades            8        4       3.90      1.00 3.90
4 Headhunter              22        9       3.73      1.00 3.73
5 Portal Web              10        1       3.50      1.00 3.50
6 Trabajando.com           1        1       3.30      1.00 3.30
El problema del N pequeño La QoH solo se puede calcular para contrataciones que ya cumplieron el horizonte (12 meses). Eso significa que, en cualquier momento, una fracción importante de tus contrataciones del año en curso no tiene QoH disponible. Si publicas un reporte con N de fuente igual a 1 o 2, el ruido es enorme. Reglas prudentes: agregar fuentes a categorías mayores cuando el N es chico, o reportar intervalos de confianza, o esperar tener al menos 10 observaciones por fuente antes de tomar decisiones de presupuesto.

6. El trade-off costo vs. calidad: un gráfico que cambia decisiones

Los datos de InnovaCo permiten visualizar las cuatro métricas en una sola figura: scatterplot con cost-per-hire en el eje x, quality-of-hire en el eje y, tamaño del punto proporcional al número de contrataciones, y color por fuente. Cada cuadrante tiene una interpretación de negocio:

CuadranteCost-per-hireQuality-of-hireAcción recomendada
EstrellaBajoAltaReforzar volumen
PremiumAltoAltaMantener para perfiles críticos
EficienteBajoMediaVolumen base, cuidar la conversión
A revisarAltoBajaRenegociar o cerrar
calidad_costo |>
  ggplot(aes(x = cost_per_hire / 1e6,
             y = quality_of_hire,
             size = n_contrataciones,
             color = fuente)) +
  geom_point(alpha = 0.8) +
  scale_size_continuous(range = c(3, 12)) +
  labs(
    title = "Costo vs calidad por fuente",
    x = "Cost-per-hire (CLP, millones)",
    y = "Quality-of-hire"
  ) +
  theme_minimal()

En InnovaCo, la lectura del gráfico es: Referido es el cuadrante estrella (CLP 2.5M y QoH 4.33), Headhunter es premium (CLP 4.4M y QoH 3.73), Trabajando.com es a revisar (CLP 2.2M, pero QoH 3.30 con N=1 — necesitamos más datos antes de cerrarlo definitivamente).

7. Cinco principios para construir un dashboard de reclutamiento

Cierro con cinco principios que aprendí dictando este curso, mirando dashboards de RRHH de empresas chilenas:

  1. El embudo siempre se reporta desagregado por fuente. El embudo agregado tiene poca capacidad de acción: te dice que hay un problema, no dónde está.
  2. Las cuatro métricas (yield, TTF, CPH, QoH) son complementarias, no sustitutas. Optimizar solo una distorsiona el sistema. Bajar el CPH a costa de la QoH es la receta del mal reclutamiento barato.
  3. Reportar mediana, no media, para TTF y CPH. Las distribuciones son sesgadas y los outliers (procesos que tomaron 200 días, gerencias caras) inflan la media artificialmente.
  4. Reportar intervalos de confianza o N por celda cuando la celda es chica. Una QoH de 5.0 con N=1 no es un dato, es ruido. La sobriedad estadística construye credibilidad ante el VP.
  5. El dashboard de reclutamiento no es el de selección. El embudo de reclutamiento mide el flujo (cuántos pasaron, cuánto demoraron, cuánto costaron). La validez del proceso de selección —si los que contratamos son efectivamente los mejores— se mide con las herramientas del Apunte 20.

Referencias