Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/emmanueljarquin-sys/GrupoMecsaCMS/llms.txt

Use this file to discover all available pages before exploring further.

Overview

The Job Application Management module provides a comprehensive interface to review candidates who have applied for your job vacancies. You can view applicant details, download CVs, review custom question responses, schedule interviews, and manage application statuses throughout the recruitment workflow.
This module is accessed per vacancy. Each vacancy has its own application list at postulaciones.php?vacante_id={id}.

Key Features

Candidate Overview

View all applicants with contact information, application date, and current status.

CV Downloads

Direct access to candidate CVs and resumes stored in the system.

Custom Responses

Review answers to vacancy-specific screening questions.

Interview Scheduling

Schedule interviews with automatic email notifications to candidates.

Status Management

Update application status (pending, interview, rejected) with email notifications.

Application Filtering

Filter candidates by application status for efficient workflow management.

Accessing Applications

From the Vacancies page, click the “Ver Postulaciones” button (users icon) for any vacancy. This takes you to the applications page with the format:
postulaciones.php?vacante_id={vacancy_uuid}
The page header displays:
  • Vacancy title
  • Department and location
  • “Volver a Vacantes” link to return to the vacancy list

Application List View

Table Columns

ColumnInformation Displayed
FechaApplication submission date (format: dd/mm/YYYY)
CandidatoFull name and LinkedIn profile link (if provided)
ContactoEmail address and phone number
CV / Doc.”Ver CV” button linking to uploaded resume
EstadoStatus badge (pendiente, entrevista, rechazado)
AccionesAction buttons based on current status
Cita EntrevistaScheduled interview date/time (if applicable)

Candidate Information Display

Email: Primary email address for communicationPhone: Contact phone numberLinkedIn: If provided, displays as a clickable link with LinkedIn icon
The “Ver CV” button opens the candidate’s resume in a new tab. The URL format is stored in the cv_url field of the database.

Application Status System

Applications progress through three primary states:
1

Pendiente (Pending)

Initial status when an application is submitted. Candidates in this state can be scheduled for interviews or rejected.
2

Entrevista (Interview)

Application has been reviewed and the candidate is scheduled for or has completed an interview. Interview date/time is displayed in the “Cita Entrevista” column.
3

Rechazado (Rejected)

Application has been declined. Candidate receives an automated rejection email (if configured).

Status Badges

  • pendiente - Default badge color (typically yellow/orange)
  • entrevista - Success badge color (typically green)
  • rechazado - Danger badge color (typically red)

Filtering Applications

Use the filter panel at the top of the application list to narrow down candidates by status:
1

Select Status Filter

Use the “Estado de Postulación” dropdown to choose:
  • Todos los estados (default - shows all)
  • Pendiente
  • Entrevista
  • Rechazado
2

Auto-Submit

The form automatically submits when you change the dropdown selection via onchange="this.form.submit()".
3

Clear Filter

If a filter is active, a “Limpiar Filtro” button appears to reset the view to all applications.
The candidate count badge updates dynamically based on the active filter, showing “X Candidatos” for the current view.

Application Actions

View Custom Question Responses

1

Click View Responses Button

Click the clipboard icon (“Ver Respuestas”) in the Actions column.
2

Modal Opens

A modal window displays “Respuestas de [Candidate Name]” with a loading spinner.
3

Responses Load

The system fetches responses via api/get_respuestas.php?postulacion_id=[id] and displays:
  • Question number badge
  • Question text from preguntas_vacantes table
  • Candidate’s answer
If the vacancy has no custom questions configured or the candidate didn’t answer them, an informational alert displays:“Este candidato no respondió preguntas personalizadas o no hay preguntas configuradas para esta vacante.”

Schedule Interview

Available for applications with status = “pendiente”.
1

Click Interview Button

Click the calendar-check icon (“Citar a Entrevista”) in the Actions column.
2

Fill Interview Details

In the modal:
  • Fecha y Hora (required) - Use the datetime-local input to select interview date/time
  • Mensaje Personalizado (optional) - Add custom instructions like “Traer identificación” or “Preguntar por RRHH”
3

Submit

Click “Programar y Enviar Email” to:
  • Update application status to “entrevista”
  • Store the interview date in fecha_entrevista field
  • Send automated email notification to candidate
The system processes the request via functions/gestionarPostulacion.php with action = “entrevista” and displays a SweetAlert2 confirmation with email send status.

Reject Application

Available for applications with status = “pendiente”.
1

Click Reject Button

Click the user-xmark icon (“Rechazar”) in the Actions column.
2

Confirm Rejection

The modal displays:
  • Confirmation message: “¿Estás seguro de rechazar la postulación de [Candidate Name]?”
  • Info note: “Se le enviará un correo automático de agradecimiento informando que no continuará en el proceso.”
3

Add Optional Comment

Optionally add a “Motivo o comentario adicional” (internal note, not sent to candidate).
4

Confirm

Click “Confirmar y Enviar Email” to:
  • Update application status to “rechazado”
  • Send automated rejection email to candidate
Rejecting an application cannot be undone. The candidate will receive an email notification. Ensure you have selected the correct application before confirming.

Data Structure

Database Table: postulaciones

