A rubric-aware scoring judge for B2B outbound sales emails, trained with ORPO on
Tenacious-Bench v0.1
preference pairs. Deployed as a
rejection-sampling gate in the Tenacious Conversion Engine.
1import json, torch
2from transformers import AutoTokenizer, AutoModelForCausalLM
3from peft import PeftModel
4
5BASE_MODEL = "unsloth/Qwen2.5-1.5B-Instruct"
6ADAPTER_ID = "rafiakedir/tenacious-bench-adapter"
7
8tokenizer = AutoTokenizer.from_pretrained(ADAPTER_ID)
9base = AutoModelForCausalLM.from_pretrained(
10 BASE_MODEL, torch_dtype=torch.float16, device_map="auto"
11)
12model = PeftModel.from_pretrained(base, ADAPTER_ID)
13model.eval()
14
15JUDGE_SYSTEM = (
16 "You are a rubric-aware judge for Tenacious Consulting B2B outbound sales emails. "
17 "Given a task context and a candidate email, score it on the specified rubric dimension. "
18 "Respond with a JSON object only:\n"
19 '{"dimension": "<dim>", "score": <0.0-1.0>, "pass": <true|false>, "reasoning": "<one sentence>"}'
20)
21
22def judge(email, context, dimension):
23 user = (
24 f"EVALUATION DIMENSION: {dimension}\n\n"
25 f"TASK CONTEXT:\n{context}\n\n"
26 f"CANDIDATE EMAIL:\n{email}\n\n"
27 f"Score this email on the {dimension} dimension."
28 )
29 msgs = [{"role": "system", "content": JUDGE_SYSTEM},
30 {"role": "user", "content": user}]
31 text = tokenizer.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
32 inputs = tokenizer(text, return_tensors="pt").to(model.device)
33 with torch.no_grad():
34 out = model.generate(**inputs, max_new_tokens=128, temperature=0.1, do_sample=True,
35 pad_token_id=tokenizer.eos_token_id)
36 resp = tokenizer.decode(out[0][inputs.input_ids.shape[1]:], skip_special_tokens=True).strip()
37 s, e = resp.find("{"), resp.rfind("}") + 1
38 return json.loads(resp[s:e]) if s >= 0 else {"score": 0.5, "raw": resp[:200]}
39
40result = judge(
41 email="Casey — TalentBridge has 8 open AI/ML roles this quarter. 30-min scoping call: calendly.com/tenacious",
42 context="company: TalentBridge, stage: Series A, open_roles: 8, confidence: high",
43 dimension="signal_grounding_fidelity"
44)
45print(result)
-
Dimension coverage gap. 0 training pairs for bench_commitment_honesty, 4 for icp_segment_appropriateness due to scoring key mismatch during pair construction. The model received zero gradient signal on bench commitment honesty.
-
Backbone below Prometheus-2 threshold. Prometheus-2 demonstrated rubric-matching at 7B+ parameters. At 1.5B the model may underfit multi-dimension generalization.
-
Synthetic training distribution. All pairs derive from synthetic prospect briefs and LLM-generated emails.
-
Static bench_summary. Judge calibration drifts as real bench composition changes weekly.
1@misc{tenacious-bench-adapter-2026,
2 title = {Tenacious-Bench Judge: ORPO LoRA Adapter for B2B Sales Evaluation},
3 author = {Kedir, Rafia},
4 year = {2026},
5 url = {https://huggingface.co/rafiakedir/tenacious-bench-adapter}
6}