Skip to content

Pruebas psicométricas

HUMAE incluye un banco interno de pruebas configurable desde el panel de admin. El MVP arranca con una versión de Big Five en español (25 ítems, escala Likert 5).

Qué son y por qué importan

Las psicométricas dan a los recruiters una segunda señal (más allá del CV) sobre:

  • Personalidad — apertura, extraversión, amabilidad, responsabilidad, neuroticismo.
  • Aptitud — habilidades cognitivas específicas (fase 2).
  • Valores — alineación con la cultura de la empresa contratante (fase 2).

En HUMAE son opcionales por defecto pero una empresa puede marcar su vacante como "requiere psicométricos completos", en cuyo caso el candidato sin resultados no aparece para esa vacante.

Modelo de datos

PsychometricTest            (la prueba: Big Five, Valores, etc.)
   ├─ PsychometricTestSection (opcional: sub-secciones)
   │    └─ PsychometricQuestion  (un ítem: prompt + tipo)
   │           └─ PsychometricQuestionOption (opciones si aplica)

   └─ PsychometricAttempt    (intento del candidato)
        ├─ PsychometricAnswer  (respuesta por pregunta)
        └─ PsychometricResult   (puntaje final calculado)

Tipos de pregunta (QuestionType enum)

TipoDescripciónEjemplo
likert_5Escala 1–5 (Totalmente en desacuerdo → Totalmente de acuerdo)"Me considero una persona sociable"
likert_7Escala 1–7, más granular
multiple_choiceOpciones mutuamente excluyentes"¿Qué te motiva más? A/B/C/D"
true_falseSí/No
rankingOrdenar opciones por prioridad"Ordena de mayor a menor importancia"
free_textTexto abierto (no puntuado, solo cualitativo)

Cómo responde el candidato

1. Ver las pruebas disponibles

URL: /me/psicometricosEndpoint: GET /api/v1/me/psychometric-tests

Devuelve las pruebas is_active = true y cuáles ha completado el candidato:

json
{
  "data": [
    {
      "id": 1,
      "code": "big-five-es",
      "name": "Big Five en español",
      "category": "personalidad",
      "is_required": false,
      "time_limit_minutes": 15,
      "candidate_status": "not_started"
    }
  ]
}

2. Iniciar un intento

Endpoint: POST /api/v1/me/psychometric-tests/{id}/start

  • Crea un PsychometricAttempt con status = in_progress y started_at = now().
  • Si ya hay un intento en progreso para ese test y candidato, lo reutiliza (no crea otro).
  • Devuelve las preguntas con sus opciones.

Anti-trampa

El candidato puede pausar y continuar. El intento se guarda en cada respuesta. Sin embargo, el time_limit_minutes cuenta desde started_at — si expira, el intento se cierra automáticamente con lo que haya respondido.

3. Responder las preguntas

La UI renderiza una pregunta a la vez. Cada respuesta se guarda con:

Endpoint: POST /api/v1/me/psychometric-attempts/{attempt_id}/answers

json
{
  "question_id": 42,
  "option_id": 87,
  "value": "4",
  "score": 4,
  "time_spent_seconds": 12
}

Reglas:

  • Si la pregunta es Likert, value es el número (1–5 o 1–7).
  • Si es multiple_choice, option_id apunta a una PsychometricQuestionOption.
  • Si es free_text, value contiene la respuesta; score queda null (no puntuada).
  • Cada respuesta es upsert por (attempt_id, question_id): el candidato puede cambiar su respuesta mientras el intento esté en progreso.

4. Enviar el intento

Endpoint: POST /api/v1/me/psychometric-attempts/{attempt_id}/submit

Al enviar:

  1. El backend cambia status a completed y fija completed_at = now().
  2. Llama al PsychometricScoringService::score($attempt).
  3. El servicio:
    • Agrupa respuestas por dimensión (apertura, extraversión, etc.).
    • Aplica reverse scoring en preguntas marcadas is_reverse_scored:
      • Likert 5: puntaje invertido = 6 - score.
      • Likert 7: 8 - score.
    • Multiplica por weight de la pregunta.
    • Calcula total_score (suma simple de todas las dimensiones).
    • Si el test tiene passing_score definido, marca passed = total_score >= passing_score.
    • Asigna una grade A/B/C/D por porcentaje sobre el máximo posible.
    • Guarda un summary textual: "Dimensión más alta: extraversión".
  4. Crea el PsychometricResult asociado al attempt.
  5. Idempotente: si se llama submit dos veces, el segundo devuelve el resultado ya calculado sin recalcular.

5. Ver los resultados

URL: /me/psicometricos/resultados/{id}Endpoint: GET /api/v1/me/psychometric-results/{id}

Muestra:

  • Puntaje total con indicador de "passed".
  • Grade A/B/C/D.
  • Radar chart con las dimensiones (usando recharts en frontend).
  • Resumen textual.

Qué ven los recruiters

En el detalle del candidato (/recruiter/directorio/{id}), el recruiter ve:

  • Número de pruebas completadas vs total.
  • Puntajes por dimensión.
  • Grade global.
  • Fecha del último intento.

No ven las respuestas individuales — solo los scores agregados (política de privacidad).

Modelo de puntuación con ejemplo (Big Five)

La prueba Big Five tiene 5 dimensiones. Imagina 5 preguntas por dimensión (25 en total):

Apertura (openness):       1 + 5 + 9 + 13 + 17  → suma = 22 → 22/25 = 88%
Responsabilidad (con.):    2 + 6 + 10 + 14 + 18 → suma = 18 → 72%
Extraversión:              3 + 7 + 11 + 15 + 19 → suma = 15 → 60%
Amabilidad (agreeab.):     4 + 8 + 12 + 16 + 20 → suma = 20 → 80%
Neuroticismo:              21 + 22 + 23 + 24 + 25 → suma = 10 → 40%
                                                           ────
                                     total_score = 85 (sobre 125)

Grade por total_score:

% sobre máximoGrade
≥ 80%A
60–79%B
40–59%C
< 40%D

Reverse scoring explicado

Algunas preguntas miden la dimensión opuesta y se invierten antes de sumar.

Ejemplo de pregunta reversa en Neuroticismo:

"Generalmente me mantengo tranquilo bajo presión"

Si el candidato responde 5 (totalmente de acuerdo), eso baja su neuroticismo, no lo sube. Por eso:

raw_score = 5
reverse   = 6 - 5 = 1    ← se usa este

Las preguntas se marcan con is_reverse_scored = true en el seeder del test.

Configuración desde admin

Un admin puede:

  • Crear nuevas pruebas (POST /admin/psychometric-tests).
  • Editar preguntas y opciones.
  • Marcar una prueba como is_required (entonces los candidatos sin completarla ven una alerta en el dashboard).
  • Desactivar una prueba (is_active = false) sin borrarla.
  • Ver estadísticas agregadas por prueba.

Ver Configuración admin.

Errores comunes

ErrorCausa
"Intento expirado"Pasó el time_limit_minutes
"No puedes modificar respuestas de un intento completado"Intento ya en completed
"Prueba no disponible"is_active = false
"Ya existe un intento en progreso"El candidato debe continuar o cancelar el activo

Notificaciones relacionadas

Por defecto, las psicométricas no disparan notificaciones al terminar. En fase 2 se puede agregar:

  • Email al candidato con resumen.
  • Notificación al recruiter si el candidato completa una prueba requerida por una vacante.

Siguiente

Con el perfil + psicométricos listos, el candidato puede descargar su CV profesional en PDF. CV en PDF →

Manual de usuario HUMAE · Uso interno