Model Description
Given a listing context (item, price, seller profile, buyer profile) and a conversation history, the model predicts the next participant's turn as a structured JSON object with five fields:
{
"action": "offer_with_message",
"price": 45.0,
"message_labels": ["build_rapport", "invoke_compromise"],
"message": "Hi, I've been looking for this exact item...",
"response_time": 3
}
Action types: offer, offer_with_message, accept, decline, message_only, no_response
Message labels: 20 negotiation strategy categories (e.g. build_rapport, request_information, justify_with_market_data, declare_cost_limit_seller_firm, etc.)
Training Details
Table with columns: Setting, Value| Setting | Value |
|---|
| Base model | Qwen3-4B |
| LoRA rank | 64 |
| LoRA alpha | 128 |
| Dropout | 0.05 |
| Target modules | q, k, v, o, gate, up, down projections |
| Template | qwen3_nothink (no thinking tokens in loss) |
| Checkpoint | 9777 (epoch 3 of 3) |
| Eval loss | 0.1011 (epoch 2, best) / 0.1098 (epoch 4) |
| Hardware | 2× H200 |
| Framework | LLaMA Factory |
Training Data
50,000 sessions uniformly sampled from the full 5.9M eBay negotiation dataset — population-representative distribution.
- ~3% message sessions (~1,500 message-bearing sessions) — matches true population rate
- ~97% no-message sessions (pure offer/accept/decline exchanges)
- Population deal rate: ~43%
This uniform sampling ensures macro behavioral metrics (deal rate, session length, price distribution) reflect the true negotiation population. Label supervision (message strategy tags) is sparse due to the 3% message rate.
Evaluation (Macro Simulation Metrics)
Evaluated via session rollout simulation on 2,000 held-out sessions from the 200k uniform pool (temperature=1.0).
Table with columns: Metric, Source (200k uniform), sft-50k-v2 ep3, Δ| Metric | Source (200k uniform) | sft-50k-v2 ep3 | Δ |
|---|
| Deal rate | ~43% | 38.2% | −4.8 pp |
| Session length | — | calibrated | — |
Epoch 3 outperforms epoch 4 (deal rate 34.0%) and is selected as the best checkpoint. Epoch 4 shows signs of overfitting on the training distribution.
Note on label metrics (M6/M7): with only ~1,500 message sessions in training data, message strategy label supervision is sparse. Label-conditioned deal propensity and opponent concession metrics are unreliable for this model. See qwen3-4b-negotiation-msg-sessions-ep4 for a model with stronger label calibration.
Comparison with msg-sessions variant
Table with columns: sft-50k-v2 ep3 (this model), sft-msg-sessions ep4 | sft-50k-v2 ep3 (this model) | sft-msg-sessions ep4 |
|---|
| Training data | 50k uniform sessions | 14k message-only sessions |
| Message rate | ~3% (population-true) | ~100% (biased) |
| Deal rate (sim) | 38.2% | 45.2% |
| M6 label calibration | weak (~1,500 msg sessions) | strong (94% directional) |
| Best use case | Population-representative macro simulation | Message strategy analysis |
Usage
from transformers import AutoTokenizer, AutoModelForCausalLM
from peft import PeftModel
base_model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B")
tokenizer = AutoTokenizer.from_pretrained("xinyang-hu-00/qwen3-4b-negotiation-50k-ep3")
model = PeftModel.from_pretrained(base_model, "xinyang-hu-00/qwen3-4b-negotiation-50k-ep3")
model = model.merge_and_unload()
Important: use temperature=1.0 for simulation rollouts. Greedy decoding (T=0) produces degenerate loops.
Limitations
- Deal rate (38.2%) is ~5pp below source population (~43%) — the model under-estimates deal closure probability.
- Message strategy label predictions are weakly calibrated due to sparse label supervision in training data (~1,500 message sessions out of 50k total).
- Evaluated on eBay negotiation data; behavior on other negotiation domains is untested.
Citation
@misc{hu2026negotiation,
title={Fine-tuning Qwen3-4B for eBay Negotiation Turn Prediction},
author={Hu, Xinyang},
year={2026}
}