Skip to content

Certification Analyzer

CertificationAnalyzer

CertificationAnalyzer(semantic_matcher=None)

Analyzer for matching certifications between job requirements and resume.

Matches required certifications using multiple strategies: 1. Exact matching (normalized, case-insensitive) 2. Fuzzy string matching (ratio >= 85%) 3. Semantic similarity (if semantic_matcher provided, threshold >= 0.7)

Attributes:

Name Type Description
semantic_matcher

Optional semantic matcher for ML-powered similarity.

Example
analyzer = CertificationAnalyzer(semantic_matcher=matcher)
score, matched, missing = analyzer.analyze(
    resume_certifications, required_certifications
)

Initialize the certification analyzer.

Parameters:

Name Type Description Default
semantic_matcher SemanticMatcher | None

Optional semantic matcher for certification matching.

None
Source code in at_scorer/analyzers/certification.py
def __init__(self, semantic_matcher: SemanticMatcher | None = None):
    """Initialize the certification analyzer.

    Args:
        semantic_matcher: Optional semantic matcher for certification matching.
    """
    self.semantic_matcher = semantic_matcher

Functions

analyze
analyze(certifications, required)

Analyze certification matching between resume and job requirements.

Parameters:

Name Type Description Default
certifications list[CertificationEntry]

Certification entries from resume.

required
required Iterable[str]

Required certifications from job description.

required

Returns:

Type Description
tuple[float, list[str], list[str]]

Tuple containing: - score: Float between 0.0 and 1.0 (ratio of matched to required) - matched: List of matched certification names - missing: List of required certifications not found

Source code in at_scorer/analyzers/certification.py
def analyze(
    self, certifications: list[CertificationEntry], required: Iterable[str]
) -> tuple[float, list[str], list[str]]:
    """Analyze certification matching between resume and job requirements.

    Args:
        certifications: Certification entries from resume.
        required: Required certifications from job description.

    Returns:
        Tuple containing:
            - score: Float between 0.0 and 1.0 (ratio of matched to required)
            - matched: List of matched certification names
            - missing: List of required certifications not found
    """
    required_list = [normalize_text(c) for c in required if c]
    resume_list = [normalize_text(c.certificate or "") for c in certifications if c.certificate]
    matched: list[str] = []
    missing: list[str] = []

    for req in required_list:
        if not req:
            continue
        if any(self._is_match(req, rc) for rc in resume_list):
            matched.append(req)
        else:
            missing.append(req)

    score = len(matched) / (len(required_list) or 1)
    return score, matched, missing