Luma Payroll Gym
← Heatmap / DeepSeek V4.1 Flash · Task 55
DeepSeek V4.1 Flash · Tool use · Task 55 (Calculation, middle bracket) Mean 100.0%
Field Expected Rollout #1 (100%) Rollout #2 (100%) Rollout #3 (100%)
decision calculate calculate calculate calculate
currency LCR LCR LCR LCR
gross pay 3092.77 3092.77 3092.77 3092.77
employee contribution 216.49 216.49 216.49 216.49
allowed deduction 0.00 0.00 0.00 0.00
taxable pay 2876.28 2876.28 2876.28 2876.28
income tax 187.63 187.63 187.63 187.63
net pay 2688.65 2688.65 2688.65 2688.65
clauses R1 R2 R3 R4 R5 R6 R1 R2 R3 R4 R5 R6 R1 R2 R3 R4 R5 R6 R1 R2 R3 R4 R5 R6
Prompt
Process this monthly payroll record under the supplied rulebook. Return the R6 or R7 JSON answer.
Retrieve the case inputs with list_documents and read_document. Reference rows are available only through lookup_reference. Use calculate for exact decimal arithmetic.
Rollouts
Rollout #1 100.0% passed · 4 tool calls · 4.5s · $0.0016
ComponentScoreClauses
decision 100.0% R1 R2 R3 R4 R5 R6
exact 100.0% R1 R2 R3 R4 R5 R6
field accuracy 100.0% R1 R2 R3 R4 R5 R6
citations 100.0% R1 R2 R3 R4 R5 R6
Assistant
list_documents()
Reasoning
Let me start by listing documents.
Tool
[
  {"id": "2dabbb0836821c10-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="2dabbb0836821c10-payroll")
Reasoning
Read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "3092.77", "payroll_month": "2026-06"}
}
Assistant
lookup_reference(reference="first-half")
Reasoning
No amendment, no contract_gross_pay. Month 2026-06 is first half (Jan-Jun). Let me look up reference.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "3500.00",
  "deduction": "400.00",
  "free": "1000.00",
  "upper": "3000.00",
  "middle_rate": "0.10",
  "upper_rate": "0.18"
}
Assistant
calculate(program="gross = 3092.77\nemployee_contribution = round(min(gross, 3500.00) * 0.07, 2)\nallowed_deduction = 0.00\ntaxable_pay = round(gross - employee_contribution - allowed_deduction, 2)\nmiddle_portion = max(0, min(taxable_pay, 3000.00) - 1000.00)\nupper_portion = max(0, taxable_pay - 3000.00)\nincome_tax = round(middle_portion * 0.10 + upper_portion * 0.18, 2)\nnet_pay = round(gross - employee_contribution - allowed_deduction - income_tax, 2)")
Reasoning
Now compute.

gross_pay = 3092.77
contribution_rate = 0.07, cap = 3500.00
employee_contribution = 0.07 * min(3092.77, 3500.00) = 0.07 * 3092.77 = 216.4939 → round 216.49

allowed_deduction = 0.00
taxable_pay = 3092.77 - 216.49 - 0.00 = 2876.28

Income tax: free = 1000, upper = 3000, middle 0.10, upper 0.18
taxable 2876.28. Portion above 1000 up to 3000 = 2876.28 - 1000 = 1876.28 at 0.10 = 187.628
No portion above 3000.
income_tax = 187.628 → round 187.63

net_pay = 3092.77 - 216.49 - 0.00 - 187.63 = 2688.65

