ResumeForge-8b / README.md
sriksven's picture
Create README.md
ceba537 verified
---
license: apache-2.0
base_model: Qwen/Qwen2.5-7B-Instruct
tags:
- resume
- job-search
- qlora
- unsloth
- qwen2.5
- career
- ats-optimization
datasets:
- custom
language:
- en
pipeline_tag: text-generation
library_name: transformers
model-index:
- name: krishna-resumatch-7b
results: []
---
# krishna-resumatch-7b
A fine-tuned **Qwen2.5-7B-Instruct** model specialized for **resume tailoring from job descriptions**. Given a job description, it generates an ATS-optimized 1-line professional bio and 6 categorized technical skill sections matched to the JD's requirements.
## Key Details
| | |
|---|---|
| **Base model** | Qwen/Qwen2.5-7B-Instruct |
| **Method** | QLoRA (4-bit NF4, rank 16, alpha 16) |
| **Library** | Unsloth + TRL SFTTrainer |
| **Dataset** | Custom JD-to-resume pairs (seed dataset) |
| **Hardware** | NVIDIA RTX A5000 (24GB VRAM) on RunPod |
| **Training time** | ~6.5 minutes (300 steps) |
| **Final loss** | 0.218 |
| **Parameters trained** | 40.4M of 7.66B (0.53%) |
| **Format** | ChatML (`<\|im_start\|>` / `<\|im_end\|>`) |
| **Output** | Merged 16-bit safetensors |
## What It Does
**Input:** A job description with role title, company context, and technical requirements.
**Output:** A structured resume optimization containing:
1. A 1-line professional bio emphasizing quantifiable business impact
2. Exactly 6 technical skill headers, each populated with relevant skills matched to the JD
The model is trained to think like an ATS (Applicant Tracking System) and a technical recruiter simultaneously — maximizing keyword alignment while keeping skills grounded in realistic engineering experience.
## Usage
### Transformers
```python
from transformers import AutoModelForCausalLM, AutoTokenizer
model = AutoModelForCausalLM.from_pretrained("sriksven/krishna-resumatch-7b")
tokenizer = AutoTokenizer.from_pretrained("sriksven/krishna-resumatch-7b")
messages = [
{
"role": "system",
"content": (
"You are a resume optimization expert. Given a job description, generate "
"a tailored 1-line bio mentioning $1.5M USD impact and exactly 6 purely "
"technical skill headers with relevant skills for each. No soft skills. "
"Start the bio with Engineer."
),
},
{
"role": "user",
"content": (
"Given this job description, generate a tailored 1-line resume bio and "
"6 technical skill headers with relevant skills for each.\n\n"
"Job Description: AI Engineer at a healthcare startup. Requirements: "
"LangChain, RAG pipelines, FastAPI, Docker, PostgreSQL, OpenAI API, "
"vector databases, Python, CI/CD, model evaluation."
),
},
]
inputs = tokenizer.apply_chat_template(messages, return_tensors="pt", add_generation_prompt=True)
outputs = model.generate(inputs, max_new_tokens=512)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
```
### Expected Output Format
```
Bio: Engineer with production ML and AI systems experience delivering $1.5M USD
in business impact through scalable architectures and data-driven solutions.
Skills:
LLM & Agent Frameworks: LangChain, OpenAI API, GPT-4, Prompt Engineering, RAG Pipelines, Model Evaluation
Vector Databases & Retrieval: ChromaDB, Qdrant, FAISS, Semantic Search, Embedding Models
Backend & APIs: FastAPI, REST APIs, Python, PostgreSQL, Redis
Cloud & DevOps: Docker, CI/CD, GitHub Actions, AWS, Deployment Automation
Data Engineering: ETL Pipelines, SQL, Data Modeling, Data Validation
Testing & Monitoring: Pytest, Unit Testing, Logging, Observability, CloudWatch
```
### Unsloth (faster inference)
```python
from unsloth import FastLanguageModel
model, tokenizer = FastLanguageModel.from_pretrained(
model_name="sriksven/krishna-resumatch-7b",
max_seq_length=2048,
load_in_4bit=True,
)
FastLanguageModel.for_inference(model)
```
## Design Philosophy
The model follows strict resume optimization rules:
- **Bio:** Always 1 line, starts with "Engineer", mentions $1.5M USD impact, no years of experience, no skills listed in bio
- **Skills:** Exactly 6 headers, all purely technical, no soft skills, no qualifiers like "Expert"
- **ATS alignment:** Skills are selected to maximize keyword match with the job description
- **Grounded:** Only includes skills that map to realistic ML/data/software engineering experience
## Intended Use
- Automated resume tailoring for job applications
- ATS keyword optimization tools
- Career coaching and job search platforms
- Research on instruction-following for structured document generation
## Limitations
- Trained on a small seed dataset — may not generalize perfectly to all JD categories
- Outputs are templated to a specific resume style (bio + 6 skill headers)
- Does not generate full resumes (experience bullets, education, projects)
- Skill suggestions are based on training patterns, not verified against actual candidate background
- Best results with the specific system prompt format used during training
## Training Infrastructure
| | |
|---|---|
| **GPU** | NVIDIA RTX A5000 24GB |
| **Cloud** | RunPod ($0.27/hr) |
| **Framework** | Unsloth 2026.5.2 + TRL + Transformers 5.5.0 |
| **Precision** | BF16 training, 4-bit NF4 base quantization |
| **Optimizer** | AdamW 8-bit |
| **Learning rate** | 1e-4, cosine decay |
| **Batch size** | 8 effective (2 per device × 4 accumulation) |
| **Packing** | Disabled (small dataset) |
| **Steps** | 300 (150 epochs over seed data) |
## Source Code
Training scripts and configs: [github.com/sriksven/LLM-FineTune-Suite](https://github.com/sriksven/LLM-FineTune-Suite)
## License
Apache 2.0