This is a Resume Matcher web application built for the AI ATL Hackathon 2024. The application uses Natural Language Processing (NLP) and Machine Learning to analyze resumes against job descriptions, providing match percentages and actionable feedback to help job seekers improve their applications.
-
Flask Web Application (
app.py)- Main entry point for the web application
- Handles HTTP requests and routing
- Integrates Google's Gemini Pro AI model for content generation
- Provides endpoints for resume matching and feedback generation
-
Resume Matcher (
resume_matcher.py)- Core matching algorithm using TF-IDF vectorization and cosine similarity
- Text preprocessing with spaCy for NLP operations
- Skill-based matching with weighted scoring (60% text similarity + 40% skill match)
- Calculates overall match percentage between resume and job description
-
Skills Extractor (
skills_extractor.py)- Uses spaCy's PhraseMatcher for pattern recognition
- Maintains a comprehensive list of technical skills (programming languages, frameworks, methodologies)
- Extracts relevant skills from both resumes and job descriptions
- Identifies missing skills for improvement suggestions
-
Database Module (
database.py)- SQLite database integration for storing job descriptions
- Provides CRUD operations for job description management
- Automatically initializes database schema on startup
-
Templates (
templates/)index.html: Main input form for resume and job descriptionresult.html: Results page displaying match percentage and feedback
-
Static Assets (
static/)styles.css: Application styling with modern UI designscript.js: Client-side JavaScript for interactive elements (percentage circle visualization)
- Backend: Python 3, Flask
- NLP: spaCy (en_core_web_sm model)
- Machine Learning: scikit-learn (TF-IDF, cosine similarity)
- AI Integration: Google Generative AI (Gemini Pro)
- Database: SQLite3
- Frontend: HTML5, CSS3, JavaScript
- Icons: Font Awesome 5.15.3
- Resume-to-Job Matching: Calculates similarity score between resume and job description
- Skills Analysis: Identifies matching skills and skills gaps
- Intelligent Feedback: Provides actionable suggestions for resume improvement
- Modern UI: Clean, responsive interface with visual percentage indicators
- Text Preprocessing: Advanced NLP preprocessing including lemmatization and stop word removal
- Python 3.10 or higher
- pip package manager
-
Clone the repository:
git clone https://github.com/johaankjis/ai-atl-2024.git cd ai-atl-2024 -
Create and activate a virtual environment (recommended):
python -m venv myenv source myenv/bin/activate # On Windows: myenv\Scripts\activate
-
Install required dependencies:
pip install -r requirements.txt
-
Download the spaCy English language model:
python -m spacy download en_core_web_sm
-
Configure Google Gemini API (if using AI features):
- Replace
'GEMINI_API_KEY'inapp.pywith your actual API key
- Replace
-
Start the Flask development server:
python app.py
-
Open your web browser and navigate to:
http://127.0.0.1:5000 -
Enter your resume and job description in the provided text areas
-
Click "Match Resume" to see results
-
Text Preprocessing:
- Removes stop words and punctuation
- Applies lemmatization to normalize word forms
- Converts text to lowercase
-
Similarity Calculation:
- Uses TF-IDF (Term Frequency-Inverse Document Frequency) vectorization
- Computes cosine similarity between resume and job description vectors
-
Skills Extraction:
- Pattern matching against predefined skills database
- Identifies technical skills, frameworks, and methodologies
-
Score Calculation:
- Final score = (0.6 × text_similarity + 0.4 × skill_match) × 100
- Provides balanced assessment of both content and specific skills
-
Feedback Generation:
- Highlights matching skills to emphasize
- Lists missing skills to develop or add
- Provides actionable improvement suggestions
ai-atl-2024/
├── app.py # Main Flask application
├── resume_matcher.py # Core matching logic
├── skills_extractor.py # Skills extraction module
├── database.py # Database operations
├── test_app.py # Simple test application
├── requirements.txt # Python dependencies
├── templates/
│ ├── index.html # Input form
│ └── result.html # Results display
├── static/
│ ├── styles.css # Application styles
│ └── script.js # Client-side scripts
└── README.md # This file
We participated in 2 tracks for AI ATL Hackathon 2024:
Demo Video: https://youtu.be/E9V6MhxHxPM
This track showcases the integration of Google's Gemini Pro model for AI-powered content generation and resume analysis.
Presented by the AI safety initiative @ GT and proudly supported by Anthropic and Apart Research!
- Final Document: https://docs.google.com/document/d/1dyzEjGUQhtF19D2mYHxHzO6szpA8VTixdFi8uLbVsbs/edit?usp=sharing
- Demo Video: https://youtu.be/38gDCgoFKw8
- PDF resume upload and parsing
- Advanced skill taxonomy and ontology
- Machine learning model for better matching
- User authentication and history tracking
- Integration with job boards APIs
- Multi-language support
- Resume improvement suggestions using Gemini AI
This project was created for the AI ATL Hackathon 2024. Contributions and suggestions are welcome!
This project is available for educational and demonstration purposes.