Skip to content

SalaryNegotiationArena

SalaryNegotiationArena is an OpenEnv MCP environment where LLM agents learn salary negotiation by sparring with 5 AI hiring experts with hidden priorities and styles (analytical, aggressive, collaborative, bureaucratic,

Core trick

Exposes propose, counter, accept, reject, and walk-away as MCP tools so a GRPO-trained Qwen LoRA negotiates against simulated hiring personas.

Tags

Description

SalaryNegotiationArena is an OpenEnv MCP environment where LLM agents learn salary negotiation by sparring with 5 AI hiring experts with hidden priorities and styles (analytical, aggressive, collaborative, bureaucratic, visionary). It runs on a Docker-isolated FastAPI MCP server exposing negotiation tools: propose, counter, accept, reject, walk_away. | Profile | Salary | Equity | Start | Priority | Balanced | 0.4 | 0.3 | 0.3 | Mix | Cash-heavy | 0.7 | 0.1 | 0.2 | Salary | Equity-heavy | 0.2 | 0.6 | 0.2 | Equity | Fast-start | 0.2 | 0.2 | 0.6 | ASAP Training uses GRPO (TRL) on Qwen2.5 with LoRA. Curriculum learning, self-play, and persona drift improve robustness, increasing deal success while reducing negotiation turns.
YashJoshi2109/OpenEnv_Hack★ 20 forksJupyter NotebookCreated Mar 7, 2026 · last push Mar 8, 2026

README excerpt

---
title: SalaryNegotiationArena
emoji: 🤝
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: "4.20.0"
app_file: app.py
pinned: false
license: mit
---

# 🤝 SalaryNegotiationArena

**OpenEnv Hackathon SF — Self-Improvement (Statement 4) + Snorkel AI**

An RL environment where LLM agents learn to negotiate salary packages against 5 simulated hiring experts with hidden priorities that shift over time.

Live App : https://huggingface.co/spaces/yashj2110/negotiation-arena-v2
Model : https://huggingface.co/yashj2110/salary-negotiation-qwen-1.5b

Metrics: [Training Metrics Result](/TRAINING_RESULTS.md)

### Training Loss Curve & Baseline vs GRPO Comparison
![Training Curves](assets/training_curves.png)

## Reward System: 3-Component Formula

**Total Reward = 0.2 × Format + 0.5 × Negotiation + 0.3 × Deal Quality**

| Component | Weight | What it measures | Score |
|-----------|--------|-----------------|-------|
| **Format** | 20% | Valid action type (propose, counter, accept, reject, walk_away) | 1.0 valid, 0.0 invalid |
| **Negotiation** | 50% | Outcome quality — deal terms vs baseline ($140k, 2.5%, 90 days) | +1.0 above baseline, +0.5 at baseline, -1.0 no deal, +0.2 early close bonus, -0.1 per turn |
| **Deal Quality** | 30% | Snorkel-weighted utility across 4 labeling profiles | +0.3 if utility ≥ 0.5, else 0.0 |

### Deal Quality: Snorkel-Weighted Labeling Profiles

Each profile is a different "judge" evaluating the same deal with different priorities:

| Profile | Salary We

Team