Resume Analyzer Challenge
This challenge is designed to be completed at your own pace. Feel free to use any programming languages, libraries, and frameworks you’re comfortable with.
Please submit your solution before your scheduled interview. During the interview, we will review your work together, and you’ll have the opportunity to modify your code and discuss your approach.
Background
Imagine you are working on a project to develop a Resume Analyzer tool. The goal is to build a web application where users can upload resumes and receive an analysis of the resume content. The analysis should include information extraction, sentiment analysis, and a visual representation of the skills mentioned in the resume.
Requirements
As the scope of the project can be large, you are not expected to complete all of them. Instead, choose what you are most comfortable with. For example, if you are more experienced with frontend development, you can work on the frontend.
Your task is to build a prototype of the Resume Analyzer tool. You can choose to implement the frontend, backend, or the data science / machine learning component.
The requirements are open-ended, so feel free to be creative and add your own ideas to the project. We are interested in seeing how you approach the problem and what you can build within the given time frame.
Full Stack: Resume Matcher
Create a web page where users can upload a PDF file (a resume). Upon uploading the file, display in the sidebar all the text content of the resume and any metadata, such as the candidate’s name, email, and phone number. When clicked from the sidebar, the text content should be highlighted in the PDF viewer area.
Store the uploaded resumes, and extracts the metadata content from the PDF files into a database.
Create an endpoint analysis module that takes the resume name and a question as input and allows querying the document. For example, the user can ask “What is the candidate’s name?” and the module should return the candidate’s name from the resume text.
Given a job description, extract the skills required for the job. Then, given a resume, extract the skills mentioned in the resume. Compare the two sets of skills and provide a score for how well the candidate matches the job description. Return a sorted list in the API.
Data Science / Machine Learning: Text Classification
- Take any existing model and fine-tune it to give a score for classifications of the resume, whether it is a software engineer resume, a data scientist resume, or a product manager resume.
You can use any pre-trained model, such as Hugging Face’s text classification models. Python Jupiter notebooks are acceptable.
Computer Vision: Image Classification
Imagine you are a BJJ practitioner and you want to build a tool to analyze your training videos. You want to build a tool that can detect the type of BJJ pose being performed in the video, such as a guard, a sweep, or a submission.
- Take any existing model and train it to output the classifications of the BJJ pose in the video or image.
Human Pose Classification with MoveNet and TensorFlow Lite this tutorial provides a good starting point for this task. You do not need to use TensorFlow Lite, but you can use any existing model and fine-tune it to classify the BJJ pose.
You can use any pre-trained model, such as Hugging Face’s image classification models. Python Jupiter notebooks are acceptable.
Another option is to use a pre-trained model for pose estimation, such as Unsupervised Keypoints from Pretrained Diffusion Models you can view different libraries and models UBC AI Lab.
Resources
These resources may be useful to help you get started.
Full Stack
Github Codespaces Templates provides a variety of templates that you can use to quickly bootstrap your backend application.
Next.js Templates provides a variety of Next.js templates that you can use to quickly bootstrap your frontend application.
Data Science / Machine Learning / Computer Vision
Google Colab. Free Jupyter notebook environment that runs on Google Cloud and includes many popular data science libraries, with free to use graphics card resource.
Hugging Face provides a variety of pre-trained models that you can use for sentiment analysis and skills recognition.
Submission
Please provide the following as your submission:
- The source code of your solution, as a GitHub repository or email a zip file.
- Include a README file with any necessary instructions for running your application and API.
- A brief explanation of your approach and any libraries or tools you used.
- A short demo screen recording (1-2 minutes), or screenshots of your application.
Evaluation Criteria
Your submission will be evaluated based on the following criteria:
- Functionality: Does it work?
- Code Quality: Is the code well-structured, readable, and maintainable?
- Documentation: Is the submission accompanied by clear and comprehensive documentation?
Good luck, and we look forward to reviewing your work!