Analýza HR procesu

Denisa Košutová
11 min readDec 1, 2019

--

Analýza recruitment procesu v Kiwi.com s ohledem na úspěšnost a kvalitu kandidátů jdoucích z komunitních eventů

V rámci závěrečného projektu Digitální akademie pořádané Czechitas jsem dostala příležitost k analýze HR dat z Kiwi.com. Těmito daty disponovala moje dvojička Pavlína Schuster, která zde pracuje na oddělení Employer Brandingu. Uvítala jsem možnost pracovat na datech, které jsem doposud neznala. Navíc se v rámci projektu nabízel prostor pro přinesení nových informací o recruitment procesu v Kiwi.com, který doposud nebyl v této oblasti analyzován.

Pořádání komunitních eventů je součástí náborové strategie v Kiwi.com již přes tři roky. Jen v roce 2018 bylo zorganizováno přes 160 eventů. Náš projekt vychází z dat customer relationship management (CRM) systému Beamery a applicant tracking system (ATS) Jobvite. Beamery poskytuje přehled o účastnících pořádaných akcí. V Jobvite jsou evidovány všechny přihlášky kandidátů hlásící se na jednotlivé pozice ve firmě. Z této databáze máme k dispozici data obsahující přihlášky kandidátů, kteří projevili zájem o některou z pozic v Engineeringu. Komunitní eventy mají za cíl přivést kvalitní kandidáty z řad developerů, právě do toho oddělení.

Oba datasety propojíme za účelem zmapování cesty kandidáta s ohledem na četnost a především kvalitu kandidátů jdoucích z komunitních eventů.

Vysvětlení pojmů

Naše data vycházejí z aplikací s rozhraním v angličtině, proto některé výrazy budu i v rámci tohoto příspěvku uvádět pod anglickými názvy. Stejně tak i výstup v podobě dashboardů v Power BI jsou v angličtině.

Recruitment proces - náborový proces nových zaměstnanců realizovaný HR oddělením

Hiring proces - jednotlivé fáze recruitment procesu. Zjednodušený model: New (nový) — Phone Screen (telefonní kontakt) — 1st Interview and 2nd Interview (1. a 2. pohovor) — Hired (kandidát přijat)

Employer Branding Team (dříve Comunnity Team) - oddělení organizující komunitní eventy

Komunitní event - meetup, konference, vzdělávací víkend, workshop atd…, cílem těchto eventů je (mimo jiné) vytvoření komunity kvalitních developerů

Engineering - oddělení do kterého mají komunitní eventy za cíl získat kvalitní kandidáty

Kontakt - člověk, který se účastnil komunitního eventu, evidence v systému Beamery

Kandidát - člověk, který vstoupil do recruitment procesu, evidence v systému Jobvite

Kandidát z eventu alias zdroj Events - člověk, který se účastnil některého z eventu a následně se ucházel o pozici v Engineeringu

Cíle aneb když KPI není sprosté slovo

Během prvních setkání jsme si s Pavlínou nadefinovaly cíle našeho projektu a k nim odpovídající KPI. Vodítkem nám byly podněty, které jsme měli z oddělení HR a také Employer brandingu (dříve Community Team).

Přímá a nepřímá konverze kandidátů z eventů

  • KPI : Porovnání počtu kandidátů evidovaných v Jobvite jako zdroj Events, s reálným počtem kandidátů, kteří se dle Beamery eventu zúčastnili

Jak úspěšný náborový nástroj komunitní eventy jsou?

  • KPI : Procento získaných kandidátů z eventů
  • KPI : Porovnání délky trvání náborového procesu s ohledem na kandidáty z eventů

Kvalita kandidátů z komunitních eventů

  • KPI : Procento kandidátů, kteří byli na eventu a v náborovém procesu úspěšně projdou fází Phone Screen do dalšího kola
  • KPI : Procento kandidátů, kteří došli úspěšně až do fáze Hired

