Spaces:
Running
Running
Redrob x Hack2Skill - India Runs : Talentry AI submission
This folder contains the deliverable shortlist for the Redrob x Hack2Skill - India Runs Data & AI Challenge.
Hackathon problem statement (verbatim)
Build an Intelligent Candidate Discovery & Ranking Engine.
Given a pool of 100,000 anonymised candidates (
candidates.jsonl, schema incandidate_schema.json) and a single Job Description for a Senior AI Engineer role at Redrob, produce a ranked top 100 shortlist as a CSV / XLSX matchingsample_submission.csvand conforming to the rules invalidate_submission.py.Constraints:
- CPU only, no GPU.
- No network / LLM calls during ranking.
- Reproducible: a single command must regenerate the submission.
- Submission must pass the official
validate_submission.pyvalidator.- Evaluation is automated (LightGBM ground-truth match) and human (manual reasoning review at Stage 4).
What is in this folder
data/
├── README.md # this file
├── raw/
│ ├── candidates.jsonl # full 100,000-candidate pool (git-ignored)
│ └── sample_candidates.json # 50-row fixture used by the HF Space
├── output/ # local CLI smoke runs land here (git-ignored)
└── redrob_submission/
├── submission.csv # *** OFFICIAL DELIVERABLE ***
└── submission.xlsx # same shortlist, styled for human review
Inputs used to produce redrob_submission/
| Item | Value |
|---|---|
| Candidates file | data/raw/candidates.jsonl |
| Candidates count | 100,000 records |
| Job Description | India_runs_data_and_ai_challenge/job_description.docx |
| JD role / seniority | Senior AI Engineer (Founding Team), 5-9 yrs |
| Top-K | 100 |
| Engine version | talentry-ai v1.0.0 (commit f4ea7a8+) |
Reproduce in one command
cd talentry-ai
source .venv/bin/activate # or: pip install -e ".[dev]"
python -m talentry.cli.rank \
--candidates data/raw/candidates.jsonl \
--jd "/path/to/job_description.docx" \
--out data/redrob_submission/submission.csv \
--also-xlsx
Then validate against the official checker:
python "../[PUB] India_runs_data_and_ai_challenge/India_runs_data_and_ai_challenge/validate_submission.py" \
data/redrob_submission/submission.csv
# -> Submission is valid.
Output summary
submission.csv- 1 header row + 100 ranked candidates, validator-clean (candidate_id,rank,score,reasoning).submission.xlsx- same shortlist materialised throughopenpyxlwith frozen header row, sized columns and wrapped reasoning column. Both files have identical ranking and reasoning - use whichever your workflow prefers.
Top 5 candidates produced for this JD
| rank | candidate_id | score | one-line summary |
|---|---|---|---|
| 1 | CAND_0086022 |
1.0673 | Senior Applied Scientist, 5.3 yrs, Kolkata - retrieval/ranking work at Sarvam AI |
| 2 | CAND_0068351 |
1.0476 | Lead AI Engineer, 6.4 yrs, Delhi - retrieval/ranking work at Sarvam AI |
| 3 | CAND_0002025 |
1.0272 | Senior AI Engineer, 5.9 yrs, Trivandrum - retrieval/ranking work at Apple |
| 4 | CAND_0008425 |
1.0240 | Senior NLP Engineer, 7.8 yrs, Kolkata - retrieval/ranking work at Ola |
| 5 | CAND_0018499 |
1.0181 | Senior ML Engineer, 7.2 yrs, Noida - retrieval/ranking work at Zomato |
Run the CLI again at any time to refresh the table; the ranker is fully
deterministic given the same candidates.jsonl + JD pair.
How the engine ranks (summary)
- Stream-ingest the 100K JSONL pool through a slotted-dataclass loader.
- Schema-validate every record against
candidate_schema.json(failures surface as a git-diff-style report in the UI). - Parse the JD into a
JobRequirementsDTO (role family, seniority band, must / nice / disqualifier skills). - Score every candidate on 6 explainable signals: title-career alignment (anti keyword-stuffer), hybrid BM25 + TF-IDF semantic JD fit, skill-evidence with endorsement trust, experience-band match, location & logistics, behavioural availability.
- Honeypot guard down-ranks impossible profiles (e.g. 8 yrs at a 3-year-old company).
- Compose a 1-2 sentence reasoning citing real facts from the profile.
- Write the validator-clean CSV + XLSX.
Runtime on a single CPU for the full 100K pool: ~3 min 23 sec wall-clock.
License
MIT - see ../LICENSE.