-
Notifications
You must be signed in to change notification settings - Fork 151
Description
Problem
The hiring-agent tool currently provides robust 1-to-1 resume analysis based on the implicit job description for HackerRank's SDE Intern role. However, two critical capabilities are missing:
- The ability to evaluate candidates against an explicit job description provided as a PDF
- Support for batch processing multiple candidates against a single job description, which reflects the typical N-to-1 shortlisting workflow used in real-world hiring
Adding these capabilities would significantly expand the utility of the existing agent and better align it with practical recruitment workflows.
Proposed Solution
I propose implementing two high-impact workflows to extend the CLI functionality:
1. JD-Augmented 1-to-1 Scoring
Enables users to provide both a resume and a job description for detailed fit analysis:
python score.py /path/to/resume.pdf /path/to/jd.pdf2. Multi-Candidate Batch Processing and Shortlisting
Accepts a directory of resumes, a single job description, and a cutoff score threshold. Processes all resumes, ranks them, and outputs a shortlist of candidates meeting the minimum score:
python score.py /path/to/resume_directory /path/to/jd.pdf <cutoff_score_int>Implementation Details
A comprehensive set of changes has been developed in a separate fork that integrates cleanly with the existing architecture:
Core Module Changes
models.py
- Added
ScoresWithJDandEvaluationDataWithJDmodels to structure enriched evaluation (with JD) output
template_manager.py
- Introduced
jd_system_messageandjd_evaluation_criteriaprompts for fit analysis
evaluator.py
- Implemented
_load_evaluation_prompt_with_jdfor loading the final, decorated JD-based evaluation prompt - Added
evaluate_resume_with_jdto handle the JD-based evaluation flow
transform.py
- Created
transform_evaluation_response_with_jdto parse LLM output into CSV rows (to be saved)
score.py
- Significantly refactored the driver script to support new CLI argument patterns
- Added
_jd_contextfunction for job description parsing from PDF to text - Implemented
evaluate_resume_with_jdas the core 1-to-1 scoring function - Created
dir_mainfunction to orchestrate batch processing and ranking workflow in the directory - Added
print_evaluation_results_with_jdfor clean, user-facing output formatting like the base evaluation output - Sanity checks have been added for all CLI usage arguments
Status:
The complete implementation for this feature is finished on my fork. The code is modular, follows the project's style (black), and is ready for review. I am opening this issue to discuss the feature and ensure it aligns with the project's roadmap. If this direction is welcome, I am happy to add the required smoke tests and open a formal Pull Request immediately.

