Chalie-lijalem/tenacious-bench-v0.1
Tenacious-Bench v0.1 — Sales Agent Evaluation Bench Domain-specific evaluation benchmark for Tenacious's B2B sales agent. Built because τ²-Bench retail (pass@1=0.7267) completely missed five categories of production failure — the agent was using banned phrases in 38% of runs while scoring 0.82 on τ²-Bench. Headline result: ORPO fine-tuning on 381 preference pairs lifted held-out mean from 4.008 → 4.462 (+11.3%), Δ=+0.454, p=0.001, beating a prompt-engineered baseline by Δ=+0.290… See the full description on the dataset page: https://huggingface.co/datasets/Chalie-lijalem/tenacious-bench-v0.1.
Tenacious-Bench v0.1 — Sales Agent Evaluation Bench
Domain-specific evaluation benchmark for Tenacious's B2B sales agent. Built because τ²-Bench retail (pass@1=0.7267) completely missed five categories of production failure — the agent was using banned phrases in 38% of runs while scoring 0.82 on τ²-Bench.
Headline result: ORPO fine-tuning on 381 preference pairs lifted held-out mean from 4.008 → 4.462 (+11.3%), Δ=+0.454, p=0.001, beating a prompt-engineered baseline by Δ=+0.290, p=0.021.
Status — Complete (2026-05-02)
Quick Start — reproduce in 10 minutes
Requirements: Python 3.10+, no GPU, no API key
git clone https://github.com/chacha1921/Sales-Agent-Evaluation-Bench
cd Sales-Agent-Evaluation-Bench
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtScore 3 hand-authored tasks (zero setup):
python evaluation/scoring_evaluator.py --demoExpected output:
Task: DEMO-001 Aggregate: 4.33/5.0 PASS ✓
Task: DEMO-002 Aggregate: 3.75/5.0 PASS ✓
Task: DEMO-003 Aggregate: 4.17/5.0 PASS ✓Score the full dev split (71 tasks, heuristic mode, no API key):
python evaluation/scoring_evaluator.py --split dev --mock-llmInspect the ablation results from the live Colab run:
import json
d = json.load(open("ablation_results.json"))
print(f"Delta A: Δ={d['delta_a']['observed_delta']} p={d['delta_a']['p_value']}")
# → Delta A: Δ=0.4538 p=0.001Dataset
Model
Key Artifacts
Reproducing Training (Google Colab T4)
# Install
!pip install unsloth trl datasets peft bitsandbytes
# Clone repo and pull preference pairs
!git clone https://github.com/chacha1921/Sales-Agent-Evaluation-Bench
%cd Sales-Agent-Evaluation-Bench
# Train ORPO (~44 min on T4)
!python training/train_orpo.py
# Compare ORPO vs SimPO on dev split
!python training/compare_methods.py \
--orpo-adapter runs/orpo/adapter \
--simpo-adapter runs/simpo/adapter
# Run held-out ablations (upload held_out/tasks.jsonl first — it is sealed locally)
!python training/run_ablations.py \
--winner orpo \
--adapter runs/orpo/adapter \
--mock-llmRepository Layout
audit/ Act I — gap memo (5 τ²-Bench gaps with trace evidence)
dataset/ Act II — schema, banned phrases, datasheet, IRA protocol
tenacious_bench_v0.1/ train / dev splits (held_out sealed, not pushed)
evaluation/ Act I — scoring evaluator, 7 machine-verifiable checkers
generation/ Act II — 4 authoring scripts, judge filter, contamination check
training/ Acts III–IV — methodology, preference pairs, training scripts
week10_artifacts/ Read-only seeds — probe library, failure taxonomy, trace log
ablation_results.json Act IV — Delta A/B/C with bootstrap CIs (mock_mode=False)
held_out_traces.jsonl Act IV — per-task traces, 32 tasks × 3 arms
training_run.log Act IV — hyperparameters + ORPO loss curve
model_card.md Act V — HuggingFace model card
memo.md Act V — CEO/CFO decision memo (2 pages)
blog_post.md Act V — Technical blog post draft
evidence_graph.json Act V — machine-readable claim → evidence indexCost
License
Dataset: CC BY 4.0. Code: MIT. Model adapter: Apache 2.0 (inherits from Qwen3 base model).