Čím více navštívených eventů, tím kvalitnější kandidát?

  • KPI : Průměrný počet navštívených eventů účastníkem

Vizualizace

  • Cílem ve vizualizacích bude připravení dashboardů, které budou odpovídat na definované KPI, budou dynamické a budou umožňovat nahrávání nových aktualizovaných dat
  • Dále chceme vizualizovat tzv. FLOW neboli cestu kandidátů, tak jak procházeli jednotlivými fázemi náborového procesu

A jdeme na to!

Než jsme se dočkaly datasetů věnovaly jsme s Pavlínou naši pozornost vytvoření datového modelu. Počet sledovaných charakteristik v systémech Jobvite a Beamery je objemný a tak tento krok hodnotím jako přínosný zvláště pro nadefinování atributů, které budou pro zjištění našich cílů opravdu relevantní.

Vznikl tak náš první datový model a první představy o tom, jak budeme naše data transformovat a optimalizovat pro účely získaní odpovědí.

Velmi děkuji za možnost práce na obrovských white boardech v prostorech Kiwi.com. Jednak jsem měla možnost projít se krásné kanceláře Kiwi.com a hlavně, tady se ten model tvořil skoro sám 😊.

Pocity jsme měly dobré a už jsme se těšily na první “opravdovou” práci s daty.

A pak přišly datasety!

Z původních dvou slíbených datasetů jsme koukaly do složky s více než 80 tabulkami a přemýšlely, kde začneme. Větší počet tabulek byl způsoben složitějším exportem dat z Beamery. Abychom nepřišly o informaci na jakém eventu účastníci byli, musely se vyexportovat data pro každý jednotlivý event zvlášť. Přišly jsme tedy na první užitečné zjištění:

Způsob zadávání informace o účasti na eventu do Beamery není optimální, bylo by vhodné zvolit jinou cestu, jak tuto informaci do systému uvádět, aby se data mohla v budoucnu jednodušeji exportovat a tedy i analyzovat.

Po sjednocení datasetu pomocí hromadného exportu do POWER BI (opravdu děkuji za tuto funkcionalitu) a po prvních rozpacích během Hackathonu jsme vytvořily v Power BI datový model. Jako klíčové se ukázalo sjednotit model pomocí přemosťující tabulky mezi Beamery a Jobvite. Jinak bychom byly odkázány na vazbu Many : Many. Původní záměr vyčlenit Hiring proces do vlastní tabulky s vytvořením vazby 1:1 jsme po konzultaci s lektory Lenkou Kmeťovou a Adélkou Krátkou nezrealizovaly.

Máme definované cíle, vytvořený datový model a připravená data, tak hurá do analyzování!

Jako hlavní nástroj pro získání odpovědí jsem zvolila Power BI. Data se v něm dobře čistí, transformují a hlavně krásně vizualizují. Jako validizační nástroj jsem si zvolila SQL, ve kterém jsem si nápočty a zjištění ověřovala. Moje dvojička Pavlína se s chutí vrhla do analyzování dat v Pythonu.

Výhodou „specializace“ každé z nás byla validizace zjištění hned na několika úrovních. A že jsme se ve výsledcích často rozcházely! Nebudu mluvit snad jen za sebe, když uvedu, že porovnání výsledků bylo obrovsky přínosné pro uvědomění si důležitosti použité logiky a postupu aplikované na datech.

Výstupy analýz

V POWER BI jsem vytvořila 2 přehledné dashboardy, které jsou primárně určené pro Employer Branding Team, nicméně budou přínosné i pro HR oddělení. Vzhledem k dohodnuté NDA s Kiwi.com budou v tomto blogu uváděna procenta, poměry a podíly. V případě uvedení konkrétních počtů je toto zveřejnění odsouhlaseno v Kiwi.com. Je důležité upozornit, že naše zdrojová data, použita pro výstupy, jsou nekompletní! Finální výstupy budou k dipozici pro Kiwi.com až po nahrání kompletního datasetu do připravených dashboardů.

