R Notebook

Grupo 5

17 novembro 2021

OBJETIVOS

Realizar uma análise sobre a base de dados e identificar oportunidades para coleta destes dados e novas métricas de acompanhamento do funil de vagas.

AVALIAÇÃO

Atualmente existe uma equipe atuando em um dash para os gestores. O nosso projeto foca em uma solução para a equipe de gestão da ambev ter uma melhor visibilidade das etapas do funil de vagas, como também, utilizar algoritmos para sugerir recomendações para tornar o processo de contração mais ágil e eficaz, aumentando a satisfação dos candidatos com os processos na ambev tech.

MELHORIAS

  • Automação da base do JOIN que é feita a solicitação de vagas pelos gestores;
  • Utilização da API da Gupy para armazenamento dos dados históricos em uma base de dados, como sugestão recomendamos o PostgreSQL na Azure;
  • Padronização das TAGs para melhor gerenciamento e formatação em novas colunas;
  • Criação de um job para limpeza e padronização dos dados na base;
  • Realizar o agrupamento de vagas similares para melhorar a gestão;
  • Minimizar as etapas para facilitar o gerenciamento e o tempo entre as vagas;
  • Criação de um site para gerenciamento unificado do funil de vagas;
  • Utilização dos dados para um gerenciamento com recomendações preditivas.

MÉTRICAS

Métricas escolhidas para gestão do funil de vagas:

  • Diversidade;
  • Tempo médio das pessoas em cada fase;
  • Conversão entre as fases %;
  • Total de inscritos na vaga;
  • Número em cada fase em relação ao total de inscritos %;
  • Desistências em cada fase.

CÓDIGO R

Abaixo o código criado para limpeza da base fornecida pela equipe de people da ambev tech.

PACOTES

Pacotes utilizados no código:

library(tidyverse)
library(funModeling)
library(janitor)
library(openxlsx)
library(fs)
library(readxl)
library(rio)
library(lubridate)
library(abjutils)

BASE DE DADOS

Foram importadas as bases forncecidas pelo time de people da ambev tech, contendo informações de 7 relatórios fornecidos pela Gupy no período de 30.09.21 até 03.11.21.

# ultilizar a função file.choose() para encontrar o diretório do arquivo.
dir_bases <- paste0("C:\\Users\\",Sys.getenv("USERNAME"),"\\Downloads\\bases_gupy\\")

arquivos_list <- dir_bases %>% dir_ls(regexp = "xlsx$")

base_agrup <-
  arquivos_list %>%
  map(
    .f = function(path) {
      read_xlsx(path,
                sheet = 1,
                .name_repair = janitor::make_clean_names)
    }
  )

base_agrup_bind <-
  base_agrup %>%
  bind_rows(.id = "path") %>%
  dplyr::mutate(path = stringr::str_replace(path, "C:/Users/99825479/Downloads/bases_gupy/", "")) %>%
  dplyr::mutate(path = stringr::str_replace(path, "\\.xlsx", "")) %>%
  mutate(path = ymd(path)) %>%
  select(-c(31:103,
            105:107,
            pcd_tipo,
            motivo_de_reprovacao,
            matching))

PADRONIZAÇÃO DOS DADOS

Nas colunas nome_da_vaga e etapa_atual foi removida acentuação e colocada as colunas em caixa alta para melhor padronização dos dados, assim como, foi utilizada a coluna tag para extração das observações apontadas pelo time de gente na Gupy.

base_agrup_bind_remove <-
  base_agrup_bind %>%
  separate(col = "tags", into = c("TAG1", "TAG2", "TAG3"), sep = ",", fill = "right") %>%
  mutate(
    etapa_atual = str_replace_all(etapa_atual, "[[:punct:]]", ""),
    nome_da_vaga = rm_accent(nome_da_vaga),
    etapa_atual = rm_accent(etapa_atual),
    across(c(nome_da_vaga), ~ str_to_upper(nome_da_vaga)),
    across(c(etapa_atual), ~ str_to_upper(etapa_atual)),
    across(starts_with("TAG"), ~ rm_accent(.)),
    across(starts_with("TAG"), ~ str_to_upper(.)),
    across(starts_with("TAG"), ~ str_replace_all(., "[[:punct:]]", ""))
  )

BASE DE APOIO (DExPARA) DAS ETAPAS

Realizada a importação da base de apoio com o (DExPARA) das etapas do processo, realizado um agrupamento para melhor análise.

base_dexpara_etapas <- 
  read_excel("base_apoio.xlsx", sheet = 1)

AJUSTE DA BASE

Realizado o agrupamento de vagas recomendadas para análise conforme sugestão da equipe de gente:

Vagas com menor taxa de conversão: SRE; Arquitetura de software
Vagas com maior taxa de conversão: Dev C#; QA
Vaga de negócio (alto volume): Analista de negócios

base_vagas_select <-
  base_agrup_bind_remove %>%
  mutate(
    grupo_vagas = case_when(
      str_detect(nome_da_vaga, "SRE") ~ "SRE",
      str_detect(nome_da_vaga, "QA") ~ "QA",
      str_detect(nome_da_vaga, "SOFTWARE") ~ "ARQUITETO DE SOFTWARE",
      str_detect(nome_da_vaga, "NEGOCIO") ~ "NEGOCIOS",
      str_detect(nome_da_vaga, "C#") ~ "DEV C#",
      TRUE ~ "ALL"
    ),
  ) %>%
  filter(grupo_vagas != "ALL") %>%
  relocate(grupo_vagas, .after = nome_da_vaga) %>%
  mutate(
    path = format(as.Date(path), format = "%d/%m/%Y"),
    data_de_nascimento = format(as.Date(data_de_nascimento), format = "%d/%m/%Y")
  ) %>%
  left_join(., base_dexpara_etapas, by = c("etapa_atual")) %>%
  distinct(.keep_all = FALSE)

EXPORTAR BASE

Realizar a remoção do arquivo antigo e exportação da base após o tratamento dos dados.

file.remove("base_tratada.xlsx")
openxlsx::write.xlsx(base_vagas_select, 
                     "base_tratada.xlsx",
                     colNames = TRUE)