JobFitAI: Project Story
Inspiration
The inspiration for JobFitAI stemmed from the challenges that job seekers encounter when trying to tailor their resumes to specific job descriptions. I wanted to create a tool that simplifies this process by providing insights into the alignment between resumes and job requirements. By empowering users to optimize their resumes, I aimed to enhance their chances of landing interviews.
Project Overview
JobFitAI application leverages natural language processing (NLP) to compare a user’s resume with a job description. It calculates a match percentage, identifies missing skills, and offers personalized suggestions for improvement, ultimately helping users present their qualifications more effectively.
Technologies Used
- Flask: As the backend framework to manage routing and serve the web application.
- SQLite: For a lightweight database solution to store job descriptions.
- spaCy: For NLP processing, specifically for tokenization and skill extraction.
- scikit-learn: To compute the similarity between resume and job description text using TF-IDF and cosine similarity.
- Google Generative AI: For generating feedback and suggestions on resume improvements.
How I Built It
- Backend Development: I used Python with Flask to set up routing and handle user inputs.
- Database Setup: Implemented SQLite to manage job description storage and retrieval.
- Text Processing: Utilized spaCy to preprocess text data by removing stop words and punctuation, and lemmatizing tokens.
- Similarity Calculation: Employed scikit-learn’s TF-IDF vectorizer and cosine similarity to compute the match percentage between resumes and job descriptions.
- Skills Extraction: Incorporated spaCy’s
PhraseMatcherto identify key skills in both resumes and job descriptions.
Challenges Faced
- Skill Extraction: Compiling a comprehensive list of skills was challenging, requiring careful consideration of industry-specific terms.
- Balancing Text Similarity and Skill Matching: Achieving a meaningful match percentage required a delicate balance between text similarity and the number of matched skills.
- API Integration: Integrating Google Generative AI necessitated attention to API key management and response validation.
- NLP Processing: Ensuring accurate tokenization and text cleaning for effective similarity calculation proved to be more complex than anticipated.
What I Learned
- NLP Techniques: Enhanced my understanding of various NLP concepts, particularly in tokenization, lemmatization, and phrase matching.
- Database Management: Gained experience in using SQLite for efficient data management.
- Web Development: Improved my skills in Flask, particularly in creating routes, handling forms, and rendering templates.
- API Utilization: Learned the intricacies of working with APIs, including prompt engineering and response handling.
Future Improvements
- Enhanced Skill Extraction: Expand the skill list and categorize skills based on proficiency levels for more accurate matching.
- Personalized Feedback: Improve feedback suggestions by leveraging more in-depth insights from Generative AI models.
- User Interface Improvements: Design a more user-friendly UI with better guidance on uploading resumes and interpreting results.
Built With
- css
- flask
- geminiapi
- html
- javascript
- python
- scikit-learn
- spacy


Log in or sign up for Devpost to join the conversation.