The recruitment course of is usually a daunting process for each job seekers and recruiters. For candidates, crafting a tailor-made resume for every job is time-consuming, and for recruiters, sorting by lots of of resumes is a serious downside in hiring.
That’s why I began this mission, which is an element of a bigger imaginative and prescient: to create an all-in-one job software, profession growth, and training platform. This platform will enable customers to routinely generate tailor-made resumes primarily based on job descriptions they enter, utilizing knowledge from their LinkedIn profiles.
In Half 1, I’ll stroll you thru how I constructed a resume classifier internet app utilizing Flask and machine studying. This internet app classifies resumes into job classes like “Information Scientist” or “Software program Engineer” primarily based on the textual content content material. In future levels of the mission, we plan to combine the LinkedIn API to additional automate the resume creation course of.
This mission makes use of Flask because the backend framework and Scikit-learn to energy the machine studying mannequin. The purpose is to construct a system the place customers enter their resume textual content, and the app predicts probably the most related job class. This can be a key step in our broader imaginative and prescient to automate and streamline all the job software course of.
- Classifies resumes into classes like “Information Scientist”, “Software program Engineer”, and extra.
- Gives a easy internet interface for customers to enter resume textual content.
- Makes use of SpaCy for textual content preprocessing and Scikit-learn’s machine studying fashions for predictions.
- LinkedIn API Integration: Robotically retrieve person info from LinkedIn profiles.
- Tailor-Made Resumes: Robotically generate customized resumes primarily based on the job description supplied by the person.
- Profession and Schooling Improvement Platform: Present personalised profession steering, academic assets, and job software assist.
To get began, I created a Python digital atmosphere and put in the mandatory dependencies, together with Flask, Scikit-learn, and SpaCy.
- Arrange the atmosphere:
python3 -m venv venv
supply venv/bin/activate
pip set up -r necessities.txt
Textual content preprocessing is crucial for extracting significant options from resumes. I used SpaCy to deal with tokenization and lemmatization.
import spacy
import renlp = spacy.load('en_core_web_sm')
def preprocess_text(textual content):
textual content = textual content.decrease()
textual content = re.sub(r'[^a-zA-Zs]', ' ', textual content)
textual content = re.sub(r's+', ' ', textual content).strip()
doc = nlp(textual content)
return ' '.be a part of([token.lemma_ for token in doc if not token.is_stop])
This step helps clear up the textual content and prepares it for the machine studying mannequin.
For resume classification, I used a Random Forest Classifier from Scikit-learn. However first, I transformed the textual content knowledge into numerical type utilizing TfidfVectorizer.
from sklearn.feature_extraction.textual content import TfidfVectorizer
from sklearn.ensemble import RandomForestClassifier# Vectorize the resume textual content knowledge
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(resume_texts)
# Practice the Random Forest mannequin
mannequin = RandomForestClassifier()
mannequin.match(X_train, y_train)
The backend of this mission is powered by Flask. I arrange an API endpoint /predict
that accepts resume textual content and returns a prediction for the job class.
from flask import Flask, request, jsonify
import joblibapp = Flask(__name__)
# Load the educated mannequin and vectorizer
mannequin = joblib.load('resume_classifier_model.pkl')
vectorizer = joblib.load('tfidf_vectorizer.pkl')
@app.route('/predict', strategies=['POST'])
def predict():
resume_text = request.type['resume_text']
processed_text = preprocess_text(resume_text)
vectorized_text = vectorizer.remodel([processed_text])
prediction = mannequin.predict(vectorized_text)
return jsonify({'class': prediction[0]})
I created a easy frontend utilizing HTML and JavaScript. Customers can enter their resume textual content right into a type, and the Flask app returns the expected job class.
The classifier you’ve seen right here is simply the primary a part of a much bigger mission. The following phases will embrace:
- LinkedIn API Integration: Robotically fetch person knowledge from LinkedIn profiles to pre-fill resumes.
- Tailor-Made Resumes: Customers will have the ability to generate personalized resumes tailor-made to particular job descriptions.
- Profession and Schooling Platform: A full suite of instruments for profession growth, together with personalised training assets and job software help.
The purpose is to create an all-in-one job software, profession growth, and training platform that simplifies all the course of for each job seekers and recruiters.
One of many challenges I confronted was dealing with the textual content preprocessing effectively whereas ensuring the mannequin carried out nicely on unseen resumes. I additionally gained numerous expertise in constructing a full-stack software that ties collectively a machine studying backend and a easy, efficient frontend.
That is only the start of a a lot bigger mission geared toward automating and enhancing the job software course of. Keep tuned for future updates as we incorporate LinkedIn API integration and develop options like automated resume technology. If you happen to’re , try the mission on GitHub and be at liberty to contribute!
GitHub Repository: https://github.com/Francis-Subasinghe/craftmycareer