feat: reranker pass in job ranking and ATS optimizer #109

Merged
pyr0ball merged 1 commit from feature/reranker-integration into main 2026-04-23 09:44:07 -07:00
Owner

Summary

  • Adds _try_rerank() to job_ranker.py: after stack_score sort, reranks top-50 candidates by (resume, description) cross-encoder relevance using cf-core v0.15.0 reranker
  • Adds resume_text param to rank_jobs() — graceful no-op when empty, backward-compatible
  • Adds reranker gap-reordering pass in rewrite_for_ats(): gaps sorted by (jd_text, term) relevance before section grouping and LLM rewrite
  • Both integration points fall back silently on ImportError or inference failure
  • Tier model selection: CF_RERANKER_MODEL env var (Phase 2 Qwen3 hooks reserved)

Test plan

  • 13 new tests in tests/test_reranker_integration.py — all passing
  • CF_RERANKER_MOCK=1 used throughout; no real model weights needed in CI
  • Full suite: 785 passed, 0 failures
  • Closes #108

Phase 2 / Phase 3 notes

  • make_reranker(model_id=...) API reserved for per-tier Qwen3 model selection (Phase 2)
  • cf-orch remote service profile slot already reserved in cf-core (Phase 3)
## Summary - Adds `_try_rerank()` to `job_ranker.py`: after stack_score sort, reranks top-50 candidates by (resume, description) cross-encoder relevance using `cf-core v0.15.0` reranker - Adds `resume_text` param to `rank_jobs()` — graceful no-op when empty, backward-compatible - Adds reranker gap-reordering pass in `rewrite_for_ats()`: gaps sorted by (jd_text, term) relevance before section grouping and LLM rewrite - Both integration points fall back silently on `ImportError` or inference failure - Tier model selection: `CF_RERANKER_MODEL` env var (Phase 2 Qwen3 hooks reserved) ## Test plan - [ ] 13 new tests in `tests/test_reranker_integration.py` — all passing - [ ] `CF_RERANKER_MOCK=1` used throughout; no real model weights needed in CI - [ ] Full suite: 785 passed, 0 failures - [ ] Closes #108 ## Phase 2 / Phase 3 notes - `make_reranker(model_id=...)` API reserved for per-tier Qwen3 model selection (Phase 2) - cf-orch remote service profile slot already reserved in cf-core (Phase 3)
pyr0ball added 1 commit 2026-04-21 12:41:59 -07:00
feat: reranker pass in job ranking and ATS optimizer (cf-core v0.15.0)
Some checks failed
CI / Backend (Python) (push) Failing after 1m10s
CI / Frontend (Vue) (push) Failing after 19s
CI / Backend (Python) (pull_request) Failing after 1m11s
CI / Frontend (Vue) (pull_request) Failing after 18s
2772b808d3
- Add _try_rerank() to job_ranker.py: after stack_score sort, rerank
  top-50 candidates by (resume_text, description) cross-encoder relevance
- Add resume_text param to rank_jobs(); graceful no-op when empty
- Add reranker gap-reordering pass in rewrite_for_ats(): gaps sorted by
  (jd_text, term) relevance before section grouping and LLM rewrite
- Both integrations fall back silently on ImportError or inference failure
- 13 new tests; CF_RERANKER_MOCK=1 for zero-weight test runs
- Closes #108
pyr0ball merged commit 8fda94356f into main 2026-04-23 09:44:07 -07:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Circuit-Forge/peregrine#109
No description provided.