Jako velmi užitečné - a na co jsem patřičně hrdá - se ukázalo vytvoření si vlastního tématu v Power BI. Vytvořila jsem skript v JSON, ve kterém jsem definovala barvy, které Kiwi používá jako firemní. Vedle barev jsem naformátovala také písmo. Práce na vizualizacích se takto výrazně ulehčila. S výsledky barevné a textové automatizace u vizualizací jsem opravdu spokojená. Manuální zásahy do vizualizací nad rámec skriptu byly následně minimální - palec nahoru 😉.

{
"name": "Kiwi_color",
"dataColors": ["#00A991", "#007F6D", "#005C4E", "#BAC7D5", "#5F738C", "#252A31", "#28A138", "#2D7738", "#235C2B"],
"background":"#FFFFFF",
"foreground": "#005C4E",
"tableAccent": "#005C4E",
"visualStyles":{
"*": {
"*": {
"*": [{
"fontColor": { "solid": { "color": "#00453B" } },
"fontSize": 11
}]
}
}
}
}

Přímá a nepřímá konverze kandidátů z eventů

  • KPI : Porovnání počtu kandidátů evidovaných v Jobvite jako zdroj Events, s reálným počtem kandidátů, kteří se dle Beamery eventu zúčastnili.

V Jobvite se u každého kandidáta eviduje zdroj, ze kterého tento kandidát „vplul“ do náborového procesu. Většinou se tento zdroj generuje automaticky podle způsobu reakce kandidáta na vypsanou pracovní pozici. V praxi je pak běžné, že kandidát, se kterým bylo Kiwi.com již v kontaktu formou nějakého eventu, se po této zkušenosti přihlásí na pracovní pozici prostřednictvím náborové stránky, pracovního portálu, atd. Dochází tak ke zkreslení a ztrátě cenné informace o tom, že se jedná o kandidáta, který prošel eventem a Kiwi.com s ním pracovalo již v minulosti.

V námi sledovaném časovém období bylo v Jobvite označeno správně 70% kandidátů jdoucích z komunitních eventů = přímá konverze (direct conversion). U 30% kandidátů došlo ke ztrátě informace, že se jedná o kandidáty jdoucích z eventů. Tyto kandidáty označujeme jako nepřímou konverzi (indirect conversion).

Celkem 30 % kandidátů z eventů má v Jobvite uvedený špatný zdroj

V náhledové vizualizaci je správně označených 87 kandidátů, pokud k tomuto souboru osob připočítáme osoby s nepřímou konverzí máme dohromady 143 kandidátů, který mají zkušenost z Eventu a staly se kandidáty. Graf také zobrazuje informaci o celkovém počtu podaných přihlášek těchto kandidátů - v našem náhledu je to 207 žádostí.

V našich datech bylo identifikováno určité procento případů, kdy je kandidát z eventu evidován v Jobvite, ale v Beamery záznam nemá. Tato chyba je způsobena analýzou nekompletních dat — to vysvětluje také zdánlivě špatný výpočet procent uváděných výše. My jsme si však tyto osoby identifikovaly a pro účely výpočtu procenta přímé a nepřímé konverze je z výpočtu vyčlenily.

Jsem si vědoma složitosti tohoto výstupu, proto jsem u grafu do dashboardu zahrnula info panel, kde jsou zobrazené hodnoty vysvětleny.

V dalších analýzách již pracuji se všemi kandidáty, u kterých jsme zdroj Events identifikovali na základě přímé a nepřímé konverze a opravily.

Jak úspěšný náborový nástroj komunitní eventy jsou?

  • KPI : Procento získaných kandidátů z eventů

