HHHunter
50/100
HHHunter bot
hhhunter/scorer.py
def score(vacancy, profile, w):
# 1. Навыки: доля профильных навыков, найденных в key_skills вакансии
vac_skills = {s.lower() for s in skill_names(vacancy)}
matched = [s for s in profile.skills if s.lower() in vac_skills]
skill_pts = (len(matched) / len(profile.skills)) * w.skill_weight # вес 60
# 2. Ключевые слова в названии + сниппете
text = (vacancy["name"] + snippet(vacancy)).lower()
hits = [k for k in profile.keywords if k.lower() in text]
kw_pts = (len(hits) / len(profile.keywords)) * w.keyword_weight # вес 25
# 3. Зарплата: проходит планку → полный балл; нет данных → половина
floor = salary_floor(vacancy)
if floor is None: salary_pts = w.salary_weight * 0.5
elif floor >= w.floor: salary_pts = w.salary_weight # вес 15
else: salary_pts = 0
total = round(skill_pts + kw_pts + salary_pts)
return ScoreResult(total=max(0, min(100, total)), matched=matched)