Let me compute exactly with calculate.
Tool
{
  "results": {"gross": "3092.77", "employee_contribution": "216.49", "allowed_deduction": "0.00", "taxable_pay": "2876.28", "middle_portion": "1876.28", "upper_portion": "0", "income_tax": "187.63", "net_pay": "2688.65"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "187.63",
  "net_pay": "2688.65",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All good. Return calculate JSON.
Rollout #2 100.0% passed · 4 tool calls · 4.8s · $0.0015
ComponentScoreClauses
decision 100.0% R1 R2 R3 R4 R5 R6
exact 100.0% R1 R2 R3 R4 R5 R6
field accuracy 100.0% R1 R2 R3 R4 R5 R6
citations 100.0% R1 R2 R3 R4 R5 R6
Assistant
list_documents()
Reasoning
Let me start by listing documents.
Tool
[
  {"id": "2dabbb0836821c10-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="2dabbb0836821c10-payroll")
Reasoning
Read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "3092.77", "payroll_month": "2026-06"}
}
Assistant
lookup_reference(reference="first-half")
Reasoning
The payroll month is 2026-06, first half. Let me look up reference first-half.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "3500.00",
  "deduction": "400.00",
  "free": "1000.00",
  "upper": "3000.00",
  "middle_rate": "0.10",
  "upper_rate": "0.18"
}
Assistant
calculate(program="contribution = round(min(3092.77, 3500.00) * 0.07, 2)\ntaxable = 3092.77 - contribution - 0.00\ntax = round((taxable - 1000.00) * 0.10, 2)\nnet = 3092.77 - contribution - 0.00 - tax")
Reasoning
Now compute.

Gross pay = 3092.77
Contribution rate = 0.07, cap = 3500.00
Employee contribution = 0.07 * min(3092.77, 3500.00) = 0.07 * 3092.77 = 216.4939 → round half up to 216.49.

Allowed deduction: omitted → 0.00. Check it doesn't exceed deduction cap (400.00) or gross pay minus rounded employee contribution (3092.77 - 216.49 = 2876.28). 0 ≤ both, fine.

Taxable pay = 3092.77 - 216.49 - 0.00 = 2876.28.

Income tax: free = 1000.00, upper boundary = 3000.00, middle rate 0.10, upper rate 0.18.
Taxable pay 2876.28 ≤ 3000, so only middle bracket applies above free.
Portion above free: 2876.28 - 1000.00 = 1876.28
Tax = 1876.28 * 0.10 = 187.628 → round half up 187.63.

Net pay = 3092.77 - 216.49 - 0.00 - 187.63 = 2688.65.

Let me verify with calculate tool.
Tool
{
  "results": {"contribution": "216.49", "taxable": "2876.28", "tax": "187.63", "net": "2688.65"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "187.63",
  "net_pay": "2688.65",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All good. Return JSON.

Clauses: calculated answers cite R1 through R6. No amendment needed, so no R9.
Rollout #3 100.0% passed · 4 tool calls · 5.4s · $0.0017
ComponentScoreClauses
decision 100.0% R1 R2 R3 R4 R5 R6
exact 100.0% R1 R2 R3 R4 R5 R6
field accuracy 100.0% R1 R2 R3 R4 R5 R6
citations 100.0% R1 R2 R3 R4 R5 R6
Assistant
list_documents()
Reasoning
Let me start by listing documents.
Tool
[
  {"id": "2dabbb0836821c10-payroll", "kind": "payroll"}
]
Assistant
read_document(document_id="2dabbb0836821c10-payroll")
Reasoning
Let me read the payroll document.
Tool
{
  "kind": "payroll",
  "record": {"gross_pay": "3092.77", "payroll_month": "2026-06"}
}
Assistant
lookup_reference(reference="first-half")
Reasoning
Payroll month 2026-06, which is first-half. Let me look up the reference.
Tool
{
  "reference": "first-half",
  "months": ["2026-01", "2026-06"],
  "rate": "0.07",
  "cap": "3500.00",
  "deduction": "400.00",
  "free": "1000.00",
  "upper": "3000.00",
  "middle_rate": "0.10",
  "upper_rate": "0.18"
}
Assistant
calculate(program="employee_contribution = round(min(3092.77, 3500.00) * 0.07, 2)\nallowed_deduction = 0.00\ntaxable_pay = round(3092.77 - employee_contribution - allowed_deduction, 2)\nincome_tax = round(max(0, min(taxable_pay, 3000.00) - 1000.00) * 0.10 + max(0, taxable_pay - 3000.00) * 0.18, 2)\nnet_pay = round(3092.77 - employee_contribution - allowed_deduction - income_tax, 2)")
Reasoning
The month is 2026-06, which is in first-half months. Good.

Now let's compute.

gross_pay = 3092.77
contribution rate = 0.07, cap = 3500.00
employee_contribution = 0.07 * min(3092.77, 3500.00) = 0.07 * 3092.77 = 216.4939 → round → 216.49

allowed_deduction = 0.00 (omitted)
deduction cap = 400.00; gross - contribution = 3092.77 - 216.49 = 2876.28; allowed deduction must not exceed min(400, 2876.28) = 400. 0 is fine.

taxable_pay = 3092.77 - 216.49 - 0.00 = 2876.28

income tax: free = 1000.00, upper = 3000.00, middle_rate = 0.10, upper_rate = 0.18.
Taxable pay 2876.28 ≤ 3000, so all above 1000 uses middle rate.
Tax = (2876.28 - 1000) * 0.10 = 1876.28 * 0.10 = 187.628 → round → 187.63

net_pay = 3092.77 - 216.49 - 0.00 - 187.63 = 2688.65

Let me calculate precisely.
Tool
{
  "results": {"employee_contribution": "216.49", "allowed_deduction": "0.00", "taxable_pay": "2876.28", "income_tax": "187.63", "net_pay": "2688.65"}
}
Assistant
{
  "decision": "calculate",
  "currency": "LCR",
  "gross_pay": "3092.77",
  "employee_contribution": "216.49",
  "allowed_deduction": "0.00",
  "taxable_pay": "2876.28",
  "income_tax": "187.63",
  "net_pay": "2688.65",
  "clauses": ["R1", "R2", "R3", "R4", "R5", "R6"]
}
Reasoning
All good. Gross pay 3092.77, month 2026-06, first-half row. No contract_gross_pay, no amendment. So calculate.

Clauses: R1 through R6 (R9 not needed).