Task
Input: job role, job description, and resume.
Output: strict JSON with two fields:
- decision: select or reject
- reason: one short sentence
Training Summary
- Source checkpoint: qwen3-4b-resume-lora/checkpoint-376
- Method: QLoRA / PEFT LoRA
- Dataset: AzharAli05/Resume-Screening-Dataset
- Train examples: 1,500
- Validation examples: 200
- Held-out golden eval examples: 30
- Epochs: 2
- LoRA rank: 16
- LoRA alpha: 32
- LoRA dropout: 0.05
- Final visible validation loss: 0.163954
- Final visible mean token accuracy: 0.930803
- Peak VRAM observed: 5.51 GB on a Colab T4
Final Evaluation
The final evaluation compared the base model against the uploaded adapter on 30 held-out golden examples using deterministic generation.
Table with columns: Model, N, Strict JSON rate, Schema-valid rate, Decision accuracy| Model | N | Strict JSON rate | Schema-valid rate | Decision accuracy |
|---|
| Base Qwen | 30 | 100.0% | 100.0% | 43.3% |
| Uploaded LoRA adapter | 30 | 100.0% | 100.0% | 46.7% |
Interpretation
The project succeeded as an end-to-end QLoRA workflow: data shaping, free-GPU training, precision debugging, checkpoint recovery, adapter upload, and before/after evaluation all completed.
The accuracy gain is modest: +3.3 percentage points, or one extra correct example out of 30. The adapter preserved perfect JSON/schema compliance on this small eval set, but it did not produce a dramatic decision-accuracy improvement.
A stronger next iteration would focus on cleaner labels, more held-out examples, prompt/label analysis, and a larger or better-balanced training sample before retraining.
Limitations
This is a learning and portfolio artifact, not a production hiring system. It should not be used for real employment decisions without bias testing, privacy review, legal review, and human oversight.
The 30-example eval is intentionally small for a fast sprint, so the measured accuracy should be treated as directional rather than definitive.
How To Load
Use the base model together with this PEFT adapter.
Python sketch:
from transformers import AutoModelForCausalLM
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B-Instruct-2507")
model = PeftModel.from_pretrained(base, "arupkd/qwen3-4b-resume-screener-lora")