Celkově je kandidátů z komunitních eventů na pozice do engineeringu přes 2,5%. Jak jsou ale tito kandidáti kvalitní oproti jiným zdrojům? Jak již dokázaly Lucie Chladová a Lucie Kloubková ve svém Czechitas projektu Analýza Recruitment procesu v Kiwi.com : Existují v recruitment procesu zdroje, které pouze chrlí zástupy nekvalitních kandidátů.

Jak si tedy takový kandidát z eventu vede v náborovém procesu? Ve funnelu níže máme porovnány kandidáty z eventů (zvýrazněné) oproti celkovému průměru, podle toho jak si vedli v náborovém procesu. V jednotlivých kategoriích je uvedeno % kandidátů, kteří v dané fázi náborového procesu skončili a již nepokračovali dále.

V případě kandidátů jdoucích z eventů je výrazně nižší procento uchazečů, kteří skončili již ve fázi Screened tedy, když si HR přečte životopis a rozhodne se kandidáta nekontaktovat.

Snad nejprůkaznější je procento zaměstnaných kandidátů. Oproti průměru, který je 5%, je kandidátů z eventů úspěšných přes 13%!

  • KPI : Porovnání délky trvání náborového procesu s ohledem na kandidáty z eventů

Jako další KPI, které nám má ukázat kvalitu kandidátů jsme si nadefinovaly délku náborového procesu od fáze NEW, kdy kandidát o pozici zažádá, do fáze HIRED, kdy je zaměstnán. Vycházely jsme z předpokladu, že čím rychlejší je náborový proces, tím méně času s kandidátem stráví HR oddělení a tím rychleji se navrátí investice vložená do účastníků eventů.

Tento předpoklad se u námi sledovaných dat nepotvrdil.

Kvalita kandidátů z komunitních eventů

  • KPI: Procento kandidátů, kteří byli na eventu a v náborovém procesu úspěšně projdou fází Phone Screen do dalšího kola
  • KPI: Procento kandidátů, kteří došli úspěšně až do fáze Hired

Úspěšnost absolvování telefonického pohovoru s HR byla u kandidátů z eventů téměř 50%, u jiných zdrojů byla tato úspěšnost pouze 23%

Celkově byli kandidáti z eventů úspěšní a tedy přijatí z 13%, průměr u ostatních skupin (vyjma kandidátů z eventů) byl pod 5%.

Čím více navštívených eventů, tím kvalitnější kandidát

  • KPI: Průměrný počet navštívených eventů účastníkem

Průměrný počet navštívených eventů jedním člověkem byl v našich datech 1,08. Počty případů, kdy člověk navštívil více než jeden Event byli v námi sledovaných datech příliš nízké. Další analýzy jsme se po tomto zjištění rozhodly nesledovat.

Vizualizace FLOW kandidátů v HR procesu

Od prvního kontaktu s daty jsme byly nadšené pro myšlenku vizualizace cesty kandidátů jednotlivými náborovými fázemi. V rámci našeho projektu se jednalo asi o nejproblematičtější část. S pomocí lektora Jana Dupala (díky Honzo 😉 ) jsme rozklíčovali logiku grafu typu FLOW, který jsme si zvolily jako “ten pravý“ . Naše data jsme následně díky mé úžasné dvojičce Pavlíně v Pythonu přeformátovaly, aby se grafu (s krásným názvem Sankey chart) líbila. Bohužel po překlopení dat a vytvoření vizualizace výsledek vypadal asi takto:

Očekávání versus realita

Moje prvotní představa:

A realita v Power BI:

„No chtěli jsme to sice trochu jinak, ale tak to neva, když změníme barvy, tak to bude pěkné, ne?“ … „Aha ony se nedají změnit ani barvy kategorií? A jak nastavím, která kategorie bude nahoře a která pod ní? To bude podle abecedy … tak není, a co kdybychom tam přidaly před kategorie čísla a seskupíme to vzestupně — tak ani tahle to nevyšlo, ach jo.“

