IN LIST COLUMNS Cases from an Online Recruitment Platform Omayma - - PowerPoint PPT Presentation

in list columns
SMART_READER_LITE
LIVE PREVIEW

IN LIST COLUMNS Cases from an Online Recruitment Platform Omayma - - PowerPoint PPT Presentation

FITTING HUMANS STORIES IN LIST COLUMNS Cases from an Online Recruitment Platform Omayma Said @OmaymaS The Leading Job Site in EGYPT 19 th Century Adolphe Quetelet 19 th Century THE AVERAGE MAN (Lhomme Moyen) Adolphe Quetelet THE


slide-1
SLIDE 1

FITTING HUMANS STORIES IN LIST COLUMNS

Cases from an Online Recruitment Platform

Omayma Said

@OmaymaS

slide-2
SLIDE 2

The Leading Job Site in EGYPT

slide-3
SLIDE 3

19th

Century

Adolphe Quetelet

slide-4
SLIDE 4

THE AVERAGE MAN

(L’homme Moyen)

19th Century

Adolphe Quetelet

slide-5
SLIDE 5

THE AVERAGE MAN

Physical

Weight, Height

(Body Mass Index)

slide-6
SLIDE 6

THE AVERAGE MAN

Social

Marriage

slide-7
SLIDE 7

The AVERAGE MAN

Moral

Crimes

slide-8
SLIDE 8

PERFECTION

THE AVERAGE MAN

=

For Quetelet

slide-9
SLIDE 9

If an individual at any given epoch of society possessed all the qualities of the AVERAGE MAN, he would represent all that is great, good, or beautiful.

“ ”

Adolphe Quetelet

slide-10
SLIDE 10

Who Is The “AVERAGE MAN” in Your Society?

slide-11
SLIDE 11

Are You Just a Deviant from The “AVERAGE MAN” ?

slide-12
SLIDE 12

Many Disagree !

slide-13
SLIDE 13

Now...

slide-14
SLIDE 14

Now...

Tremendous Growth of Data

slide-15
SLIDE 15

Misuse of

SUMMARY

STATISTICS

slide-16
SLIDE 16

Misuse of

SUMMARY

STATISTICS

slide-17
SLIDE 17
slide-18
SLIDE 18

Misuse of

SUMMARY

STATISTICS

slide-19
SLIDE 19
slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22

The Leading Job Site in EGYPT

slide-23
SLIDE 23
slide-24
SLIDE 24

What Do We Optimize For? Quality Quantity Relevance

Matching Jobs & Job Seekers

slide-25
SLIDE 25

Let’s talk about DATA

KPIs METRICS

slide-26
SLIDE 26

“The average job seeker applies for N jobs per month”

Me:

slide-27
SLIDE 27

“The average number of applications per job this month is GREAT”

Me:

slide-28
SLIDE 28

What AVERAGE Do You Measure?

slide-29
SLIDE 29

Who is The

AVERAGE

Job Seeker?

slide-30
SLIDE 30

Can We Tell Better STORIES About Our Users?

slide-31
SLIDE 31
slide-32
SLIDE 32

Effective Data Analysis Contextual Understanding +

We can tell better stories with….

slide-33
SLIDE 33

Effective Data Analysis

Contextual Understanding

Culture Socioeconomic Status Market Dynamics

+

slide-34
SLIDE 34

Effective Data Analysis

Contextual Understanding

Mindset Workflow Framework/Tools

+

slide-35
SLIDE 35

Effective Data Analysis

Mindset Workflow Framework/Tools

+

Contextual Understanding

Culture Socioeconomic Status Market Dynamics

slide-36
SLIDE 36

Effective Data Analysis Effective Data Analysis Contextual Understanding Contextual Understanding

Better Stories

=

+

slide-37
SLIDE 37

Effective Data Analysis Effective Data Analysis Contextual Understanding Contextual Understanding

Actionable Insights

=

+

slide-38
SLIDE 38

Framework/Tools

https://speakerdeck.com/hadley/tidyverse

