Saral_Ai / validate.py
divyesh01's picture
File Uploading
41ea5e0 verified
def validate_function(location,apify_json):
locations = [loc.lower().strip() for loc in location] if location else []
if not locations:
locations = ["india"]
match_list = []
unmatched_list = []
for profile in apify_json:
address = profile.get("addressWithCountry", "")
if not address:
unmatched_list.append(profile) # no address → unmatched
continue
address_lower = [part.strip().lower() for part in address.split(",")]
if "india" in address_lower or any("india" in part for part in address_lower):
if any(loc in address_lower for loc in locations):
match_list.append(profile)
else:
unmatched_list.append(profile)
else:
unmatched_list.append(profile)
return match_list , unmatched_list
def score_candidates(parsed_data, matched_list):
job_title = parsed_data.get("job_title", "").lower()
job_keywords = job_title.split() if job_title else []
required_skills = [s.lower() for s in parsed_data.get("skills", [])]
for profile in matched_list:
score = 0
breakdown = {}
# Headline check (count occurrences of each keyword)
headline = (profile.get("headline") or "").lower()
headline_score = 0
for kw in job_keywords:
count = headline.count(kw)
headline_score += count * 15 # each occurrence worth 15
score += headline_score
breakdown["headline_match"] = headline_score
# About check (count occurrences of each keyword)
about = (profile.get("about") or "").lower()
about_score = 0
for kw in job_keywords:
count = about.count(kw)
about_score += count * 10 # each occurrence worth 10
score += about_score
breakdown["about_match"] = about_score
# Skills check (exact match count)
profile_skills = [
s.get("title", "").lower()
for s in profile.get("skills", [])
if isinstance(s, dict)
]
skill_score = 0
for req_skill in required_skills:
skill_score += profile_skills.count(req_skill) * 10 # per match worth 10
score += skill_score
breakdown["skills_match"] = skill_score
# Cap score at 100
profile["score"] = min(round(score), 100)
profile["score_breakdown"] = breakdown
# Sort list in-place by score (highest first)
matched_list.sort(key=lambda x: x.get("score", 0), reverse=True)
return matched_list