Snad první věc, která není u POWER BI moc “vychytaná“. Jinak Power BI miluji, je to moje láska na první pohled. Ale tohle se jim fakt nepovedlo.

Zkouším tedy Tableau. Bohužel — Sankey Chart není v základní verzi, pouze v té placené - slepá ulička…

Ale nevěšme hlavu prý to jde vizualizovat i nějak v Javascriptu a náš mentor Javascript umí - YES. Tímto bych chtěla poděkovat našemu mentorovi Tomovi Bončovi, který sice nemá moc zkušeností s POWER BI, zato rozumí programování a to se nám právě hodilo.

Po pár užitečných radách jsem nakonec vytvořila tento skript :

<html>
<body>
<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script><div id="sankey multiple" style="width: 900px; height: 300px;"></div><script type="text/javascript">
google.charts.load("current", {packages:["sankey"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'From');
data.addColumn('string', 'To');
data.addColumn('number', 'Weight');
data.addRows([
*
*
*
*
*
*
]);
var options = {
height: 400,
width: 1000,
sankey: {
link: { color: { fill: '#00A991' }, },
node: { colors: [ '#252A31'],
label: { color: '#005C4E' },
fontSize: 14,
bold: true, },
}
};
var chart = new google.visualization.Sankey(document.getElementById('sankey multiple'));
chart.draw(data, options);
}
</script>
</body>
</html>

… a stala se tak hrdou mámou tohoto krasavce

Kategorie jsou interaktivní, po najetí kurzoru na daný „proud“ se ukáže počet případů. Funkcionality jsou tedy stejné jako Sankey chart v POWER BI. YES!

V jednotlivých proudech jsou vidět počty kandidátů, kteří z dané fáze nepokračují dále, počty případů, kdy kandidáti „přeskakují“ některé fáze, a samozřejmě počty případů, kdy kandidáti úspěšně procházejí jednotlivými fázemi až do fáze Hired.

Nepříjemným limitem Sankey Chartu je, že nese informace pouze v zadaných úsecích, dávám si tedy jako výzvu do budoucna najít vizualizaci, která by uměla nést informaci od počátku až do jejího konce.

Přínos projektu

V analyzovaných datech se nám podařilo potvrdit, že Eventy jsou úspěšný hiringový nástroj a přivádí kvalitní a relevantní kandidáty. Zpracované analýzy zcela jistě pomohou ke zkvalitnění HR procesu.

Velmi oceňuji komplexitu nástrojů, které jsem nakonec mohla v rámci závěrečného projektu DA využít. Excel, tajemný CSV formát, úžasné Power BI a následné verifikace ve věcném SQL. Jako největší osobní přínos hodnotím vyzkoušení si programování při tvorbě Power BI tématu ve formátu JSON a vytvoření vizualizace Sankey chart ve formátu HTML. Velmi zajímavá a obohacující byla konfrontace zjištění s Pavlínou, která zvolila cestu analýzy v Pythonu.

Že by to projektem v DA teprve vše začínalo?

Velké díky patří mé dvojičce Pavlíně Schuster, která byla užitečnou spojkou mezi Kiwi a naším projektem. Její pojetí našeho projektu si můžete přečíst zde. Velmi oceňuji její snahu ukázat mi, že Python je opravdu užitečný nástroj. Dále chci poděkovat našemu mentorovi Tomášovi Bončovi, že si udělal prostor a i ve 21hod v pátek večer nám byl ochotný číst zprávy a dokonce odpovídat. Díky samozřejmě patří také lektorům, mentorům a vlastně celému týmu Czechitas, že nám tento zážitek umožnil - někdy to bylo opravdu vydatné.

A největší díky patří samozřejmě mé rodině. Manžel mi byl silnou podporou a jeho pomoc s dětmi byla pro mou účast na akademii doslova klíčová. A děkuji také mým trpělivým dětem, které na chvíli tak trochu ztratily mámu…

… a někdy se i snažily pomáhat 😊.

--

--