Pro Scorer
ProScorer
Bases: BaseScorer
Professional ATS scorer with ML-powered semantic analysis.
The ProScorer provides comprehensive resume evaluation using machine learning models for semantic understanding. It evaluates multiple dimensions:
- Keywords (15%): Semantic and fuzzy matching of job keywords
- Skills (20%): Required and preferred skills matching
- Experience (15%): Years of experience and job title relevance
- Education (10%): Educational requirements matching
- Certifications (10%): Required certifications
- Location (5%): Geographic location matching
- Job Title (10%): Relevance of past job titles
- Achievements (10%): Semantic analysis of achievements
- Summary (5%): Executive summary relevance
The scorer uses sentence transformers for semantic embeddings and spaCy for text analysis, enabling understanding of context and meaning beyond exact matches.
Attributes:
| Name | Type | Description |
|---|---|---|
ml_config |
Configuration for ML models (embedding model, spaCy model, etc.) |
|
embedding_model |
Model for generating text embeddings |
|
semantic_matcher |
Matcher for semantic similarity calculations |
|
text_analyzer |
spaCy-based text analyzer |
|
keyword_analyzer |
Analyzer for keyword matching with semantic support |
|
skills_analyzer |
Analyzer for skills matching |
|
experience_analyzer |
Analyzer for work experience evaluation |
|
education_analyzer |
Analyzer for education matching |
|
certification_analyzer |
Analyzer for certification matching |
|
location_analyzer |
Analyzer for location matching |
|
achievements_analyzer |
Analyzer for achievements evaluation |
|
weights |
Dictionary mapping score categories to their weights |
Example
from at_scorer.ml import MLConfig
# Use default config
scorer = ProScorer()
# Or customize ML config
config = MLConfig(
embedding_model="all-mpnet-base-v2",
use_gpu=True,
similarity_threshold=0.75
)
scorer = ProScorer(ml_config=config)
result = scorer.score(resume_data, job_description)
print(f"Overall score: {result.overall_score}")
print(f"Breakdown: {result.breakdown}")
print(f"Recommendations: {result.recommendations}")
Initialize the ProScorer with ML models and analyzers.
Sets up all necessary ML models and analyzers based on the provided configuration. If no config is provided, uses default MLConfig settings.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
ml_config
|
MLConfig | None
|
Optional ML configuration. If None, uses default MLConfig(). |
None
|
Source code in at_scorer/scorers/pro.py
Functions
score
Score a resume against a job description using comprehensive ML-powered analysis.
Performs multi-dimensional evaluation of the resume across 9 different categories using semantic understanding and traditional matching techniques. The final score is a weighted combination of all category scores.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
resume
|
ResumeData
|
The resume data to be scored, containing all relevant sections. |
required |
job
|
JobDescription
|
The job description to score against (structured or text-based). |
required |
Returns:
| Type | Description |
|---|---|
ScoreResult
|
ScoreResult containing: - overall_score: Weighted score (0-100) combining all categories - breakdown: Detailed scores for each category (0-100 scale) - recommendations: Actionable suggestions for improvement - matched_keywords: Keywords semantically or exactly matched - matched_skills: Skills that match job requirements - missing_skills: Required skills not found in the resume |
Note
The scoring process involves: 1. Normalizing the job description to structured format 2. Running multiple analyzers in parallel where possible 3. Calculating weighted overall score from category scores 4. Generating recommendations based on gaps
Source code in at_scorer/scorers/pro.py
121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 | |