v1.0 · Apache 2.0 · EN

JOB
SENSE

job_description.txt → structured.json

A fine-tuned 3B model that reads hiring intent and returns structured JSON — no regex, no patching.

┌─────────────┬─────────────┬─────────────┬─────────────┐
│     3B      │     700     │      9      │     EN      │
│  parameters │  max_tokens │   fields    │  language   │
└─────────────┴─────────────┴─────────────┴─────────────┘

01 — What it does

Paste a job description. JobSense reads hiring intent and returns clean, structured JSON.

No regex rules. No schema patching. No post-processing.

input  →  job_description.txt
output →  structured.json

02 — Signal extraction

Job descriptions hide signals across multiple sentences. JobSense surfaces all of them:

signals:
  - mandatory vs nice-to-have skills
  - seniority inferred from responsibilities
  - work mode: hybrid / remote / onsite
  - relocation expectations
  - immediate joining requirements
  - salary language and compensation ranges

03 — Live example

Input

We are looking for an experienced Backend Developer to lead our team.
FastAPI is mandatory. MongoDB, httpx, Uvicorn are preferred.
Hybrid role in Delhi. 6-8 years exp. Immediate joiners preferred.
Competitive salary.

Output

{
  "role": "Backend Developer",
  "sub_role": "FastAPI Backend Dev",
  "seniority": "senior",
  "skills": [
    { "name": "FastAPI",   "importance": "required"  },
    { "name": "MongoDB",   "importance": "preferred" },
    { "name": "httpx",     "importance": "preferred" }
  ],
  "experience": "6 to 8 years",
  "location":   "Delhi",
  "work_mode":  "hybrid",
  "joining":    "immediate",
  "salary":     "competitive"
}

04 — Response schema

Root fields

field type values
role string primary job title
sub_role string specialization
seniority string junior · mid · senior · lead
skills array see skill object below
experience string years required
location string city / region / remote
location_type string city · region · country · remote
work_mode string hybrid · remote · onsite
joining string immediate · notice_period · flexible
salary string compensation signal

Skill object

field type values
name string skill name
importance string required · preferred · contextual
category string skill grouping

05 — Quick start

Gradio API

pip install gradio_client
from gradio_client import Client

client = Client("mantraraval/jobsense-app")
result = client.predict(
    text="YOUR JOB DESCRIPTION HERE",
    api_name="/extract_jd",
)
print(result)

Local inference

pip install transformers peft accelerate torch
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel

BASE     = "unsloth/Qwen2.5-3B-Instruct"
JOBSENSE = "mantraraval/jobsense"

tokenizer = AutoTokenizer.from_pretrained(BASE, trust_remote_code=True)
model     = AutoModelForCausalLM.from_pretrained(BASE, device_map="auto")
model     = PeftModel.from_pretrained(model, JOBSENSE)

inputs = tokenizer("YOUR JOB DESCRIPTION HERE", return_tensors="pt").to(model.device)
output = model.generate(**inputs, max_new_tokens=700)

print(tokenizer.decode(output[0]))

06 — Stack

base_model  →  Qwen2.5-3B
method      →  LoRA + PEFT
precision   →  float16
decoding    →  deterministic

07 — Constraints

- English only          # multi-language on roadmap
- Short JDs             # may return sparse fields
- GPU recommended       # for production throughput

08 — Roadmap

[ ] multi-language support
[ ] confidence scores per field
[ ] GGUF quantized release
[ ] public dataset launch

Citation

@misc{raval2025jobsense,
  author    = {Mantra Raval},
  title     = {JobSense: Structured Information Extraction from Job Descriptions},
  year      = {2025},
  publisher = {Hugging Face}
}

jobsense · hiring intelligence · by mantraraval
Downloads last month
5
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for mantraraval/jobsense

Base model

Qwen/Qwen2.5-3B
Adapter
(463)
this model

Space using mantraraval/jobsense 1