Spaces:
Sleeping
Sleeping
| from models import Resume, JobDescription | |
| from typing import Dict, Any | |
| class ResumeAnalyzer: | |
| """ | |
| Renew System for Judging and Analyzing Resumes Sounak | |
| Deep heuristic-based analysis comparing candidate skills with JD requirements. | |
| """ | |
| def analyze(resume: Resume, jd: JobDescription) -> Dict[str, Any]: | |
| match_skills = set([s.lower() for s in resume.skills]).intersection(set([s.lower() for s in jd.required_skills])) | |
| missing_skills = set([s.lower() for s in jd.required_skills]) - set([s.lower() for s in resume.skills]) | |
| bonus_skills = set([s.lower() for s in resume.skills]).intersection(set([s.lower() for s in jd.preferred_skills])) | |
| # Experience Check | |
| exp_verdict = "Adequate" | |
| if resume.experience_years < jd.min_experience: | |
| exp_verdict = f"Missing {jd.min_experience - resume.experience_years} years" | |
| elif jd.max_experience and resume.experience_years > jd.max_experience: | |
| exp_verdict = "Over-qualified" | |
| else: | |
| exp_verdict = "Strong Fit" | |
| # Pros & Cons | |
| pros = [] | |
| cons = [] | |
| if match_skills: | |
| pros.append(f"Matches {len(match_skills)} core skills.") | |
| if bonus_skills: | |
| pros.append(f"Brings {len(bonus_skills)} bonus skills to the role.") | |
| if exp_verdict == "Strong Fit": | |
| pros.append("Experience aligns perfectly with requirements.") | |
| if missing_skills: | |
| cons.append(f"Missing critical tech stack: {', '.join(missing_skills)}.") | |
| if exp_verdict.startswith("Missing"): | |
| cons.append(f"Lacks requisite years of experience ({exp_verdict}).") | |
| return { | |
| "match_skills": list(match_skills), | |
| "missing_skills": list(missing_skills), | |
| "bonus_skills": list(bonus_skills), | |
| "experience_verdict": exp_verdict, | |
| "pros": pros, | |
| "cons": cons, | |
| "overall_judgment": "Recommended for Interview" if (len(match_skills) >= len(jd.required_skills)//2 and not exp_verdict.startswith("Missing")) else "Caution/Reject" | |
| } | |
| resume_analyzer = ResumeAnalyzer() | |