CPU-only hybrid ranker for the Redrob Senior AI Engineer JD: dual FAISS + dual BM25 retrieval, career-proof scoring, honeypot defenses, rule-based reasoning. No LLM, no network at rank time.
| Live sandbox | https://huggingface.co/spaces/Sarthak080907/proofrank |
| GitHub | https://github.com/Sarthak6o1/ProofRank |
| Reproduce command | python rank.py --indices ./indices --out ./submission.csv |
Pre-built indices/ ship with the repo (Git LFS). No candidates.jsonl, no build_index.py, no GPU, no network during Step 6.
Prerequisites: Git, Git LFS, Python 3.11+ on your PATH, ~2 GB free disk.
Install Python from python.org (Windows: check Add Python to PATH) before Step 5 if python is not recognized.
Clone and package install (Steps 1–5) take standard setup time depending on your network download speed.
Step 6 - the reproduce_command — runs within the hackathon compute constraint: ~10–20 s on CPU, no network, using pre-built indices/ loaded locally.
git lfs installgit clone https://github.com/Sarthak6o1/ProofRank.gitIf Git LFS was already enabled, index files usually download during clone.
cd ProofRankgit lfs pullSkip this if indices/faiss_full.index is a large file (~100+ MB), not a tiny LFS pointer stub.
LFS files: *.index, *.pkl. Normal Git files: features.parquet, candidate_ids.npy, jd_query_vec.npy.
pip install -r requirements-rank.txtSix packages only (numpy, pandas, pyarrow, pyyaml, faiss-cpu, rank-bm25).
Do not use full requirements.txt (torch, streamlit); that is for rebuilding indices or the sandbox only.
On Windows, if python / pip fail, use py -3 and py -3 -m pip, or run scripts/setup_env.ps1 then:
.\.tools\python-embed\python.exe -m pip install -r requirements-rank.txtIf setup stops at No module named venv, that is expected — use the embed command above, then run Step 6 with .\.tools\python-embed\python.exe instead of python.
This is the reproduce_command in submission_metadata.yaml. Runs offline using pre-built indices/.
python rank.py --indices ./indices --out ./submission.csvExpected output:
Ranking with cached FAISS + BM25 + structured scorer.
Wrote 100 rows to .../submission.csv
~10–20 s on an 8-core CPU laptop — within the hackathon compute constraint (CPU-only, no network).
Quick local format check (stdlib only):
python India_runs_data_and_ai_challenge/validate_submission.py submission.csvChecks header, 100 rows, ranks 1–100, monotonic scores, and CAND_####### IDs.
What Step 6 produces and what it depends on:
| Item | Detail |
|---|---|
| Output | submission.csv: header + exactly 100 ranked rows, monotonic scores |
| Runtime | ~10–20 s on CPU with pre-built indices/, no network |
| Artifacts | indices/ via Git LFS; offline index build (~85 min) is already done |
Used by reproduce: rank.py, requirements-rank.txt, config/role_spec.yaml, src/*.py, indices/.
Not required for Step 6: app.py, indices_sample/, full requirements.txt, scripts/build_index.py, docs/. The Hugging Face sandbox is a separate demo path — see below.
Portal deliverables and upload checklist: SUBMISSION.md. Team metadata: submission_metadata.yaml.
https://huggingface.co/spaces/Sarthak080907/proofrank — ranks the 50-profile sample (or your uploaded JSON ≤100) with the same engine as rank.py. Deploy notes: docs/SANDBOX_DEPLOY.md.