0% found this document useful (0 votes)
13 views

Assigment (Golang)

The assignment requires building a backend server for a Recruitment Management System, allowing users to create profiles, upload resumes, and apply for jobs. Admin users can manage job openings and view applicant data, while applicants can view and apply for jobs. The project must utilize specific APIs for user authentication, resume uploading, and job management, and should be submitted via a GitHub repository within 24 hours.

Uploaded by

Kovid Balli
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
13 views

Assigment (Golang)

The assignment requires building a backend server for a Recruitment Management System, allowing users to create profiles, upload resumes, and apply for jobs. Admin users can manage job openings and view applicant data, while applicants can view and apply for jobs. The project must utilize specific APIs for user authentication, resume uploading, and job management, and should be submitted via a GitHub repository within 24 hours.

Uploaded by

Kovid Balli
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

We are excited to present you with an assignment designed to evaluate your skills as a Backend

Developer. Your task involves building a backend server for a Recruitment Management System.
Please carefully review the instructions provided below and ensure timely submission within the next
24 hours of receiving this assignment.

Task: Create a backend server for a Recruitment Management System.

Requirements:

1. Users can create their profile and upload Resumes (only PDF and DOCX formats allowed).

2. Uploaded resumes will be processed using a third-party API, and relevant information will be
stored in the database.

3. Admin users can create job openings.

4. Admin users can view all uploaded resumes and extracted data of applicants.

5. Applicants can view job openings.

6. Applicants can apply to job openings.

APIs:

 POST /signup: Create a profile on the system (Name, Email, Password, UserType
(Admin/Applicant), Profile Headline, Address).

 POST /login: Authenticate users and return a JWT token upon successful validation.

 POST /uploadResume: Authenticated API for uploading resume files (only PDF or DOCX) of
the applicant. Only Applicant type users can access this API.

 POST /admin/job: Authenticated API for creating job openings. Only Admin type users can
access this API.

 GET /admin/job/{job_id}: Authenticated API for fetching information regarding a job


opening. Returns details about the job opening and a list of applicants. Only Admin type
users can access this API.

 GET /admin/applicants: Authenticated API for fetching a list of all users in the system. Only
Admin type users can access this API.

 GET /admin/applicant/{applicant_id}: Authenticated API for fetching extracted data of an


applicant. Only Admin type users can access this API.

 GET /jobs: Authenticated API for fetching job openings. All users can access this API.

 GET /jobs/apply?job_id={job_id}: Authenticated API for applying to a particular job. Only


Applicant users are allowed to apply for jobs.

Models:

 User:

 Name: string

 Email: string
 Address: string

 UserType (Applicant/Admin)

 PasswordHash: string

 Profile Headline: string

 Profile: Profile

 Profile:

 Applicant: User

 Resume File Address: string

 Skills: string

 Education: string

 Experience: string

 Name: string

 Email: string

 Phone: string

 Job:

 Title: string

 Description: string

 PostedOn: datetime

 TotalApplications: int

 Company Name: string

 PostedBy: User

Third-party API to extract Resume details:

 API Endpoint: https://api.apilayer.com/resume_parser/upload

 Request Type: POST

 Headers:

 "Content-Type": application/octet-stream

 "apikey": gNiXyflsFu3WNYCz1ZCxdWDb7oQg1Nl1

CURL Example:

curl --location --request POST 'https://api.apilayer.com/resume_parser/upload' \ --header 'Content-


Type: application/octet-stream' \ --header 'apikey: YOUR API KEY HERE' \ --data-binary
'@/C:/Users/test/Desktop/sample_resume.docx'
Usage instructions: Send a request to the API with the resume file (PDF or DOCX), it will return a
JSON with all the scrapped information as shown below:

"education": [

"name": "Wharton School of the University of Pennsylvania",

"url": "http://dbpedia.org/page/Wharton_School_of_the_University_of_Pennsylvania"

},

"name": "Penn's College of Arts and Sciences",

"url": "http://dbpedia.org/page/University_of_Pennsylvania_School_of_Arts_and_Sciences"

],

"email": "[email protected]",

"experience": [

"dates": [

"2006-06"

],

"name": "Solar City"

},

"dates": [

"06-2002"

],

"name": "SpaceX",

"url": "http://spacex.com"

},

"dates": [
"03-1999",

"10-2002"

],

"name": "X.com and Paypal",

"url": "http://paypal.com"

],

"name": "Elon Musk",

"phone": "650 68100",

"skills": [

"Entrepreneurship",

"Innovation",

"Mars",

"Space",

"Electric Cars",

"Physics",

"Maths",

"Calculus",

"Distrupting Technologies"

Parse this JSON and store the relevant information on the profile table of the applicant. Store the
values in the string format extracted from JSON fields like Experience, Skills, Education, etc. Any field
information which is not retrieved from the API response can be left as empty or null.

Bonus: Create a prediction service to give heuristic score to profiles based on comparing job opening
details with resume information

Submission: Manage your project using GIT and share the GitHub repository link with us after you
are done, by replying to this mail.

You might also like