## Dlaczego to ważne

Opowiedzieć o stanowisku to minuta. Napisać ogłoszenie to godzina. Pisanie może wziąć na siebie asystent AI: tytuł, treść, przedział wynagrodzenia, etapy i rekomendowane kwalifikacje powstają na twoim koncie jako **szkic**, a na koniec wraca link do edycji. Na stronę kariery nic nie trafi, dopóki człowiek nie kliknie **Opublikuj**.

## Dwa sposoby

| | Asystent w aplikacji | Zewnętrzny klient MCP |
|---|---|---|
| Konfiguracja | Żadna: czat jest na każdej stronie modułu [Rekrutacja](/hiring/job_postings) | Jednorazowe podłączenie: [Podłączanie asystentów AI](/docs/connecting-ai-assistants) |
| Klienci | Własny agent Kit | Claude Code, Claude Desktop, Codex CLI, OpenCode, twój własny |
| Uprawnienia | Administrator Hiring, aktywna subskrypcja | To samo plus `hiring_write` na połączeniu |
| Etapy | Tylko szablon | Szablon **albo** etapy napisane pod to jedno ogłoszenie |
| Edycja szkicu | Tak | Tak |

Oba działają **jako ty**. Żaden nie sięgnie do ogłoszenia, którego sam nie możesz otworzyć, ani nie zrobi czegoś, czego odmówiłby ci formularz w przeglądarce.

## Jedno polecenie, jeden szkic

```
Utwórz szkic ogłoszenia o pracę: Senior Rails Engineer, praca zdalna z Polski,
pełny etat. Etapy weź z naszego szablonu Software Engineer. Zanim wpiszesz
jakiekolwiek liczby, pobierz rynkowy przedział wynagrodzeń. Kontekst: Rails 8,
Hotwire, Postgres; zespół sześciu osób; ta osoba przejmuje obszar płatności
i migrację na Stripe.
```

Co asystent z tym robi:

| Krok | Narzędzie | Efekt |
|------|-----------|-------|
| 1 | `hiring_get_setup_guide` | Stan konta i to, na co pozwala twoja rola. Na koncie bez ogłoszeń zwraca dodatkowo schemat typów etapów |
| 2 | `hiring_list_templates` | Szablony z twojego konta plus systemowe szablony Kit, z liczbą etapów |
| 3 | `compensation_get_salary_benchmark` | Przedział policzony z prawdziwych ofert rynkowych, które indeksuje Kit. Wymaga modułu Compensation Research |
| 4 | `hiring_list_credentials` | Klucze kwalifikacji, które ogłoszenie może rekomendować |
| 5 | `hiring_create_job_posting` | Szkic utworzony. Zwraca identyfikator ogłoszenia i link do jego edycji |

Pomiń krok 3, a model wymyśli wynagrodzenie z pamięci. Poproś o benchmark wprost.

## Daj mu materiał źródłowy

Asystent zna twój stack i twój zespół tylko wtedy, gdy sam mu o nich powiesz. Co podnosi szkic z ogólnika do ogłoszenia, na które ktoś zaaplikuje:

- Ostatnie ogłoszenie, które ci się podobało: wklej je i napisz „ten sam ton, nowe stanowisko”
- Notatki ze spotkania otwierającego rekrutację, bez wygładzania
- Realne ograniczenia zespołu: strefa czasowa, dyżury, górna granica wynagrodzenia, to, co nowa osoba przejmie w pierwszym miesiącu

Treść ogłoszenia musi trzymać się dwóch reguł, o których narzędzia mówią modelowi:

- **Markdown**, nie HTML.
- **Żadnej nazwy stanowiska w treści.** Tytuł renderuje sam Kit, więc zacznij od sekcji „O roli” albo od pierwszej własnej sekcji. Inaczej kandydat przeczyta tytuł dwa razy.

## Etapy: szablon albo lista wprost

`process_template_id` i `stages` wykluczają się wzajemnie. Podanie obu kończy się błędem.

**Szablon.** Identyfikatory pochodzą z `hiring_list_templates`. Asystent, który nie ma konta w Kit, może najpierw przejrzeć publiczny katalog Kit pod adresem `https://startupkit.app/mcp` (bez uwierzytelniania, `list_catalog_templates`).

**Etapy podane wprost** działają tylko w klientach MCP, kiedy proces piszesz pod to jedno ogłoszenie:

```json
"stages": [
  {"name": "Aplikacja", "type": "application_form"},
  {"name": "Zadanie domowe", "type": "portfolio_upload",
   "config": {"payout": {"enabled": true, "amount": 500, "currency": "USD"}}},
  {"name": "Ocena zespołu", "type": "team_review",
   "reviewers": [{"email": "ana@example.com", "role": "lead"}]},
  {"name": "Oferta", "type": "offer"}
]
```

Dziesięć typów: `application_form`, `code_assignment`, `portfolio_upload`, `questionnaire`, `video`, `video_recording`, `team_review`, `live_interview`, `reference_check`, `offer`. Każdy z nich przyjmuje blok `payout`. Adresy e-mail recenzentów muszą już należeć do członków zespołu.

> [!NOTE]
> Szablon buduje etapy **tylko w momencie tworzenia** ogłoszenia. Późniejsza zmiana szablonu nigdy nie dosięgnie ogłoszenia, które już powstało. Trzeba wtedy edytować same etapy.

## Czego AI nie zrobi

