Spaces:
Sleeping
Sleeping
| from __future__ import annotations | |
| from typing import Iterable, Sequence | |
| def build_hr_memo(audience: str, task_title: str, highlights: Sequence[str]) -> str: | |
| opening = f"Hello {audience}," | |
| body = [ | |
| "Thank you for moving quickly on this update.", | |
| f"Here is the latest business update for {task_title}.", | |
| ] | |
| body.extend(f"- {line}" for line in highlights[:4]) | |
| close = [ | |
| "Please review the actions above and reply with any blockers today.", | |
| "Best,", | |
| "HR Operations", | |
| ] | |
| return "\n".join([opening, "", *body, "", *close]) | |
| def score_memo(memo: str, required_terms: Iterable[str]) -> float: | |
| text = memo.lower() | |
| score = 0.2 | |
| if memo.startswith("Hello "): | |
| score += 0.15 | |
| if "thank" in text or "appreciate" in text: | |
| score += 0.15 | |
| if "please review" in text or "reply with any blockers" in text: | |
| score += 0.2 | |
| if "best," in text: | |
| score += 0.1 | |
| matched = 0 | |
| terms = [t.lower() for t in required_terms if t] | |
| for term in terms: | |
| if term in text: | |
| matched += 1 | |
| if terms: | |
| score += 0.2 * (matched / len(terms)) | |
| return max(0.001, min(0.999, round(score, 4))) | |