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)))