Konfiguracja szablonów procesu rekrutacyjnego
Kompletna dokumentacja konfiguracji szablonów procesu rekrutacyjnego w YAML: typy etapów, opcje konfiguracji, recenzenci i przykłady.
Przegląd
Szablon procesu definiuje etapy, przez które przechodzi kandydat w twoim procesie rekrutacji. Szablon zapisany w YAML zawiera uporządkowaną listę etapów, z których każdy ma typ, nazwę i opcjonalną konfigurację.
Gdy tworzysz ogłoszenie o pracę i wybierasz szablon, etapy są tworzone w kolejności. Kandydaci przechodzą przez nie 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:
candidate_description: "A conversation about your background."
- type: offer
name: "Offer"
Kit sprawdza szablon i jego klucze konfiguracji przy zapisie. Błędnie wpisany lub nieobsługiwany klucz powoduje błąd walidacji, więc literówki są widoczne od razu.
Klucze najwyższego poziomu
| Klucz | Wymagany | Opis |
|---|---|---|
stages |
Tak | Uporządkowana lista definicji etapów (co najmniej jeden) |
name |
Nie | Nazwa szablonu (można ją też ustawić w polu formularza) |
description |
Nie | Opis procesu w formacie Markdown |
tags |
Nie | Lista tagów tekstowych do kategoryzacji |
quick_fields |
Nie | Szybkie pola do zbierania informacji o kandydacie (patrz sekcja Szybkie pola poniżej) |
Klucze etapu
Każdy etap wymaga kluczy 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 obsługiwanych typów etapów wymienionych poniżej |
config |
Nie | Opcje konfiguracji zależne od typu etapu |
reviewers |
Nie | Lista przypisanych recenzentów |
Wynagradzanie kandydatów
Kit tworzy wypłatę na etapach, na których kandydat wysyła rezultat: w próbce pracy, kwestionariuszu, portfolio, zadaniu programistycznym, po obejrzeniu wideo lub przesłaniu nagrania. Dodaj zagnieżdżony blok payout do jednego z tych etapów. Wypłata powstanie po pomyślnym wysłaniu lub ukończeniu rezultatu. Nie konfiguruj wypłat dla ocen, rozmów, referencji, formularzy aplikacji ani ofert. Te etapy nie mają zdarzenia tworzącego wypłatę. Proces kandydata i zespołu finansowego opisują Wypłaty dla kandydatów.
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
enabled |
boolean | false | Włącza wynagrodzenie na tym etapie |
amount |
integer | Brak | Kwota do wypłaty w podanej walucie (np. 250) |
currency |
string | USD | Trzyliterowy kod waluty |
- type: code_assignment
name: "Take-Home Assignment"
config:
candidate_description: "Complete a practical coding exercise."
payout:
enabled: true
amount: 250
currency: USD
Prywatne opisy zadań
candidate_description jest publiczne: pojawia się na stronie ogłoszenia, w galerii szablonów i wiadomościach do kandydata. Właściwe zadanie próbne wraz z linkami umieść w zagnieżdżonym bloku brief. Zobaczy go dopiero kandydat, który dotarł do etapu i rozpoczął zadanie. Używaj go na etapach work_sample. Istniejące etapy portfolio_upload z opisem zadania pozostają obsługiwane; pozostałe typy etapów ignorują ten blok. Zobacz Opis etapu a opis zadania.
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
body |
string | Brak | Treść zadania z ograniczoną obsługą Liquid. Działają tylko zmienne {{ preparation.<key> }}; tagi i filtry Liquid nie są obsługiwane. Wklejone adresy URL stają się linkami w widoku kandydata |
estimated_hours |
integer | Brak | Szacowany nakład pracy pokazywany przed rozpoczęciem (min. 1) |
due_days |
integer | 5 | Liczba dni od rozpoczęcia zadania do terminu (min. 1) |
grace_hours |
integer | 24 | Liczba godzin po terminie, przez które można jeszcze wysłać pliki oznaczone jako spóźnione |
allow_extension |
boolean | false | Jednorazowe samodzielne przedłużenie przed upływem terminu |
extension_hours |
integer | 72 | Długość przedłużenia w godzinach (min. 1) |
requires_preparation |
boolean | false | Blokuje rozpoczęcie zadania, dopóki osoba prowadząca rekrutację nie przygotuje środowiska kandydata |
preparation_fields |
array | [] |
Dane osobne dla każdego kandydata, np. adres środowiska testowego, login lub hasło (zobacz poniżej) |
Każde pole przygotowania ma postać {key, label, field_type, required}. Aby pokazać kandydatowi jego wartość, umieść w treści zadania zmienną {{ preparation.<key> }}. Dane nie pojawiają się automatycznie. field_type przyjmuje text, url, multiline albo secret. Możesz też użyć name zamiast key i type zamiast field_type; odpowiedzi narzędzi zawsze zwracają nazwy key i field_type. Osoba prowadząca rekrutację uzupełnia dane osobno dla każdego kandydata przed zaproszeniem go do rozpoczęcia zadania. Kandydat widzi tylko własne wartości.
- type: work_sample
name: "Paid Test Project"
config:
candidate_description: "A short paid exercise, roughly half a day of work."
brief:
body: |
Your test shop: {{ preparation.shop_url }}
Username: {{ preparation.shop_login }}
Password: {{ preparation.shop_password }}
Retouch the five sample images in the shop and submit web-ready JPEGs
plus your layered file.
estimated_hours: 4
due_days: 5
grace_hours: 24
allow_extension: true
requires_preparation: true
preparation_fields:
- key: shop_url
label: Test shop URL
field_type: url
required: true
- key: shop_login
label: Login
field_type: text
required: true
- key: shop_password
label: Password
field_type: secret
required: true
payout:
enabled: true
amount: 150
currency: PLN
Nie istnieje płaski wariant tych kluczy. brief jest zawsze zagnieżdżone, dlatego jego estimated_hours i allow_extension nie kolidują z kluczami o tych samych nazwach w code_assignment.
Przy zmianie samych pól środowiska przez MCP użyj hiring_update_stage_preparation. Narzędzie zachowuje treść prywatnego zadania, szacowany nakład pracy i terminy.
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 na etapie przeglądu wstępnego przed przekazaniem dalej.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
screening_enabled |
boolean | true | Wstrzymuje aplikacje do ręcznej weryfikacji przed przekazaniem dalej. Włączone domyślnie: ustaw wprost na false, żeby wyłączyć przegląd wstępny |
screening_message |
string | Brak | Wiadomość wyświetlana kandydatom, gdy przegląd wstępny jest aktywny |
resume_required |
boolean | false | Wymagaj CV: kandydaci nie mogą wysłać aplikacji bez załączenia pliku PDF lub dokumentu Word (maks. 10 MB) |
fields |
array | Brak | 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: sprawdzane przy wysyłce aplikacji na każdej ścieżce aplikowania, także przez publiczne API |
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
|
Ważne: Żeby wymagać CV, ustaw
resume_required: truew konfiguracji etapu. Pole formularza o nazwieresumejest ignorowane. CV ma w formularzu aplikacyjnym własne pole przesyłania pliku i jest załączane niezależnie od pól niestandardowych, więc deklaracja- name: resumeztype: fileirequired: truenie daje żadnego efektu.
- 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
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.
Ważne: Repozytorium podane w
github_templatemusi być oznaczone na GitHubie jako szablon. Wymagania i instrukcje konfiguracji znajdziesz w artykule Konfiguracja szablonowego repozytorium GitHub.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
github_template |
string | Brak | Repozytorium szablonu GitHub (np. org/hiring-assignment) |
duration_days |
integer | 7 | Liczba dni na wykonanie (min: 1) |
estimated_hours |
integer | Brak | Szacowany nakład pracy w godzinach (np. 5) |
instructions |
string | Brak | Instrukcje dodawane commitem do repozytorium kandydata |
grace_period_hours |
integer | 24 | Ile godzin po terminie przesłane zadania są jeszcze przyjmowane, zanim termin stanie się ostateczny |
allow_extension |
boolean | true | Kandydaci mogą poprosić o przedłużenie terminu |
Żeby zapłacić kandydatom za zadanie, dodaj blok payout. Zobacz sekcję Wynagradzanie kandydatów powyżej. Starsze klucze paid, payment_amount i payment_currency są nadal akceptowane na etapie code_assignment i zamieniane na równoważną wypłatę, ale w nowych szablonach używaj 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
work_sample
Kandydat wykonuje konkretne zadanie związane z rolą i przesyła wynik. W odróżnieniu od portfolio praca powstaje na potrzeby tej rekrutacji. Prywatny opis zadania (brief) jest wymagany. Może określać termin, jednorazowe samodzielne przedłużenie, dane przygotowane osobno dla kandydata i wynagrodzenie. Przypisz oceniających, jeśli przesłana praca ma pozostać w ocenie do czasu wypełnienia wszystkich kart.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Publiczne oczekiwania widoczne przed dotarciem do etapu; właściwe zadanie umieść w brief
|
accept |
array | pdf, png, jpg, jpeg, gif, webp |
Dozwolone rozszerzenia bez początkowej kropki; obsługiwane są też doc, docx, ppt, pptx, zip, mp4, mov, webm, tiff, tif i psd
|
max_files |
integer | 10 | Maksymalna liczba plików (od 1 do 50) |
max_file_size_mb |
integer | 25 | Maksymalny rozmiar pojedynczego pliku w MB (od 1 do 100) |
allow_links |
boolean | true | Kandydaci mogą też przesyłać linki zewnętrzne |
- type: work_sample
name: "Paid Customer Reply Exercise"
config:
candidate_description: "Complete a short, paid support exercise."
brief:
body: "Draft replies to the three customer scenarios in the attached packet."
estimated_hours: 2
due_days: 4
allow_extension: true
accept:
- pdf
max_files: 3
payout:
enabled: true
amount: 100
currency: USD
portfolio_upload
Kandydaci przesyłają wcześniej wykonane prace, np. projekty lub teksty. Możesz ograniczyć typy, liczbę i rozmiary plików oraz zezwolić na linki zewnętrzne. Istniejące etapy z blokiem brief pozostają zgodne; w nowych zadaniach próbnych używaj work_sample, aby kandydat od razu rozumiał różnicę między tymi prośbami.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
accept |
array | pdf, png, jpg, jpeg, gif, webp |
Dozwolone rozszerzenia plików, bez początkowej kropki. Kit rozpoznaje też doc, docx, ppt, pptx, zip, mp4, mov, webm, tiff, tif i psd; wymień je w konfiguracji, jeśli chcesz przyjmować takie pliki. Nieznane rozszerzenia są pomijane |
max_files |
integer | 10 | Maksymalna liczba plików (min: 1) |
max_file_size_mb |
integer | 25 | Maksymalny rozmiar pojedynczego pliku w MB |
allow_links |
boolean | true | Kandydaci mogą też przesyłać linki zewnętrzne (np. Figma, 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
Pytania pisemne, na które kandydaci odpowiadają asynchronicznie. Sprawdzą się przy pytaniach o konkretne sytuacje w obsłudze klienta i sprzedaży oraz przy sprawdzaniu umiejętności pisania.
Kwestionariusz może opcjonalnie mieć recenzentów. Bez nich przesłanie wymaganych odpowiedzi normalnie kończy etap. Gdy przypiszesz recenzentów, wysłanie odpowiedzi ich powiadomi, a kandydat pozostanie na etapie, dopóki każda przypisana osoba nie prześle karty oceny.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
questions |
array | Brak | Lista definicji pytań |
duration_days |
integer | Brak | Sugerowana liczba dni na odpowiedź: widoczna tylko w podglądzie szablonu, nie jest egzekwowana |
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.
Ustawienia wideo są zgrupowane pod zagnieżdżonym kluczem video wewnątrz config.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
video |
hash | Brak | Ustawienia wideo (zobacz poniżej) |
Opcje video:
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
source_type |
string | mux |
mux (przesłany) lub oembed (osadzenie zewnętrzne) |
oembed_url |
string | Brak | URL osadzonego filmu (gdy źródłem jest oembed) |
description |
string | Brak | Opis lub kontekst filmu |
min_watch_percentage |
integer | 15 | 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
oembed_url: "https://www.youtube.com/watch?v=example"
description: "A 5-minute overview of our engineering team."
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.
Ustawienia nagrywania są zgrupowane pod zagnieżdżonym kluczem video_recording wewnątrz config.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
video_recording |
hash | Brak | Ustawienia nagrywania (zobacz poniżej) |
Opcje video_recording:
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
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 | Brak | Liczba dozwolonych ponownych nagrań (puste = bez limitu) |
- 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
Wewnętrzny etap oceny, na którym twój zespół ocenia kandydata. Obsługuje progi głosowania i zasady weta.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Wiadomość wyświetlana kandydatowi na tym etapie |
voting |
hash | Brak | Konfiguracja głosowania (patrz poniżej) |
Opcje głosowania:
| Klucz | Typ | Domyślnie | Opis |
|---|---|---|---|
threshold |
integer | 2 | Minimalna liczba głosów „tak”, żeby przejść 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
Rozmowa kwalifikacyjna na żywo, przez wideo lub osobiście. Możesz zaplanować ją z użyciem integracji z kalendarzem.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
provider |
string | native |
Kto zarządza terminami: native (dostępność w Kit), calendly lub cal_com
|
duration_minutes |
integer | 60 | Długość rozmowy w minutach (min: 15) |
interviewers_required |
integer | 1 | Liczba prowadzących, którzy muszą wziąć udział (min: 1). Powyżej 1 pokazywane są tylko terminy, w których tyle osób jest wolnych jednocześnie |
includes_roleplay |
boolean | false | Rozmowa obejmuje ćwiczenie z odgrywaniem ról |
- type: live_interview
name: "Technical Interview"
config:
candidate_description: "A conversation about your technical skills."
duration_minutes: 90
interviewers_required: 2
reference_check
Zbieranie referencji przez portal kandydata. Kandydat wskazuje osoby referencyjne, widzi dokładny zestaw pytań i wyraża zgodę na kontakt. Kit czeka na skonfigurowaną liczbę pełnych odpowiedzi, zanim referencje będą gotowe do oceny przez zespół.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Instrukcje wyświetlane kandydatowi |
references_required |
integer | 2 | Liczba ukończonych odpowiedzi potrzebnych do zakończenia etapu (1–5) |
collection_enabled |
boolean | false | Prosi kandydata o wskazanie osób referencyjnych w jego portalu |
require_manager |
boolean | true | Wymaga, aby co najmniej jedna wskazana osoba była przełożonym |
allow_manual_send |
boolean | true | Gdy wartość wynosi true, Kit próbuje użyć zweryfikowanego nadawcy referencji konta i w razie potrzeby przechodzi na adres platformy. Przy false zawsze korzysta z adresu platformy. W obu przypadkach prośby wysyła Kit |
- type: reference_check
name: "References"
config:
candidate_description: "Provide contact details for your references."
collection_enabled: true
references_required: 2
require_manager: true
allow_manual_send: true
Zobacz Prowadzenie weryfikacji referencji, aby poznać zgodę, wysyłkę, przypomnienia, odpowiedzi osób referencyjnych i ocenę zespołu.
offer
Ostatni etap, na którym składasz kandydatowi ofertę. Zazwyczaj wymaga minimalnej konfiguracji.
| Klucz konfiguracji | Typ | Domyślnie | Opis |
|---|---|---|---|
candidate_description |
string | Brak | Wiadomość wyświetlana kandydatowi |
- type: offer
name: "Offer"
config:
candidate_description: "We'd love to have you join the team."
Recenzenci
Możesz przypisać recenzentów do etapów oceny, w tym kwestionariuszy. Każdy recenzent potrzebuje adresu e-mail i roli. Kwestionariusz zaczyna wymagać oceny dopiero po przypisaniu co najmniej jednej osoby.
| Klucz | Wymagany | Opis |
|---|---|---|
email |
Tak | Adres e-mail recenzenta (musi odpowiadać członkowi zespołu) |
role |
Tak |
reviewer (standardowy) lub lead (główny decydent) |
Jeśli przypisana osoba nigdy wcześniej nie oceniała w Kit, może dostać jednorazowy e-mail wyjaśniający etap i sposób oceniania. Przy ograniczonym ogłoszeniu musi być administratorem modułu Rekrutacja albo członkiem zespołu tego ogłoszenia, żeby link do oceny nigdy nie prowadził do strony bez dostępu.
- 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 definiują ustrukturyzowane metadane, które twój zespół zbiera dla każdego kandydata, takie jak oczekiwania płacowe, dostępność, preferencje lokalizacyjne czy inne informacje ważne dla danego stanowiska. Pola pojawiają się w panelu bocznym kandydata.
Instrukcje zarządzania definicjami pól bezpośrednio w interfejsie znajdziesz w artykule Pola danych kandydata.
Schemat
| Klucz | Wymagany | Typ | Opis |
|---|---|---|---|
key |
Tak | string | Unikalny identyfikator (małe litery, wyrazy oddzielone podkreśleniami, np. salary_expectation) |
label |
Tak | string | Wyświetlana etykieta widoczna dla zespołu |
field_type |
Nie | string | Jeden z 4 typów pól wymienionych poniżej (domyślnie: text) |
placeholder |
Nie | string | Tekst zastępczy dla pola |
options |
Nie | array | Opcje wyboru dla pól typu select
|
Uwaga: Dodatkowe typy pól i opcje, takie jak liczby, oceny, ekstrakcja AI i reguły widoczności, konfiguruje się w
metafield_definitions, osobnym kluczu najwyższego poziomu. Zobacz Pola danych kandydata.
Typy pól
| Typ | Opis |
|---|---|
text |
Jednowierszowe pole tekstowe |
textarea |
Wielowierszowe pole tekstowe |
select |
Lista rozwijana z ustalonego zbioru opcji |
date |
Wybór daty |
Przykłady
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..."
Kompletny przykład
Pełny szablon do rekrutacji inżyniera oprogramowania, obejmujący przegląd wstępny, płatne zadanie programistyczne, ocenę zespołu, dwie rundy rozmów kwalifikacyjnych, referencje i ofertę.
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."
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 rekrutacji i daje końcowy etap do śledzenia postępów. - Korzystaj z przeglądu wstępnego w formularzu aplikacyjnym, żeby ocenić aplikacje przed przejściem do następnego etapu i wysłać zadanie dopiero po tej ocenie.
-
Płać za zadania do wykonania w domu: dodaj blok
payoutdo etapu z przesłaniem rezultatu, który tworzy wypłatę, na przykładwork_samplelubcode_assignment. Zobacz Wypłaty dla kandydatów. - Staraj się zmieścić w 7 etapach. Każdy kolejny wymaga od kandydata więcej czasu. Dodaj go, jeśli pozwoli zebrać informacje potrzebne do decyzji.
- Przypisuj recenzentów do etapów team_review, code_assignment oraz kwestionariuszy ocenianych przez zespół, żeby właściwe 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. -
Właściwe zadanie umieść w
brief: instrukcje, linki do plików i wszystko, czego nie chcesz pokazywać na publicznej stronie ogłoszenia. Zobacz Prywatne opisy zadań. -
Zbieraj przydatne informacje za pomocą
quick_fields: dodaj pola takie jak oczekiwania płacowe, dostępność i lokalizacja, żeby zespół spójnie zapisywał je w panelu bocznym kandydata. -
Potrzebujesz dodatkowych typów pól lub ekstrakcji AI?: liczby, oceny, automatyczne uzupełnianie przez AI i reguły widoczności znajdują się w
metafield_definitions. Zobacz Pola danych kandydata.