Apariencia
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)
| Tipo | Descripción | Ejemplo |
|---|---|---|
likert_5 | Escala 1–5 (Totalmente en desacuerdo → Totalmente de acuerdo) | "Me considero una persona sociable" |
likert_7 | Escala 1–7, más granular | — |
multiple_choice | Opciones mutuamente excluyentes | "¿Qué te motiva más? A/B/C/D" |
true_false | Sí/No | — |
ranking | Ordenar opciones por prioridad | "Ordena de mayor a menor importancia" |
free_text | Texto 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
PsychometricAttemptconstatus = in_progressystarted_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,
valuees el número (1–5 o 1–7). - Si es multiple_choice,
option_idapunta a unaPsychometricQuestionOption. - Si es free_text,
valuecontiene la respuesta;scorequeda 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:
- El backend cambia
statusacompletedy fijacompleted_at = now(). - Llama al
PsychometricScoringService::score($attempt). - 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.
- Likert 5: puntaje invertido =
- Multiplica por
weightde la pregunta. - Calcula
total_score(suma simple de todas las dimensiones). - Si el test tiene
passing_scoredefinido, marcapassed = total_score >= passing_score. - Asigna una
gradeA/B/C/D por porcentaje sobre el máximo posible. - Guarda un
summarytextual: "Dimensión más alta: extraversión".
- Crea el
PsychometricResultasociado al attempt. - Idempotente: si se llama
submitdos 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áximo | Grade |
|---|---|
| ≥ 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 esteLas 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
| Error | Causa |
|---|---|
| "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 →

