Apariencia
Glosario
Términos clave del dominio HUMAE y del sistema técnico.
Dominio de negocio
Candidato — Persona registrada que busca empleo, paga membresía y construye un perfil profesional.
Recruiter HUMAE — Colaborador interno de la empresa HUMAE. Busca candidatos en el directorio y los presenta a empresas cliente.
Company user — Usuario designado por una empresa cliente. Gestiona sus vacantes y revisa los candidatos presentados por HUMAE.
Admin — Rol con privilegios globales. Configura catálogos, revisa reportes, gestiona usuarios.
Vacante — Puesto que una empresa quiere llenar. Internamente se llama Vacancy (no Job, para evitar colisión con el queue de Laravel).
Asignación — Relación formal entre un candidato y una vacante. Modelo VacancyAssignment.
Pipeline — El tablero kanban que muestra las asignaciones en sus distintas etapas (sourced → hired).
Etapa — Cada columna del pipeline. Enum AssignmentStage.
Entrevista — Reunión agendada entre un candidato y una empresa, dentro del contexto de una asignación.
Ronda — Número secuencial de entrevistas dentro de una misma asignación (primera, segunda, técnica, final, etc.).
Membresía — Acceso activo del candidato al directorio. 499 MXN / 6 meses.
Directorio — Buscador de candidatos activos. Acceso exclusivo de recruiters HUMAE y admin.
Favorito — Candidato marcado por un recruiter para revisión posterior. No implica asignación.
Note — Comentario textual sobre una asignación, escrito por recruiter (privado) o company_user (compartido).
Psicométrica — Prueba estandarizada que evalúa personalidad o aptitud. El MVP incluye Big Five.
Big Five — Modelo de 5 dimensiones de personalidad: Apertura, Responsabilidad, Extraversión, Amabilidad, Neuroticismo.
Reverse scoring — Invertir la puntuación de una pregunta Likert cuando mide la dimensión opuesta.
Categoría del candidato (CandidateKind) — Marca binaria del perfil (employee / intern) que indica bajo qué tipo de proceso desea ser considerado el candidato. Punto 2 del PDF cosasfaltanteshumae.
Tipo de candidato requerido (VacancyTargetKind) — Marca de la vacante (employee / intern / any) que define qué categoría de candidatos busca. Default any.
Áreas de interés laboral — Una o varias áreas funcionales (multi-select desde catálogo) que el candidato indica en su perfil. Una de ellas se marca como principal (is_primary). Punto 1 del PDF cosasfaltanteshumae.
Área principal — De entre todas las áreas seleccionadas por el candidato, la que marcó con la estrella ⭐. Aparece arriba en la UI, suma 100 % al eje "Áreas" del matching y se sincroniza con el campo legacy candidate_profiles.functional_area_id.
Otra área (texto libre) — Campo other_area_text (máx. 200 chars) en el perfil para áreas no presentes en el catálogo. No participa del matching estructurado.
Matching estructurado — Cálculo determinista de compatibilidad vacante↔candidato implementado por MatchingService. Devuelve un score 0–100 ponderado en 6 ejes (categoría, áreas, educación, experiencia, skills, salario) con un breakdown explicable. No es ML.
Score — Total entre 0 y 100 que devuelve el matching. Ordena la lista de "Sugerencias de candidatos" en el pipeline.
Breakdown — Desglose del score por eje. Permite explicar al cliente por qué un candidato está arriba o abajo en las sugerencias.
CV PDF — Documento profesional generado automáticamente por HUMAE desde los datos del perfil.
Self-service registration — Registro público iniciado por el propio interesado en /register/{candidato|reclutador|empresa}. Para candidatos es directo; para reclutadores y empresas, queda en pending_approval.
Pending approval — Estado de un User que se auto-registró como reclutador o empresa y aún no ha sido aprobado por un admin. No puede iniciar sesión hasta que cambie a active.
Compuertas de login — Validaciones que corren después de Hash::check() en POST /auth/login. Si el email no está verificado o el status no es active, devuelve 403 con un errors.code específico (email_unverified, pending_approval, account_inactive) que el frontend usa para mostrar el toast adecuado.
PendingUserRegistrationNotification — Correo + database notification que se envía a todos los users con rol admin cuando alguien se registra como reclutador o empresa. Contiene nombre, correo, motivo y un CTA a /admin/usuarios?status=pending_approval.
AccountApprovedNotification / AccountRejectedNotification — Correos al usuario cuando un admin aprueba o rechaza su solicitud. El de rechazo incluye un reason opcional capturado desde el dialog de admin.
Estados
Terminal — Estado del que no se puede salir. Ej: vacancy cubierta, asignación hired, entrevista realizada.
FSM — Finite State Machine. Define qué transiciones entre estados son válidas.
Máquina de estados — Sinónimo de FSM.
Transición — Cambio de un estado a otro. HUMAE valida cada una con el servicio correspondiente.
Técnico
API envelope — Formato estándar de respuesta del backend: {success, message, data, meta, errors}.
Sanctum — Librería de autenticación de Laravel. HUMAE la usa en modo SPA (cookies) y modo token.
Spatie Permission — Librería para roles y permisos granulares en Laravel. HUMAE tiene 4 roles y 45 permisos.
Policy — Clase de Laravel que autoriza acciones por recurso. Ej: VacancyPolicy::update.
FormRequest — Clase Laravel que valida inputs antes de llegar al controller.
API Resource — Clase Laravel que transforma modelos Eloquent en JSON.
Eager loading — Cargar relaciones de Eloquent anticipadamente para evitar queries N+1.
N+1 — Patrón anti-performance. Hacer 1 query + N queries relacionadas en vez de usar with().
Webhook — Endpoint público que recibe notificaciones de proveedores externos (hoy sólo Stripe; el correo se trackea parseando /var/log/mail.log localmente).
HMAC — Firma criptográfica usada para validar webhooks.
Idempotencia — Propiedad de una operación que puede ejecutarse múltiples veces sin cambiar el resultado.
Soft delete — Marcar un registro como deleted_at sin borrarlo realmente. Permite restauración.
Rate limit — Límite de requests por intervalo, para prevenir abuso.
TanStack Query — Librería de data fetching en el frontend (antes React Query).
Zustand — Librería de state management client-side en React.
Zod — Librería de validación de schemas TypeScript.
shadcn/ui — Colección de componentes React copiables basados en Radix + Tailwind.
Motion — Librería de animación (anteriormente framer-motion, ahora motion v12).
Next.js App Router — API de enrutado de Next.js basada en carpetas. Soporta Server Components.
Server Component — Componente React renderizado en el servidor. Default en Next 13+.
Client Component — Componente con "use client"; usa hooks, eventos, etc.
Integraciones
Stripe Checkout — Sesión de pago hospedada por Stripe. HUMAE redirige al candidato allá.
Payment Intent — Objeto Stripe que representa un intento de cobro.
Customer — Identificador opaco de un cliente en Stripe (guardado en stripe_customer_id).
Signed URL — URL temporal con firma criptográfica. Usada para verificación de email y password reset.
Storage local — Archivos guardados en storage/app/ del propio servidor del backend. Disco public (avatares) vs local (documentos privados). Reemplaza a proveedores SaaS de blob storage.
LocalFileStorage — Helper en App\Helpers\ que encapsula Storage::disk(...) + Intervention Image (resize) para uploads de avatares y documentos.
Postfix — MTA instalado en el mismo servidor del backend; Laravel le entrega los correos por SMTP a 127.0.0.1:25 y Postfix encola + envía saliente. Reemplaza a proveedores SaaS de correo transaccional.
MailHog — Servidor SMTP de desarrollo que captura correos en http://localhost:8025. Se usa en dev en lugar de Postfix.
Arquitectura
Monorepo — Repositorio que contiene múltiples proyectos (humae_backend/, humae_frontend/, humae_docs/).
Bounded context — Agrupación lógica de funcionalidad con un lenguaje común. HUMAE tiene 12.
Service layer — Capa que contiene la lógica de negocio, separada de los controllers.
Repository pattern — NO usado en HUMAE (se usa Eloquent directamente en services).
DTO — Data Transfer Object. En HUMAE se usan FormRequests + arrays, no clases DTO formales.
Conventional Commits — Formato de commit estándar: feat(...):, fix(...):, etc.
Semantic versioning — Formato MAJOR.MINOR.PATCH.
Siguiente
Últimas dudas comunes: Preguntas frecuentes →

