File size: 903 Bytes
7498f2c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
from __future__ import annotations
from typing import List
from .text import extract_keywords_from_text
from .consistency import coverage_score, conciseness_score


def resume_probability(resume_text: str, job_description: str, max_chars: int = 8000) -> float:
    jd_k = extract_keywords_from_text(job_description or "", top_k=40)
    cov = coverage_score(resume_text, jd_k)
    conc = conciseness_score(resume_text, max_chars)
    # Weighted combo: emphasize coverage
    p = 0.7 * cov + 0.3 * conc
    return float(max(0.0, min(1.0, p)))


def cover_letter_probability(letter_text: str, job_description: str, max_chars: int = 4000) -> float:
    jd_k = extract_keywords_from_text(job_description or "", top_k=30)
    cov = coverage_score(letter_text, jd_k)
    conc = conciseness_score(letter_text, max_chars)
    p = 0.6 * cov + 0.4 * conc
    return float(max(0.0, min(1.0, p)))