Siggmoid Cursor commited on
Commit
9c72612
·
1 Parent(s): cea745e

Refine scoring: preserve text structure for chunking and tune semantic calibration

Browse files
Files changed (2) hide show
  1. services/scorer.py +6 -6
  2. utilities/keyword_match.py +1 -1
services/scorer.py CHANGED
@@ -4,7 +4,6 @@ from utilities.skills import (
4
  calculate_skill_overlap,
5
  extract_resume_skills,
6
  extract_required_skills_from_jd,
7
- clean_text,
8
  )
9
  from services.feedback import generate_resume_feedback
10
 
@@ -60,12 +59,13 @@ def resume_score(resume_text: str, jd_text: str) -> dict:
60
  Orchestrates scoring → gap analysis → LLM feedback.
61
 
62
  Returns a dict matching ScoreResponse schema plus a 'summary' field.
63
- """
64
- resume_clean = clean_text(resume_text)
65
- jd_clean = clean_text(jd_text)
66
 
67
- scores = final_ats_score(resume_clean, jd_clean)
68
- gaps = extract_gaps(resume_clean, jd_clean)
 
 
 
 
69
 
70
  feedback = generate_resume_feedback(scores, gaps)
71
 
 
4
  calculate_skill_overlap,
5
  extract_resume_skills,
6
  extract_required_skills_from_jd,
 
7
  )
8
  from services.feedback import generate_resume_feedback
9
 
 
59
  Orchestrates scoring → gap analysis → LLM feedback.
60
 
61
  Returns a dict matching ScoreResponse schema plus a 'summary' field.
 
 
 
62
 
63
+ Note: text cleaning is intentionally left to each scoring/utility
64
+ function so that sentence boundaries (newlines, punctuation) are
65
+ preserved for semantic chunking before they are stripped.
66
+ """
67
+ scores = final_ats_score(resume_text, jd_text)
68
+ gaps = extract_gaps(resume_text, jd_text)
69
 
70
  feedback = generate_resume_feedback(scores, gaps)
71
 
utilities/keyword_match.py CHANGED
@@ -92,7 +92,7 @@ def calibrate_semantic_score(cosine: float) -> float:
92
  not 0.9+, so raw cosine understates good matches without calibration.
93
  """
94
  cosine = float(np.clip(cosine, 0.0, 1.0))
95
- low, high = 0.32, 0.78
96
  scaled = (cosine - low) / (high - low) * 100.0
97
  return round(float(np.clip(scaled, 0.0, 100.0)), 2)
98
 
 
92
  not 0.9+, so raw cosine understates good matches without calibration.
93
  """
94
  cosine = float(np.clip(cosine, 0.0, 1.0))
95
+ low, high = 0.20, 0.78
96
  scaled = (cosine - low) / (high - low) * 100.0
97
  return round(float(np.clip(scaled, 0.0, 100.0)), 2)
98