CoolFace
Modelpublic

IshikaMahadar/hiring-fleet-grpo-adapter

sourceHugging Faceapache-2.0updated 5mo agoView on Hugging Face
0likes
Model Card

Hiring Fleet — GRPO LoRA Adapter

Base model: Qwen/Qwen2.5-1.5B-Instruct Method: GRPO (Group Relative Policy Optimization) via HuggingFace TRL Environment: IshikaMahadar/resume-env GitHub: Ishika-eng/OpenEnv-Meta-Hackathon Blog: We Made AI Detectives That Catch Fake Resumes


What this adapter does

This LoRA adapter fine-tunes Qwen2.5-1.5B-Instruct to act as a hiring fleet agent — a multi-agent AI system that investigates resumes for fraud through sequential specialist roles.

The model learned through GRPO to:

  • —✅ Output valid JSON actions reliably (~40% → ~95% format compliance)
  • —✅ Select role-appropriate actions (reduced out-of-role violations significantly)
  • —✅ Prioritise verify_credential as the Fraud Specialist's first move
  • —✅ Write fraud indicator keywords (failed, denied, fabricated) in reasoning when flagging fraud

The Environment

The Hiring Fleet environment runs 4 sequential agents per episode:

PhaseAgentCan SeeTools
1Fraud Specialistheader, referencesverify_credential, check_reference
2Skills Specialistexperience, education, skills, projectsask_clarification
3Timeline Specialistheader, summary, experienceask_clarification
4Overseer❌ no raw resumeread_reports, submit_final_decision

The Overseer can't see the resume — it must reason purely from specialist reports. If the specialists write poor reports, the Overseer has no signal. The chain of reasoning is real.


Training Details

ParameterValue
Base modelQwen/Qwen2.5-1.5B-Instruct
Adapter typeLoRA (r=16, alpha=32)
Target modulesqproj, vproj
Trainable parameters2,179,072 (0.14% of total)
FrameworkHuggingFace TRL — GRPOTrainer
HardwareT4 GPU (Google Colab free tier)
Training steps792
Epochs2
Group size4 completions per prompt

Reward curve:

GRPO Reward Curve

MetricValue
Start reward0.736
Best reward0.850
Improvement+15.5%

Evaluation

Evaluated against the live HF Space environment — 9 episodes (3 per difficulty tier):

AgentEasyMediumHardOverall
Rule-based baseline0.7470.8731.0000.873
Fine-tuned (this adapter)0.7220.8881.0000.870

The trained model matches the hand-coded expert baseline despite learning purely from rewards — no hard-coded logic. On medium difficulty it outperforms the baseline (0.888 vs 0.873).


How to use

python
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
import torch

base_model = "Qwen/Qwen2.5-1.5B-Instruct"
adapter    = "IshikaMahadar/hiring-fleet-grpo-adapter"

tokenizer = AutoTokenizer.from_pretrained(base_model, trust_remote_code=True)
model     = AutoModelForCausalLM.from_pretrained(base_model, torch_dtype=torch.float16)
model     = PeftModel.from_pretrained(model, adapter)
model.eval()

# The model expects a JSON action as output given an observation prompt
# See inference_fleet.py in the GitHub repo for full multi-agent inference

See `inference_fleet.py` for complete inference code with any OpenAI-compatible model API.


Training notebook

![Open In Colab](https://huggingface.co/spaces/IshikaMahadar/resume-env/blob/main/traingrpofleet.ipynb)

Run on Colab free tier (T4 GPU). ~2 hours to complete.


Built at OpenEnv Meta Hackathon 2026 — Team SmartBytes (Ishika Mahadar · Prisha Parikh · Saee Kolhapure)