{
  "id": "uuid",
  "vacante_id": "uuid (foreign key to vacantes)",
  "nombre_completo": "string",
  "email": "string",
  "telefono": "string",
  "linkedin_url": "string (nullable)",
  "cv_url": "string",
  "estado": "enum (pendiente, entrevista, rechazado)",
  "fecha_entrevista": "timestamp (nullable)",
  "created_at": "timestamp"
}
Stores answers to custom screening questions:
{
  "id": "uuid",
  "postulacion_id": "uuid (foreign key)",
  "pregunta_id": "uuid (foreign key to preguntas_vacantes)",
  "respuesta": "text",
  "preguntas_vacantes": {
    "pregunta": "string"
  }
}

Email Notifications

The system sends automated emails for two key actions:

Interview Invitation

Sent when status changes to “entrevista”. Includes:
  • Interview date and time
  • Custom message from recruiter
  • Company contact information

Rejection Notice

Sent when status changes to “rechazado”. Includes:
  • Thank you message
  • Polite closure
  • (Optional internal comment is NOT sent)
Email send status is returned in the API response and displayed in the success message: “Email: ”.

Role-Based Access

Access to the Application Management module requires an active session with a valid authentication token. Users without a valid $_SESSION['token'] will be redirected to the login page.

Required Permissions

  • View Applications - HR recruiters, managers
  • View CVs - HR recruiters, managers
  • View Custom Responses - HR recruiters, managers
  • Schedule Interviews - HR recruiters, managers
  • Reject Applications - HR managers (recommended restriction)
  • Access without vacante_id - Redirects to vacancies page

User Workflows

Initial Application Review

1

Access Application List

From the Vacancies page, click “Ver Postulaciones” for the position you want to review.
2

Review Candidate Information

Scan the table for candidate names, application dates, and contact information.
3

Download and Review CVs

Click “Ver CV” to open and evaluate each candidate’s resume.
4

Check Custom Responses

Click the clipboard icon to review answers to screening questions.
5

Shortlist Candidates

Based on CV and responses, decide which candidates to interview or reject.

Scheduling Interview Rounds

1

Filter by Pending Status

Use the status filter to show only “Pendiente” applications.
2

Select Qualified Candidates

Review the list and identify candidates who meet the job requirements.
3

Schedule Interviews

For each selected candidate:
  • Click the “Citar a Entrevista” button
  • Choose an available date/time
  • Add any special instructions
  • Submit to send the invitation
4

Switch to Interview Filter

Change the filter to “Entrevista” to see all scheduled interviews and their dates.

Managing Application Pipeline

1

Monitor All Statuses

Use the “Todos los estados” filter to see the full pipeline.
2

Review Interview Dates

Check the “Cita Entrevista” column to see upcoming interviews.
3

Process Rejections

Filter by “Pendiente” and reject unqualified candidates to keep the pipeline clean.
4

Track Progress

Use the candidate count badge to monitor application volume and pipeline flow.

Handling High Application Volume

1

Filter by Status

Focus on one status at a time (e.g., review all pending applications first).
2

Batch Review CVs

Open multiple CV tabs and review them in sequence.
3

Use Custom Questions Strategically

Review custom question responses first to quickly screen out unqualified candidates before opening CVs.
4

Batch Schedule Interviews

Schedule multiple interviews in one session by keeping the datetime picker and instructions consistent.

Technical Details

API Endpoints

  • GET /postulaciones?vacante_id=eq.{id}&order=created_at.desc - Fetch all applications for a vacancy
  • GET /postulaciones?vacante_id=eq.{id}&estado=eq.{status}&order=created_at.desc - Fetch filtered applications
  • GET /api/get_respuestas.php?postulacion_id={id} - Fetch custom question responses
  • POST /functions/gestionarPostulacion.php - Update application status and send emails

JavaScript Libraries

  • Bootstrap 5.3.3 - Modal functionality and UI components
  • SweetAlert2 - Success/error message displays
  • Font Awesome - Icons throughout the interface

Form Handling

Both interview and rejection forms use async fetch:
const formData = new FormData(form);
const resp = await fetch('functions/gestionarPostulacion.php', {
    method: 'POST',
    body: formData
});
const data = await resp.json();
Expected response format:
{
  "success": true,
  "message": "Estado actualizado correctamente",
  "email_status": "Enviado" // or error message
}

Best Practices

Prompt Responses

Review and respond to applications within 48-72 hours to maintain candidate engagement.

Organized Workflow

Process applications in batches by status for efficiency and consistency.

Clear Communication

Use the custom message field when scheduling interviews to set clear expectations.

Professional Rejections

Always send rejection emails promptly and professionally to maintain company reputation.

Interview Preparation

Review custom question responses before interviews to prepare targeted discussion points.

Data Privacy

Handle candidate CVs and personal information according to data protection regulations.

Troubleshooting

Possible causes:
  • Vacancy has no applications yet (“Aún no hay postulaciones para esta vacante”)
  • Active filter is excluding results (click “Limpiar Filtro”)
  • Database connection error (check error message)
Solution: Check if the vacancy is active and published on your careers page.
Possible causes:
  • No custom questions configured for this vacancy
  • Candidate didn’t answer the questions
  • API endpoint error (api/get_respuestas.php)
Solution: Verify that questions are configured in the “Gestionar Preguntas” section for this vacancy.
Possible causes:
  • Email service configuration issue
  • Invalid candidate email address
  • Server email limits reached
Solution: Check the email_status field in the response. Contact your system administrator if emails consistently fail.
Possible cause: Application status is not “pendiente”.Solution: Interview scheduling is only available for pending applications. If an application was previously rejected or already scheduled, those actions are not reversible from this interface.

Build docs developers (and LLMs) love