Compatible Packages

+

slide-39
SLIDE 39

Main Concepts

The Tidyverse

Let’s focus on

slide-40
SLIDE 40

Tidy Data

Three Main Concepts

by: @_inundata & @jcheng
slide-41
SLIDE 41

A variable in a column An observation in a row Tidy your data And here you go!

Tidy Data

Three Main Concepts

[tibble, tidyr, dplyr,

and friends]
slide-42
SLIDE 42

Data comes from different

SOURCES

And more...

slide-43
SLIDE 43

Data comes in different

FORMATS

And more...

slide-44
SLIDE 44

Data comes in different

FORMATS

DATAFRAME (TIBBLE)

Read Tidy

slide-45
SLIDE 45 user job_id job_title company application_date Sara A1234 Software Developer Company A 2017-01-02 Sara A1568 Senior Software Engineer Company B 2017-03-02 Sara A1590 Software Engineer Company C 2017-03-03 …... ….. …. …. …. Omar A1234 Software Developer Company A 2017-01-03 Omar A1580 Android Developer Company C 2017-01-20 ….. …. …. …. …..

Tidy Data

slide-46
SLIDE 46

Nested Data

Three Main Concepts

slide-47
SLIDE 47

Nested Data

One row per group Instead of One row per observation

Three Main Concepts

[tidyr]

slide-48
SLIDE 48 user job_id job_title company application_date Sara A1234 Software Developer Company A 2017-01-02 Sara A1568 Senior Software Engineer Company B 2017-03-02 Sara A1590 Software Engineer Company C 2017-03-03 …... ….. …. …. …. Omar A1234 Software Developer Company A 2017-01-03 Omar A1580 Android Developer Company C 2017-01-20 ….. …. …. …. ….. user_data %>% group_by(user) %>% nest(.key = “applications”) user applications Sara <Tibble [3 x 4]> Omar <Tibble [2 x 4]> …. …...

Nested Data

slide-49
SLIDE 49 user job_id job_title company application_date Sara A1234 Software Developer Company A 2017-01-02 Sara A1568 Senior Software Engineer Company B 2017-03-02 Sara A1590 Software Engineer Company C 2017-03-03 …... ….. …. …. …. Omar A1234 Software Developer Company A 2017-01-03 Omar A1580 Android Developer Company C 2017-01-20 ….. …. …. …. ….. job_data %>% group_by(job_id) %>% nest(.key = “applications”) job_id applications A1234 <Tibble [2 x 4]> A1568 <Tibble [30 x 4]> A1590 <Tibble [100 x 4]> A1580 <Tibble [120 x 4]>

Nested Data

slide-50
SLIDE 50

Functional Programming

Three Main Concepts

slide-51
SLIDE 51

Functional Programming

Handle iteration problems powerfully and emphasize the actions rather than the objects

Three Main Concepts

[purrr]

slide-52
SLIDE 52

Let’s store models in columns

job_id applications app_count A5638 <tibble [362 x 27]> 362 A8957 <tibble [110 x 27]> 110 ….. ….. ….. job_app_data<- job_app_data %>% mutate(glm_model = map(app_data, ~ glm(viewed ~ app_day, data = .x, family = binomial)))
slide-53
SLIDE 53 job_id applications app_count glm_model A5638 <tibble [362 x 27]> 362 <S3: glm> A8957 <tibble [110 x 27]> 110 <S3: glm> ….. ….. ….. …. job_app_data<- job_app_data %>% mutate(glm_model = map(app_data, ~ glm(viewed ~ app_day, data = .x, family = binomial)))

Let’s store models in columns

