Skip to content

Repository files navigation

Building a search engine to find proper employees for new projects in DXC

1. Description

Our function as a group is to take user queries from the front-end team “Bot Logic-Sora". We parse key words from the queries and retrieve relevant details from the database provided by “Data eXtraction Crew” to relay the information back to the user.

A SHORT NOTE FROM THE SKILL GRAPH DEVELOPER TO THE NEXT TEAM WHO WORKS ON THIS

Due to time limitations, the JSON file in the S3 bucket contains a graph which was generated using only 1000 employees as of the end of this project. The goal was to have a full graph which was generated using all ~15,000 employees from the Americas, however the script to generate that was started too late, and as a result, the full graph was not generated by the time we had to turn in our laptops. It took one full week to generate roughly ~50% of the graph on the laptops provided to us. I suspect with the current script it would take at least 1.5 weeks but more likely 2 weeks to generate the graph with 15,000 employees. If you have access to faster computing, I recommend its use. DO NOT try to run this script on an AWS lambda. That would create a very expensive cost for something that could be done on a local machine and manually uploaded to S3 for almost free.

If you would like to optimize the script, I was researching efficient GRAN graph generation (Graph Recurrent Attention Networks) before I ran out of time to work with the project. It was not implemented, but it is a direction you may want to look in to make graph generation more scalable.

I would also like to emphasize that when the graph changes, so does the scaling of the returned values, so you may want to adjust the parameters (specifically steepness) of the logarithmic function in the analysis script (lambda_function.py). Just so that the majority of the returned output has a nice spread of 0.0 - 0.7 or 0.0 - 0.8. Without adjustment, the graph analysis function may not be very effective at supplementing the percent match formula in the query lambda.

Best of luck to you, Matthew

a. What this application does:

This is a function where you can get an employee list for a specific new project from DXC employees DB. The input can be employee ID, employee name, and skills that users might have for new projects. The output would be a candidate list for new projects.

b. Technologies used in this project: AWS (AMAZON WEB SERVICES) resources.

I. API gateway

II. Lambda- Event driven compute service that lets you run code for applications or backend services without servers.

c. How it works

There are three user stories to consider

  • Hiring managers can search for an employee with their ID:
  • Hiring managers can search for an employee with their name.
  • Hiring managers can search by skills to get a list of employees having those skills.

2. Relevant projects

a. This project is a part of a bigger project building a search engine for finding candidates for new projects.

DATA ETL

3. Lambda Usage

a. 30/60/90-availability

Request JSON –

{ “rollOff”:30 } 

Response JSON –

[ { "employee_id":<employee_id>, "employee_name": <employee_name>, "ppmrolloff": "Unassigned" }, { "employee_id": <employee_id>, "employee_name": <employee_name>, "ppmrolloff": "Unassigned" },(it continues) ] 

b. Query

Request JSON:

{ "skill": ["Java","Structured Query Language (SQL)"], "rollOff": "2022-07-29", "jobLevel": "4", "exactDate":true } 

OR

{ "skill": ["Java","Structured Query Language (SQL)"], "rollOff": "60", "jobLevel": "4", "exactDate":false } 
 Response JSON – 
{ "employees": [ { "employeeId": <employee_id>, "employeeName": <employee_name>, "serviceLine": "Applications", "workRegion": "Americas Region", "percentage": 1, "skills": [ "Java", "Structured Query Language (SQL)", "Back-End Development", "Computer Servers", "Databasing", "End-to-End Testing", "Integration Testing", "Oracle", "PHP (Programming Language)", "Regression Testing", "Software Development", "System Integration Testing (SIT)", "Systems Integration", "Test Planning", "Test Scripts" ], "level": 4, "rolloff": "30 Days", "firstAllocation": "100% Assigned", "levelTitle": "Professional" },(it continues) 

c. Skill and Percent Match

Request JSON

{ "requiredSkills": [ "Java", "Structured Query Language (SQL)", "Application Development", "This Is Not a Real Skill" ] } 

Response JSON –

{ "requestedSkillDict": { "Java": { "neighboringSkills": [ "Structured Query Language (SQL)", "Application Development" ], "neighboringPercent": [ 0.13870508821134434, 0.03396642390615443 ] }, "Structured Query Language (SQL)": { "neighboringSkills": [ "Java", "Application Development" ], "neighboringPercent": [ 0.13870508821134434, 0.024748921463083603 ] }, "Application Development": { "neighboringSkills": [ "Structured Query Language (SQL)", "Java" ], "neighboringPercent": [ 0.024748921463083603, 0.03396642390615443 ] }, "This Is Not a Real Skill": { "neighboringSkills": [], "neighboringPercent": [] } } } 

d. EmployeeID

Request JSON –

{ "employeeID":<employee_id> } 

Response JSON –

{ "work_city": "Any City", "employee_name": <employee_name>, "ppm_roll_off": ">90 Days", "service_line": "BPS", "employeeExists": true, "skills": [ "Anti-Money Laundering Compliance", "Audit Responses", "Auditing", "Audits Compliance", "Complaints Analysis", "Complaints Investigation", "Deadline Management", "Financial Auditing", "Life Insurance", "People Leadership", "People Management" ], "employee_email": <employee_email>, "employee_type": "Regular", "capability": "Business Process Services: Life and Wealth", "first_allocation": "100% Assigned", "work_region": "Americas Region", "employee_id": <employee_id>, "employee_status": "Active", "job_level": "4", "work_country": "United States of America", "job_title": "Professional" } 

e. Employee-name

Request JSON –

{ "employeeName":"Smith" } 

Response JSON –

[ { "employee_id": <employee_id>, "employee_name": <employee_name> }, { "employee_id": <employee_id>, "employee_name": <employee_name> },(it continues) ] 

f. Parse Skills

Request JSON –

{ "string":"I want a java developer with knowledge on python" } 

Response JSON –

{ "skills": [ "java", "python" ], "containsSkills": true } 

4. Contributors

Daniel Ha https://www.linkedin.com/in/daniel-ha-591734104/

Deepmala Bhomi https://www.linkedin.com/in/deepmala-bhomi-635b5a186/

Hariny Ganapathy https://www.linkedin.com/in/hariny-8b5496157/

Lillian Moreau https://www.linkedin.com/in/lillian-moreau/

Matthew Mahan https://www.linkedin.com/in/matthewmahan2020/

Nikhil Krishna Reddy Gujjarlamudi https://www.linkedin.com/in/nikhilkrishnareddy/

Pradip Hamal https://www.linkedin.com/in/pradip-h-847163141/

Seonghoon Yi https://www.linkedin.com/in/seonghoon-yi-728587227/

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages