Dolendra/Redrob-Talent-Hire
0
Redrob-Talent-Hire — Redrob Hackathon v4
AI recruitment ranker that scores Current Fit vs Future Fit, surfaces Hidden Gems, and explains why keyword ATS would fail.
Live demo: This HuggingFace Space runs the Streamlit dashboard on data/sample_candidates.json (50 candidates). Full 100K ranking runs locally via rank.py.
Quick start (local)
Use a virtual environment so dependencies stay isolated:
Windows (PowerShell):
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txtmacOS / Linux:
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt# One-time offline prep (network allowed):
python scripts/precompute_embeddings.py --candidates data/candidates.jsonl --save-model
# Rank top 100 (offline, no network):
python rank.py --candidates candidates.jsonl --out team_xxx.csv --validate
# Dashboard locally (automated script to avoid Windows OpenBLAS issues):
.\run-app.ps1
# Or manually:
# $env:OPENBLAS_NUM_THREADS="1"; $env:OMP_NUM_THREADS="1"; streamlit run app.pyFormulas
Architecture
- Two-pass streaming over JSONL/
.gz— never loads 100K into RAM - Pass 1: pool min/max for Adaptability & Career Velocity
- Pass 2: score +
heapqtop-100 with tie-break by ascendingcandidate_id - Reasoning: fact-slot contrast cards (no LLM in
rank.py)
Submission
- Rename CSV to your registered ID:
team_xxx.csv - Validate:
python validate_submission.py team_xxx.csv - Upload with `submission_metadata.yaml`
Reproduce command: python rank.py --candidates ./candidates.jsonl --out ./submission.csv
Project layout
app.py # HF Space entrypoint → dashboard/app.py
rank.py # Public CLI
validate_submission.py # Organizer CSV validator
src/ # parser, features, scoring, explainability, main
dashboard/ # Streamlit + Plotly Opportunity Map
scripts/precompute_embeddings.py
config/weights.json
data/job_description.md
data/sample_candidates.json
data/embeddings/skill_vectors.npzPush to GitHub and HuggingFace Space
This repo uses two remotes (they are different destinations):
# Push to BOTH after each change:
.\scripts\push-both.ps1 "describe your change"
# Or manually:
git add -A
git commit -m "your message"
git push origin main # GitHub
git push hf main # HuggingFace SpaceIf git push origin only updated the Space before, that was because origin pointed at HuggingFace. It is now fixed to GitHub.