slide-54
SLIDE 54 user_data <- user_data %>% mutate(common_jobs = map2(applications, preferences, ~intersect(.x[[“job_title”],.y[[“job_title”]])

Iterate and answer more questions

user applications preferences Sara <tibble [2 x 10]> <tibble [4 x 10]> Omar <tibble [2 x 15]> <tibble [2 x 10]> ….. ….. ….
slide-55
SLIDE 55 user applications preferences common_jobs Sara <tibble [2 x 10]> <tibble [4 x 10]> <chr [2]> Omar <tibble [2 x 15]> <tibble [2 x 10]> <chr [0]> ….. ….. ….

Iterate and answer more questions

user_data <- user_data %>% mutate(common_jobs = map2(applications, preferences, ~intersect(.x[[“job_title”],.y[[“job_title”]])
slide-56
SLIDE 56

Let’s Look Closer !

slide-57
SLIDE 57

Problem

Shortage in applications for certain

Software Development jobs Overall growth and good KPIs

slide-58
SLIDE 58

Problem

Shortage in applications for certain

Software Development jobs

Dissatisfied Employers

slide-59
SLIDE 59

Problem

Flagged by different sources

Shortage in applications for certain

Software Development jobs

slide-60
SLIDE 60

Problem

Masked by high-level metrics

Shortage in applications for certain

Software Development jobs

slide-61
SLIDE 61
slide-62
SLIDE 62

Talent Shortage

Hypotheses

What if we just have a small pool of job seekers who are interested in the affected jobs?

slide-63
SLIDE 63

Hypotheses

Irrelevant Jobs

Maybe employers are not catching up with the global trends or job seekers aspirations!

slide-64
SLIDE 64

Hypotheses

Hidden Jobs

What if some jobs do not get enough exposure in the search/recommendation pages?

slide-65
SLIDE 65

st

The Job’s Side

Investigation

slide-66
SLIDE 66

What about applications details per job?

The Job’s Side

slide-67
SLIDE 67

The Job’s Side

Job applications details

slide-68
SLIDE 68

What about iOS job applications?

The Job’s Side

slide-69
SLIDE 69

Job Applications Growth over time

iOS Developers Jobs

slide-70
SLIDE 70

What happens to job posts on day X?

Day 7

iOS Developers Jobs

slide-71
SLIDE 71

What is special about these jobs?

Mobile Developer (iOS, Android)

iOS Developers Jobs

slide-72
SLIDE 72

What about the rest?

iOS Developers Jobs

slide-73
SLIDE 73

More with Shiny...

*Sample of Wuzzuf Job Posts
slide-74
SLIDE 74

nd

The Job Seeker’s Side

Investigation

slide-75
SLIDE 75

How do job seekers fill their profiles?

The Job Seeker’s Side

tidytext

slide-76
SLIDE 76

The Job Seeker’s Side

How do job seekers fill their profiles?

Details of job seeker’s keywords

slide-77
SLIDE 77

What about the repetition in the extracted keywords?

The Job Seeker’s Side

slide-78
SLIDE 78

The Job Seeker’s Side

What about the repetition in the extracted keywords?

Summaries from Job Seeker's Keywords

slide-79
SLIDE 79

Which jobs match each user’s profile?

The Job Seeker’s Side

solrium

slide-80
SLIDE 80

Which jobs match each user’s profile?

The Job Seeker’s Side

slide-81
SLIDE 81

Which jobs match each user’s profile?

The Job Seeker’s Side

Recommended Jobs Details

slide-82
SLIDE 82

What ACTIONS Did This Analysis Trigger?

slide-83
SLIDE 83

Talent Shortage

Recommended Actions

  • Acquire more senior developers
  • Activate the existing developers
  • Support the community
slide-84
SLIDE 84

Irrelevant Jobs

  • Advise employers about the

market

Recommended Actions

  • Revisit preference-based matching
slide-85
SLIDE 85

Hidden Jobs

  • Revisit text fields indexing
  • Tune field weights for scoring
  • Improve mail recommendation

Recommended Actions

slide-86
SLIDE 86

Main Concepts

Tidy Data Nested Data Functional Programming Effective Data Analysis Contextual Understanding +

=

Actionable Insights

@OmaymaS

slide-87
SLIDE 87

FITTING HUMANS STORIES IN LIST COLUMNS

Cases from an Online Recruitment Platform

Omayma Said

@OmaymaS