Configuración de plantillas de proceso
Referencia completa para configurar plantillas de procesos de contratación con YAML — tipos de etapa, opciones de configuración, evaluadores y ejemplos.
Descripción general
Una plantilla de proceso define las etapas por las que pasa un candidato a lo largo de tu pipeline de contratación. Las plantillas se escriben en YAML y constan de una lista ordenada de etapas, cada una con un tipo, un nombre y una configuración opcional.
Cuando creas una oferta de empleo y seleccionas una plantilla, las etapas se instancian en orden. Los candidatos avanzan por cada etapa de forma secuencial, desde la candidatura hasta la oferta.
Estructura básica
name: My Hiring Process
description: |
A short description of this template.
Supports **Markdown** formatting.
tags:
- engineering
- remote
stages:
- type: application_form
name: "Application"
config:
candidate_description: "Tell us about yourself."
- type: live_interview
name: "Interview"
config:
candidate_description: "A conversation about your background."
- type: offer
name: "Offer"
Las plantillas se validan al guardarlas, y las claves de config se comprueban de forma estricta: una clave mal escrita o no admitida hace fallar la validación con un error, en lugar de ignorarse en silencio, así que las erratas salen a la luz de inmediato.
Claves de nivel superior
| Clave | Obligatoria | Descripción |
|---|---|---|
stages |
Sí | Lista ordenada de definiciones de etapa (al menos una) |
name |
No | Nombre de la plantilla (también se puede definir en el campo del formulario) |
description |
No | Descripción del proceso con formato Markdown |
tags |
No | Lista de etiquetas de texto para categorizar |
quick_fields |
No | Campos rápidos para capturar información del candidato (consulta Campos rápidos más adelante) |
Claves de etapa
Cada etapa requiere name y type. El hash opcional config y la lista reviewers varían según el tipo de etapa.
| Clave | Obligatoria | Descripción |
|---|---|---|
name |
Sí | Nombre visible de la etapa |
type |
Sí | Uno de los 10 tipos de etapa que se enumeran a continuación |
config |
No | Opciones de configuración específicas del tipo |
reviewers |
No | Lista de asignaciones de evaluadores |
Compensar a los candidatos
Cualquier etapa puede pagar a los candidatos por su tiempo: lo más habitual es un ejercicio para realizar en casa, pero un ejercicio de diseño remunerado o una entrevista pagada funcionan exactamente igual. Añade un bloque anidado payout dentro del config de la etapa; cuando un candidato completa la etapa, se crea un pago por el importe configurado. Consulta Pagos a candidatos para ver cómo se revisan y envían los pagos.
| Clave | Tipo | Predeterminado | Descripción |
|---|---|---|---|
enabled |
boolean | false | Activa la compensación para esta etapa |
amount |
integer | — | Importe a pagar, en la moneda indicada (por ejemplo, 250) |
currency |
string | USD | Código de moneda de tres letras |
- type: code_assignment
name: "Take-Home Assignment"
config:
candidate_description: "Complete a practical coding exercise."
payout:
enabled: true
amount: 250
currency: USD
Referencia de tipos de etapa
application_form
El punto de entrada para los candidatos. Recopila información estructurada mediante campos de formulario personalizados. Opcionalmente, retiene a los candidatos en estado de cribado antes de avanzarlos.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
screening_enabled |
boolean | true | Retiene las candidaturas para revisión manual antes de avanzarlas. Activado por defecto: ponlo en false de forma explícita para desactivar el cribado |
screening_message |
string | — | Mensaje que se muestra a los candidatos mientras el cribado está activo |
resume_required |
boolean | false | Exigir CV: los candidatos no pueden enviar la candidatura sin adjuntar un documento PDF o Word (máx. 10 MB) |
fields |
array | — | Lista de definiciones de campos de formulario (ver a continuación) |
Opciones de los campos de formulario:
| Clave | Obligatoria | Tipo | Descripción |
|---|---|---|---|
name |
Sí | string | Identificador del campo |
type |
Sí | string |
text, textarea, file, url, select, checkbox, email, phone
|
required |
No | boolean | Si el campo es de cumplimentación obligatoria — se comprueba cuando el candidato envía la candidatura, en todas las vías de candidatura, incluida la API pública |
label |
No | string | Etiqueta visible (por defecto, el nombre) |
placeholder |
No | string | Texto de ejemplo |
max_length |
No | integer | Número máximo de caracteres (mínimo: 1) |
options |
No | array | Opciones para los campos select
|
Importante: para exigir un CV, establece
resume_required: trueen la configuración de la etapa. Un campo de formulario llamadoresumese ignora: el currículum tiene su propia subida en el formulario de candidatura y se adjunta al margen de los campos personalizados, así que declarar- name: resumecontype: fileyrequired: trueno tiene ningún efecto.
- type: application_form
name: "Application"
config:
candidate_description: "Tell us about yourself."
screening_enabled: true
screening_message: "We'll review your application shortly."
resume_required: true
fields:
- name: experience_level
type: select
required: true
options:
- "Junior (0-2 years)"
- "Mid (2-5 years)"
- "Senior (5+ years)"
- name: cover_letter
type: textarea
required: false
max_length: 500
code_assignment
Un ejercicio de código para realizar en casa. Cuando GitHub está conectado, se crea un repositorio privado a partir de una plantilla para cada candidato. Incluye gestión de plazos de entrega.
Importante: El repositorio que indiques en
github_templatedebe estar marcado como plantilla en GitHub. Consulta Configuración del repositorio de plantilla de GitHub para conocer los requisitos y las instrucciones de configuración.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
github_template |
string | — | Repositorio plantilla de GitHub (por ejemplo, org/hiring-assignment) |
duration_days |
integer | 7 | Días disponibles para completarlo (mínimo: 1) |
estimated_hours |
integer | — | Esfuerzo estimado en horas (por ejemplo, 5) |
instructions |
string | — | Instrucciones que se incorporan con un commit al repositorio del candidato |
grace_period_hours |
integer | 24 | Horas que se aceptan pasada la fecha límite antes de que esta sea definitiva |
allow_extension |
boolean | true | Los candidatos pueden solicitar una ampliación del plazo |
Para pagar a los candidatos por el ejercicio, añade un bloque payout; consulta «Compensar a los candidatos» más arriba. Las claves antiguas paid, payment_amount y payment_currency se siguen aceptando en code_assignment y se convierten en un pago equivalente, pero en las plantillas nuevas es preferible usar payout.
- type: code_assignment
name: "Take-Home Assignment"
config:
candidate_description: "Complete a practical coding exercise."
github_template: "mycompany/hiring-challenge"
duration_days: 7
estimated_hours: 5
payout:
enabled: true
amount: 250
currency: USD
portfolio_upload
Los candidatos suben muestras de trabajo (archivos de diseño, muestras de escritura, etc.). Admite restricciones de tipo de archivo, límites de subida y enlaces externos.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
accept |
array | pdf, png, jpg, jpeg, gif, webp |
Extensiones de archivo permitidas, sin el punto inicial |
max_files |
integer | 10 | Número máximo de archivos (mínimo: 1) |
max_file_size_mb |
integer | 25 | Tamaño máximo por archivo en MB |
allow_links |
boolean | true | Los candidatos también pueden enviar enlaces externos (por ejemplo, Figma o Behance) |
- type: portfolio_upload
name: "Portfolio Review"
config:
candidate_description: "Share 3-5 examples of your best work."
accept:
- pdf
- png
- jpg
max_files: 5
max_file_size_mb: 50
allow_links: true
questionnaire
Preguntas escritas para que los candidatos respondan de forma asíncrona. Útil para el cribado por escenarios en roles de soporte, ventas o redacción.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
questions |
array | — | Lista de definiciones de preguntas |
duration_days |
integer | — | Días sugeridos para responder: solo se muestran en la vista previa de la plantilla, no se aplican |
Opciones de las preguntas:
| Clave | Obligatoria | Tipo | Descripción |
|---|---|---|---|
type |
Sí | string | Categoría de la pregunta (por ejemplo, scenario) |
prompt |
Sí | string | El texto de la pregunta |
- type: questionnaire
name: "Written Scenarios"
config:
candidate_description: "Respond to these real-world scenarios."
questions:
- type: scenario
prompt: "A customer reports a billing error. Walk us through your response."
- type: scenario
prompt: "You discover a bug affecting 10% of users. What do you do?"
video
Presenta un vídeo a los candidatos. Admite vídeos subidos (a través de Mux) o vídeos incrustados desde plataformas externas.
Los ajustes de vídeo se agrupan bajo una clave anidada video dentro de config.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
video |
hash | — | Ajustes de vídeo (ver a continuación) |
Opciones de video:
| Clave | Tipo | Predeterminado | Descripción |
|---|---|---|---|
source_type |
string | mux |
mux (subido) u oembed (incrustación externa) |
oembed_url |
string | — | URL del vídeo incrustado (cuando la fuente es oembed) |
description |
string | — | Descripción o contexto del vídeo |
min_watch_percentage |
integer | 15 | Porcentaje mínimo de visualización requerido (1-100) |
- type: video
name: "Company Introduction"
config:
candidate_description: "Watch this video about our team and culture."
video:
source_type: oembed
oembed_url: "https://www.youtube.com/watch?v=example"
description: "A 5-minute overview of our engineering team."
min_watch_percentage: 80
video_recording
Los candidatos graban o suben una respuesta en vídeo a una indicación. Útil para presentaciones en vídeo, cartas de presentación en vídeo o entrevistas en vídeo asíncronas. Requiere la integración con Mux.
Los ajustes de grabación se agrupan bajo una clave anidada video_recording dentro de config.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
video_recording |
hash | — | Ajustes de grabación (ver a continuación) |
Opciones de video_recording:
| Clave | Tipo | Predeterminado | Descripción |
|---|---|---|---|
max_duration_seconds |
integer | 120 | Duración máxima de la grabación en segundos |
allow_upload |
boolean | true | Permitir a los candidatos subir un archivo de vídeo pregrabado |
max_retakes |
integer | — | Número de regrabaciones permitidas (en blanco = ilimitadas) |
- type: video_recording
name: "Video Introduction"
config:
candidate_description: "Record a 2-minute video introducing yourself."
video_recording:
max_duration_seconds: 120
allow_upload: true
max_retakes: 3
team_review
Una etapa de revisión interna en la que tu equipo evalúa a un candidato. Admite umbrales de votación y reglas de veto.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Mensaje que se muestra al candidato durante esta etapa |
voting |
hash | — | Configuración de la votación (ver a continuación) |
Opciones de la votación:
| Clave | Tipo | Predeterminado | Descripción |
|---|---|---|---|
threshold |
integer | 2 | Mínimo de votos a favor para avanzar (1-10) |
require_all_reviewers |
boolean | false | Todos los evaluadores asignados deben votar |
veto_auto_rejects |
boolean | false | Un solo veto rechaza automáticamente al candidato |
- type: team_review
name: "Code Review"
config:
candidate_description: "Our team is reviewing your submission."
voting:
threshold: 2
require_all_reviewers: true
veto_auto_rejects: true
live_interview
Una entrevista síncrona realizada por videollamada o de forma presencial. Se integra con la programación del calendario.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
duration_minutes |
integer | 60 | Duración de la entrevista en minutos (mínimo: 15) |
interviewers_required |
integer | 1 | Número de entrevistadores que deben asistir |
includes_roleplay |
boolean | false | La entrevista incluye un ejercicio de simulación de rol |
- type: live_interview
name: "Technical Interview"
config:
candidate_description: "A conversation about your technical skills."
duration_minutes: 90
interviewers_required: 2
reference_check
Recopila y verifica las referencias de los candidatos. Todavía no existe un flujo de envío de referencias: los candidatos ven la descripción de la etapa, y references_required aparece en la vista previa de la plantilla, pero no se aplica.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Instrucciones que se muestran al candidato |
references_required |
integer | — | Número de referencias necesarias (mínimo: 1) |
- type: reference_check
name: "References"
config:
candidate_description: "Provide contact details for your references."
references_required: 2
offer
La etapa final, en la que presentas una oferta al candidato. Suele tener una configuración mínima.
| Clave de configuración | Tipo | Predeterminado | Descripción |
|---|---|---|---|
candidate_description |
string | — | Mensaje que se muestra al candidato |
- type: offer
name: "Offer"
config:
candidate_description: "We'd love to have you join the team."
Evaluadores
Puedes asignar evaluadores a cualquier etapa. Cada evaluador necesita una dirección de correo electrónico y un rol.
| Clave | Obligatoria | Descripción |
|---|---|---|
email |
Sí | Dirección de correo electrónico del evaluador (debe coincidir con la de un miembro del equipo) |
role |
Sí |
reviewer (estándar) o lead (responsable principal de la decisión) |
- type: team_review
name: "Code Review"
config:
voting:
threshold: 2
reviewers:
- email: [email protected]
role: lead
- email: [email protected]
role: reviewer
- email: [email protected]
role: reviewer
Campos rápidos
Los campos rápidos definen los metadatos estructurados que tu equipo captura para cada candidato: cosas como expectativas salariales, disponibilidad, preferencia de ubicación o cualquier señal personalizada relevante para tu puesto. Los campos aparecen en la barra lateral del candidato.
Para gestionar las definiciones de campos directamente en la interfaz, consulta Campos de datos del candidato.
Esquema
| Clave | Obligatoria | Tipo | Descripción |
|---|---|---|---|
key |
Sí | string | Identificador único (solo minúsculas y guiones bajos, por ejemplo, salary_expectation) |
label |
Sí | string | Etiqueta visible que se muestra a tu equipo |
field_type |
No | string | Uno de los 4 tipos de campo de más abajo (predeterminado: text) |
placeholder |
No | string | Texto de ejemplo para el campo |
options |
No | array | Opciones para los campos select
|
Nota: Los tipos de campo y opciones más avanzados —como números, valoraciones, extracción por IA y reglas de visibilidad— se configuran en
metafield_definitions, una clave de nivel superior independiente. Consulta Campos de datos del candidato.
Tipos de campo
| Tipo | Descripción |
|---|---|
text |
Entrada de texto de una sola línea |
textarea |
Entrada de texto de varias líneas |
select |
Lista desplegable a partir de un conjunto fijo de opciones |
date |
Selector de fecha |
Ejemplos
quick_fields:
- key: salary_expectation
label: "Salary Expectation"
field_type: text
placeholder: "$80,000 - $100,000"
- key: start_date
label: "Earliest Start Date"
field_type: date
- key: work_authorization
label: "Work Authorization"
field_type: select
options:
- "US Citizen"
- "Permanent Resident"
- "Requires Sponsorship"
- key: source
label: "Source / Referral"
field_type: text
placeholder: "e.g. LinkedIn, referral from..."
Ejemplo completo
Una plantilla completa para contratar a un ingeniero de software, que incluye cribado, un ejercicio de código remunerado, revisión del equipo, dos rondas de entrevistas, referencias y una oferta.
name: Software Engineer - Standard
description: |
Comprehensive process for mid-to-senior software engineers.
Includes a take-home assignment with team code review.
tags:
- engineering
- technical
- assignment
quick_fields:
- key: salary_expectation
label: "Salary Expectation"
field_type: text
placeholder: "e.g. $120k - $150k"
- key: notice_period
label: "Notice Period"
field_type: text
- key: location_preference
label: "Location Preference"
field_type: text
stages:
- type: application_form
name: "Application"
config:
candidate_description: "Tell us about yourself and your experience."
screening_enabled: true
screening_message: "We're reviewing your application."
resume_required: true
fields:
- name: github_url
type: url
required: false
- name: motivation
type: textarea
required: true
max_length: 500
- type: code_assignment
name: "Take-Home Assignment"
config:
candidate_description: "Complete a practical coding exercise at your own pace."
github_template: "mycompany/hiring-assignment"
duration_days: 8
estimated_hours: 6
payout:
enabled: true
amount: 250
currency: USD
reviewers:
- email: [email protected]
role: lead
- type: team_review
name: "Code Review"
config:
candidate_description: "Our team reviews your code submission."
voting:
threshold: 2
require_all_reviewers: true
veto_auto_rejects: true
reviewers:
- email: [email protected]
role: lead
- email: [email protected]
role: reviewer
- type: live_interview
name: "Technical Interview"
config:
candidate_description: "A conversation about your technical skills."
duration_minutes: 90
interviewers_required: 2
- type: live_interview
name: "Culture & Values"
config:
candidate_description: "Get to know the team and learn about our culture."
duration_minutes: 45
- type: reference_check
name: "References"
config:
references_required: 2
- type: offer
name: "Offer"
config:
candidate_description: "We'll present you with an offer to join the team."
Consejos
-
Comienza con
application_form: es el punto de entrada natural y te permite recopilar currículos e información básica. -
Termina con
offer: mantiene el pipeline ordenado y te da una etapa final para el seguimiento. - Usa el cribado en el formulario de candidatura para revisar manualmente a los candidatos antes de avanzarlos. Así evitas que candidatos no cualificados reciban ejercicios de código.
-
Paga los ejercicios para realizar en casa: añade un bloque
payoutalconfigde la etapa para compensar a los candidatos por su tiempo (funciona en cualquier tipo de etapa). Consulta Pagos a candidatos. - Mantén los procesos por debajo de 7 etapas: los pipelines largos provocan el abandono de los candidatos.
- Asigna evaluadores a las etapas team_review y code_assignment para que se notifique automáticamente a las personas adecuadas.
-
Usa
candidate_descriptionen cada etapa: los candidatos ven este mensaje, así que una comunicación clara reduce la confusión y las solicitudes de soporte. -
Captura las señales habituales con
quick_fields: añade campos como expectativa salarial, disponibilidad y ubicación para que tu equipo los registre de forma coherente en la barra lateral del candidato. -
¿Necesitas tipos más avanzados o extracción por IA? Los números, las valoraciones, el autocompletado por IA y las reglas de visibilidad están en
metafield_definitions. Consulta Campos de datos del candidato.