diff --git a/src/openjobradar/policy/filters.py b/src/openjobradar/policy/filters.py index 37902c7..0f93d2d 100644 --- a/src/openjobradar/policy/filters.py +++ b/src/openjobradar/policy/filters.py @@ -181,16 +181,12 @@ def evaluate_hard_filters(posting: Mapping[str, Any], profile: Mapping[str, Any] employers = hard_filters.get("current_employers") or [] normalized_org = _normalize(organization) for employer in employers: - if isinstance(employer, str) and normalized_org: - employer_norm = _normalize(employer) - if employer_norm and ( - employer_norm in normalized_org or normalized_org in employer_norm - ): - findings.append(( - "current_employer", "deny", - f"{employer.strip()!r} is your current employer.", - )) - break + if isinstance(employer, str) and normalized_org and _multi_phrase_hit(normalized_org, employer): + findings.append(( + "current_employer", "deny", + f"{employer.strip()!r} is your current employer.", + )) + break findings.extend(_list_finding( normalized_title, diff --git a/tests/test_hard_filters.py b/tests/test_hard_filters.py index 1145c1d..c101929 100644 --- a/tests/test_hard_filters.py +++ b/tests/test_hard_filters.py @@ -20,7 +20,22 @@ def test_no_sections_is_permissive() -> None: def test_current_employer_suppressed() -> None: profile = _profile(current_employers=["Example Health Co"]) verdict = evaluate_hard_filters( - {"title": "Director", "organization": "Example Health Corporation"}, profile + {"title": "Director", "organization": "Example Health Co, LLC"}, profile + ) + assert not verdict.allowed + assert verdict.rules == ("current_employer",) + + +def test_employer_word_boundary_no_false_positive() -> None: + profile = _profile(current_employers=["Meta"]) + assert evaluate_hard_filters( + {"title": "Senior Engineer", "organization": "Metabase, Inc."}, profile + ).allowed + assert evaluate_hard_filters( + {"title": "Senior Engineer", "organization": "MetaMind AI"}, profile + ).allowed + verdict = evaluate_hard_filters( + {"title": "Senior Engineer", "organization": "Meta, Inc."}, profile ) assert not verdict.allowed assert verdict.rules == ("current_employer",)