from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.metrics.pairwise import cosine_similarity import json def load_job_descriptions(path='job_descriptions.json'): with open(path, 'r') as f: jobs = json.load(f) return jobs def match_skills(resume_text, job_descriptions): results = [] vectorizer = TfidfVectorizer().fit_transform([resume_text] + [job["description"] for job in job_descriptions]) vectors = vectorizer.toarray() resume_vector = vectors[0] for idx, job in enumerate(job_descriptions): job_vector = vectors[idx + 1] similarity = cosine_similarity([resume_vector], [job_vector])[0][0] results.append({"role": job["role"], "match": round(similarity * 100, 2)}) return sorted(results, key=lambda x: x["match"], reverse=True)