-
Notifications
You must be signed in to change notification settings - Fork 137
UC00208 Resume-to-Job Matching Assistant (Basil Behanan) #1743
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
67f513a
b696d61
b4990ed
dea854d
af20d4d
8dc4332
f181879
206b768
fbe0082
dcbaa1b
9798422
716c9d3
57e7a1e
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,87 @@ | ||
| # Resume Job Matcher | ||
|
|
||
| A notebook-based prototype that ranks job postings against a resume using a combination of text similarity and skill overlap. | ||
|
|
||
| ## What It Does | ||
|
|
||
| This project compares a resume with a set of job descriptions and produces ranked matches. It uses two signals: | ||
|
|
||
| - TF-IDF + cosine similarity for overall text relevance | ||
| - Skill extraction and overlap for a more targeted match score | ||
|
|
||
| The notebook then combines those scores into a final prototype score and exports the results. | ||
|
|
||
| ## Project Structure | ||
|
|
||
| ```text | ||
| resume_job_matcher/ | ||
| ├── data/ | ||
| │ ├── jobs.csv | ||
| │ └── resume.txt | ||
| ├── notebooks/ | ||
| │ └── resume_job_matching.ipynb | ||
| ├── outputs/ | ||
| │ ├── final_prototype_results.csv | ||
| │ ├── ranked_jobs.csv | ||
| │ └── prototype_results_chart.png | ||
| ├── src/ | ||
| └── requirements.txt | ||
| ``` | ||
|
|
||
| ## Notebook Workflow | ||
|
|
||
| The notebook is organized into clear sections: | ||
|
|
||
| 1. Imports and setup | ||
| 2. Load input data | ||
| 3. Text preprocessing | ||
| 4. Text similarity matching | ||
| 5. Skill extraction and overlap | ||
| 6. Final scoring and ranking | ||
| 7. Reporting, visualization, and export | ||
|
|
||
| ## Requirements | ||
|
|
||
| Install the Python packages listed in `requirements.txt`. | ||
|
|
||
| Typical dependencies include: | ||
|
|
||
| - pandas | ||
| - nltk | ||
| - scikit-learn | ||
| - matplotlib | ||
|
|
||
| ## How to Run | ||
|
|
||
| 1. Open `notebooks/resume_job_matching.ipynb`. | ||
| 2. Run the cells from top to bottom. | ||
| 3. Make sure the data files are available in `data/`. | ||
| 4. Review the ranked matches and generated outputs in `outputs/`. | ||
|
|
||
| ## Inputs | ||
|
|
||
| - `data/resume.txt`: Plain-text resume used as the matching profile | ||
| - `data/jobs.csv`: Job postings dataset with job titles, companies, and descriptions | ||
|
|
||
| ## Outputs | ||
|
|
||
| The notebook writes the following files to `outputs/`: | ||
|
|
||
| - `ranked_jobs.csv`: Jobs ranked by similarity score | ||
| - `final_prototype_results.csv`: Final combined results with match and skill scores | ||
| - `prototype_results_chart.png`: Bar chart of final prototype scores | ||
|
|
||
| ## Matching Logic | ||
|
|
||
| The ranking is based on a weighted score: | ||
|
|
||
| - 70% text match score | ||
| - 30% skill overlap score | ||
|
|
||
| This keeps the prototype simple while still reflecting both broad relevance and concrete skill alignment. | ||
|
|
||
| ## Notes | ||
|
|
||
| - The notebook downloads the NLTK `punkt` and `stopwords` resources on first run. | ||
| - If you change the resume or job data, rerun the notebook from the top to refresh all outputs. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| job_id,title,company,description | ||
| 1,Data Analyst,Company A,"Looking for a candidate with experience in Python, SQL, dashboards, reporting, and data visualization. Knowledge of Tableau or Power BI is preferred." | ||
| 2,Junior Data Scientist,Company B,"Seeking a graduate with experience in machine learning, Python, data preprocessing, feature engineering, and model evaluation." | ||
| 3,Machine Learning Intern,Company C,"The ideal applicant has worked on machine learning projects, computer vision tasks, Python programming, and model training workflows." | ||
| 4,AI Engineer Intern,Company D,"Looking for students with exposure to deep learning, NLP, Python, data pipelines, and practical AI project experience." | ||
| 5,Business Intelligence Analyst,Company E,"Candidates should have knowledge of SQL, reporting, dashboard creation, Power BI, Excel, and stakeholder communication." |
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,85 @@ | ||||||||||||||
| Basil Behanan | ||||||||||||||
| Tel: +61 468410310 | ||||||||||||||
| Email: [email protected] | ||||||||||||||
| LinkedIn: LinkedIn | ||||||||||||||
|
Comment on lines
+2
to
+4
|
||||||||||||||
| Tel: +61 468410310 | |
| Email: Basilbehanan5@gmail.com | |
| LinkedIn: LinkedIn | |
| Tel: +61 400 000 000 | |
| Email: sample.resume@example.com | |
| LinkedIn: linkedin.com/in/sample-profile |
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1 @@ | ||||||||||
|
|
||||||||||
|
||||||||||
| This placeholder file exists only to keep the `data` directory in version control. | |
| If repository-wide file operations are allowed, prefer renaming this file to `.gitkeep` | |
| and documenting that convention in the README. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The README project structure block appears to describe a different top-level folder ("resume_job_matcher/") and includes a "src/" directory that doesn't exist under Playground/Basil. Please update the structure example to match the actual committed layout (or add the missing folder) to avoid misleading run instructions.