Konfiguracja szablonów procesu rekrutacyjnego
Kompletna dokumentacja konfiguracji szablonów procesów rekrutacyjnych w YAML -- typy etapów, opcje konfiguracji, recenzenci i przykłady.
Przegląd
Szablon procesu definiuje etapy, przez które przechodzi kandydat w procesie rekrutacyjnym. Szablony są pisane w YAML i składają się z uporządkowanej listy etapów, z których każdy posiada typ, nazwę i opcjonalną konfigurację.
Podczas tworzenia ogłoszenia o pracę i wyboru szablonu etapy są tworzone w kolejności. Kandydaci przechodzą przez każdy etap sekwencyjnie – od aplikacji do oferty.
Podstawowa struktura
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:
duration_minutes: 60
- type: offer
name: "Offer"
Klucze najwyższego poziomu
| Klucz | Wymagany | Opis |
|---|---|---|
stages |
Tak | Uporządkowana lista definicji etapów (co najmniej jeden) |
name |
Nie | Nazwa szablonu (może być również ustawiona w polu formularza) |
description |
Nie | Opis procesu w formacie Markdown |
tags |
Nie | Lista tagów tekstowych do kategoryzacji |
quick_fields |
Nie | Pola metadanych kandydata (patrz sekcja Szybkie pola poniżej) |
Klucze etapu
Każdy etap wymaga klucza name i type. Opcjonalny słownik config oraz lista reviewers różnią się w zależności od typu etapu.
| Klucz | Wymagany | Opis |
|---|---|---|
name |
Tak | Wyświetlana nazwa etapu |
type |
Tak | Jeden z 10 typów etapów wymienionych poniżej |
config |
Nie | Opcje konfiguracji specyficzne dla danego typu |
reviewers |
Nie | Lista przypisanych recenzentów |
Dokumentacja typów etapów
application_form
Punkt wejścia dla kandydatów. Zbiera ustrukturyzowane informacje za pomocą niestandardowych pól formularza. Opcjonalnie wstrzymuje kandydatów w stanie wstępnej selekcji przed przekazaniem dalej.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
screening_enabled |
boolean | false | Wstrzymanie zgłoszeń do ręcznej weryfikacji przed przekazaniem dalej |
screening_message |
string | — | Wiadomość wyświetlana kandydatom podczas aktywnej selekcji wstępnej |
fields |
array | — | Lista definicji pól formularza (patrz poniżej) |
Opcje pól formularza:
| Klucz | Wymagany | Typ | Opis |
|---|---|---|---|
name |
Tak | string | Identyfikator pola |
type |
Tak | string | text, textarea, file, url, select, checkbox, email, phone |
required |
Nie | boolean | Czy pole musi być wypełnione |
label |
Nie | string | Wyświetlana etykieta (domyślnie nazwa pola) |
placeholder |
Nie | string | Tekst zastępczy |
max_length |
Nie | integer | Maksymalna liczba znaków (min: 1) |
options |
Nie | array | Opcje wyboru dla pól typu select |
- type: application_form
name: "Application"
config:
candidate_description: "Tell us about yourself."
screening_enabled: true
screening_message: "We'll review your application shortly."
fields:
- name: resume
type: file
required: true
- 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
Zadanie programistyczne do wykonania w domu. Gdy GitHub jest podłączony, dla każdego kandydata tworzone jest prywatne repozytorium na podstawie szablonu. Obejmuje zarządzanie terminami.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
github_template |
string | — | Repozytorium szablonu GitHub (np. org/hiring-assignment) |
duration_days |
integer | — | Liczba dni na wykonanie (min: 1) |
estimated_hours |
string | — | Szacowany nakład pracy (np. "3-8") |
Wynagrodzenie: Wypłaty konfiguruje się per etap w interfejsie ustawień etapu, a nie w szablonie YAML. Każdy typ etapu może oferować wynagrodzenie. Szczegóły w artykule Candidate Payouts.
- 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: "3-6"
portfolio_upload
Kandydaci przesyłają próbki prac (pliki projektowe, przykładowe teksty itp.). Obsługuje ograniczenia typów plików i limity przesyłania.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
accept |
array | — | Dozwolone rozszerzenia plików (np. pdf, png, figma) |
max_files |
integer | — | Maksymalna liczba plików (min: 1) |
- type: portfolio_upload
name: "Portfolio Review"
config:
candidate_description: "Share 3-5 examples of your best work."
accept:
- pdf
- png
- jpg
- figma
max_files: 5
questionnaire
Pytania pisemne, na które kandydaci odpowiadają asynchronicznie. Przydatne do weryfikacji scenariuszowej na stanowiskach w dziale wsparcia, sprzedaży lub na stanowiskach wymagających umiejętności pisarskich.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
questions |
array | — | Lista definicji pytań |
Opcje pytań:
| Klucz | Wymagany | Typ | Opis |
|---|---|---|---|
type |
Tak | string | Kategoria pytania (np. scenario) |
prompt |
Tak | string | Treść pytania |
- 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
Prezentuje kandydatowi materiał wideo. Obsługuje przesłane filmy (przez Mux) lub osadzone filmy z zewnętrznych platform.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
video_source_type |
string | — | mux (przesłany) lub oembed (osadzenie zewnętrzne) |
video_oembed_url |
string | — | URL osadzonego filmu (gdy źródłem jest oembed) |
video_description |
string | — | Opis lub kontekst filmu |
video_min_watch_percentage |
integer | — | Minimalny wymagany procent obejrzenia (1–100) |
- type: video
name: "Company Introduction"
config:
candidate_description: "Watch this video about our team and culture."
video_source_type: oembed
video_oembed_url: "https://www.youtube.com/watch?v=example"
video_description: "A 5-minute overview of our engineering team."
video_min_watch_percentage: 80
video_recording
Kandydaci nagrywają lub przesyłają odpowiedź wideo na podany temat. Przydatne do przedstawienia się, wideo listów motywacyjnych lub asynchronicznych rozmów wideo. Wymaga integracji z Mux.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
max_duration_seconds |
integer | 120 | Maksymalna długość nagrania w sekundach |
allow_upload |
boolean | true | Pozwala kandydatom przesłać wcześniej nagrany plik wideo |
max_retakes |
integer | — | Liczba dozwolonych ponownych nagrań (puste = bez limitu) |
- type: video_recording
name: "Video Introduction"
config:
candidate_description: "Record a 2-minute video introducing yourself."
max_duration_seconds: 120
allow_upload: true
max_retakes: 3
team_review
Wewnętrzny etap oceny, na którym zespół ewaluuje kandydata. Obsługuje progi głosowania i zasady weta.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Wiadomość wyświetlana kandydatowi na tym etapie |
voting |
hash | — | Konfiguracja głosowania (patrz poniżej) |
Opcje głosowania:
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
threshold |
integer | — | Minimalna liczba głosów “tak” do przekazania dalej (1–10) |
require_all_reviewers |
boolean | false | Wszyscy przypisani recenzenci muszą zagłosować |
veto_auto_rejects |
boolean | false | Pojedyncze weto automatycznie odrzuca kandydata |
- 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
Synchroniczna rozmowa kwalifikacyjna prowadzona przez wideokonferencję lub osobiście. Integruje się z planowaniem w kalendarzu.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
duration_minutes |
integer | — | Czas trwania rozmowy w minutach (min: 15) |
interviewers_required |
integer | — | Wymagana liczba prowadzących rozmowę (min: 1) |
includes_roleplay |
boolean | false | Czy rozmowa obejmuje ćwiczenie z odgrywaniem ról |
- type: live_interview
name: "Technical Interview"
config:
candidate_description: "A conversation about your technical skills."
duration_minutes: 60
interviewers_required: 2
reference_check
Zbieranie i weryfikacja referencji kandydata.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Instrukcje wyświetlane kandydatowi |
references_required |
integer | — | Wymagana liczba referencji (min: 1) |
- type: reference_check
name: "References"
config:
candidate_description: "Provide contact details for your references."
references_required: 2
offer
Ostatni etap, na którym składana jest oferta kandydatowi. Zazwyczaj wymaga minimalnej konfiguracji.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | — | Wiadomość wyświetlana kandydatowi |
- type: offer
name: "Offer"
config:
candidate_description: "We'd love to have you join the team."
Recenzenci
Do każdego etapu można przypisać recenzentów. Każdy recenzent wymaga adresu e-mail i roli.
| Klucz | Wymagany | Opis |
|---|---|---|
email |
Tak | Adres e-mail recenzenta (musi odpowiadać członkowi zespołu) |
role |
Tak | reviewer (standardowy) lub lead (główny decydent) |
- 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
Szybkie pola
Szybkie pola rejestrują metadane kandydata na najwyższym poziomie szablonu. Wyświetlane są w panelu bocznym kandydata w celu szybkiego podglądu.
| Klucz | Wymagany | Typ | Opis |
|---|---|---|---|
key |
Tak | string | Unikalny identyfikator |
label |
Tak | string | Wyświetlana etykieta |
field_type |
Nie | string | text (domyślnie), textarea, select, date |
placeholder |
Nie | string | Tekst zastępczy |
options |
Nie | array | Opcje wyboru dla pól typu select |
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"
Kompletny przykład
Pełny szablon do rekrutacji inżyniera oprogramowania, obejmujący selekcję wstępną, zadanie programistyczne, ocenę zespołową, dwie rundy rozmów kwalifikacyjnych, referencje i ofertę. Aby dodać wynagrodzenie do etapu zadania, należy skonfigurować wypłaty w interfejsie ustawień etapu – patrz Candidate Payouts.
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
- key: notice_period
label: "Notice Period"
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."
fields:
- name: resume
type: file
required: true
- 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: "3-8"
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: 75
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
interviewers_required: 1
- 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."
Wskazówki
- Zaczynaj od
application_form– to naturalny punkt wejścia, który pozwala zebrać CV i podstawowe informacje. - Kończ etapem
offer– utrzymuje porządek w procesie i daje końcowy etap do śledzenia postępów. - Włącz selekcję wstępną w formularzu aplikacyjnym, aby ręcznie przeglądać kandydatów przed przekazaniem dalej. Zapobiega to otrzymywaniu zadań przez nieodpowiednich kandydatów.
- Wynagradzaj za zadania do wykonania w domu – skonfiguruj wypłaty w ustawieniach etapu, aby wynagrodzić kandydatów. Szczegóły w artykule Candidate Payouts.
- Ogranicz proces do maksymalnie 7 etapów – zbyt długie procesy prowadzą do rezygnacji kandydatów.
- Przypisuj recenzentów do etapów team_review i code_assignment, aby odpowiednie osoby były powiadamiane automatycznie.
- Używaj
candidate_descriptionna każdym etapie – kandydaci widzą tę wiadomość, więc jasna komunikacja zmniejsza liczbę nieporozumień i zgłoszeń do działu wsparcia.