- **Nie opublikuje.** Żadne narzędzie w Kit nie wyprowadza ogłoszenia ze szkicu. To świadoma decyzja, nie luka.
- Nie przypisze zespołu rekrutacyjnego ani recenzentów do istniejącego etapu. To robi się w przeglądarce.
- Nie wgra obrazka do udostępniania w mediach społecznościowych (`og_image`). Też w przeglądarce.
- Nie zastosuje ponownie szablonu procesu po utworzeniu ogłoszenia.
- Nie wyczyści kwoty wynagrodzenia ani wartości logicznej. W narzędziach aktualizujących `null` znaczy „zostaw bez zmian”, więc opróżnianie pola należy do interfejsu webowego. Wyjątkiem jest `recommended_credential_keys`, gdzie `[]` czyści listę.

## Poprawianie szkicu

Oba sposoby pozwalają edytować to, co powstało: `hiring_update_job_posting` dla ogłoszenia, `hiring_update_stage` dla pojedynczego etapu.

Utworzenie ogłoszenia wymaga uprawnień **administratora Hiring**, a czat w aplikacji nikomu innemu nawet nie pokaże tego narzędzia. Do edycji wystarczy administrator Hiring **albo** menedżer rekrutacji tego ogłoszenia, więc osoba prowadząca daną rekrutację może dopracowywać ogłoszenie bez uprawnień administratora.

Oba narzędzia działają częściowo: klucze pominięte zostają bez zmian, klucze podane nadpisują wartość. Dwie pułapki, zanim puścisz agenta w pętlę na szkicu:

- **`description` zastępuje całą treść.** Nie ma dopisywania. Niech asystent odczyta ogłoszenie, przepisze je w całości i zapisze z powrotem.
- **Sekcje konfiguracji etapu podmieniają się w całości, bez scalania.** Podanie `config.code_assignment` nadpisuje każdy klucz w tej sekcji, więc wyślij również te klucze, które mają zostać. Jedyną sekcją, która się scala, jest `reference_check`.

Odpowiedź na aktualizację skraca opis do 500 znaków. Żeby sprawdzić pełną treść, odczytaj ją przez `hiring_get_job_posting`.

## Szczegóły, które potrafią zaboleć

**Praca zdalna wymaga kraju.** Przy `remote: true` Kit oznacza ofertę jako `TELECOMMUTE` w danych strukturalnych tylko wtedy, gdy potrafi ustalić kraj: z `applicant_location_country` („Poland”, „United States”), a w drugiej kolejności z pola lokalizacji. Kiedy nie uda się ani jedno, ani drugie, Google Jobs nigdy się nie dowie, że stanowisko jest zdalne.

**Rekomendowane kwalifikacje to zaproszenie i nic więcej.** Klucze pochodzą z `hiring_list_credentials`. Każdy kandydat, który zaaplikuje *po* ich ustawieniu, dostaje jedną wiadomość z prośbą o przesłanie potwierdzenia. Osoby, które zaaplikowały wcześniej, nie dostaną nic. Kit nikogo nie weryfikuje, nie ocenia, nie ustawia w rankingu ani nie filtruje na podstawie tego, co wróci.

**Okres rozliczeniowy i waluta domyślnie to rok i USD.** Jeśli stanowisko nie jest w USA, napisz w poleceniu wprost, o jaką walutę chodzi.

## Zanim opublikujesz

Przeczytaj szkic. Asystent, który pisze o twojej firmie, pisze z tego, co dostał, i z tego, czego się domyślił.

> [!WARNING]
> **Opis dla kandydatów jest publiczny** i renderuje się na stronie kariery każdemu, kto ją odwiedzi. **Opis zadania jest prywatny**, przeczyta go tylko kandydat, który dotarł do tego etapu. Jeśli asystent napisał zadanie domowe z linkiem do zbioru danych, sprawdź, czy link siedzi w opisie zadania. Zobacz [Opis dla kandydatów a opis zadania](/docs/creating-a-job-posting#opis-dla-kandydatów-a-opis-zadania).

## W skrócie

- [ ] Administrator Hiring i aktywna subskrypcja, a przy zewnętrznym kliencie także `hiring_write`
- [ ] Wklej prawdziwy materiał: stare ogłoszenie, notatki ze spotkania otwierającego, ograniczenia
- [ ] Poproś o benchmark wynagrodzeń wprost, zanim padną jakiekolwiek liczby
- [ ] Wybierz szablon albo podaj etapy wprost, z recenzentami wskazanymi po adresie e-mail
- [ ] Sprawdź, czy treść nie powtarza tytułu i brzmi jak twój zespół
- [ ] Upewnij się, że linki do zadania są w **opisie zadania**, a nie w opisie dla kandydatów
- [ ] Przy poufnej rekrutacji ustaw zespół rekrutacyjny w interfejsie webowym
- [ ] Opublikuj ogłoszenie samodzielnie

## Co dalej

- [Tworzenie ogłoszenia o pracę](/docs/creating-a-job-posting) — każde pole, status i ustawienie etapu w interfejsie webowym
- [Agent AI i narzędzia MCP](/docs/hiring-ai-agent-mcp) — reszta zestawu rekrutacyjnego: triaż, oceny, odpowiedzi do kandydatów
- [Podłączanie asystentów AI](/docs/connecting-ai-assistants) — konfiguracja MCP, przepływ OAuth, zakresy
- [Dokumentacja narzędzi MCP](/docs/mcp-tools-reference) — parametry każdego narzędzia