You describe what you want to know in plain English. We work out which method answers it, write the code, check the result, and hand back a report, plus the analysis itself, which is yours to keep and re-run.
Start a build Not sure yet? Start from something prebuilt →
Opens your account. You see the plan before anything is built.
The same question can be answered at different depths, from a quick read to a full study with models and diagnostics. The depth is worked out from the question and the data, and the plan shows it before anything is built.
The data. card_data.json, the numbers file published with the delivered report IBM HR Employee Attrition Drivers. The underlying data is the public IBM HR attrition dataset.
The calculation. Python, standard library only. This exact code ran against the file when this page was built, and printed the output below it.
import json
from math import exp, sqrt
card = json.load(open("card_data.json"))
table = card["rf_data"]["summary_table"]["tables"]["attrition_by_segment"]
ot = {r["segment_value"]: r for r in table if r["segment"] == "Overtime"}
yes, no = ot["Yes"], ot["No"]
p1 = yes["attrited"] / yes["headcount"]
p0 = no["attrited"] / no["headcount"]
rr = p1 / p0
se = sqrt(1 / yes["attrited"] - 1 / yes["headcount"]
+ 1 / no["attrited"] - 1 / no["headcount"]) # log risk ratio
print("overtime:", yes["attrited"], "of", yes["headcount"], f"left ({p1:.1%})")
print("no overtime:", no["attrited"], "of", no["headcount"], f"left ({p0:.1%})")
print("risk ratio", round(rr, 2), "95% interval",
round(rr * exp(-1.96 * se), 2), "to", round(rr * exp(1.96 * se), 2))
overtime: 127 of 416 left (30.5%)
no overtime: 110 of 1054 left (10.4%)
risk ratio 2.93 95% interval 2.33 to 3.68
What it says. The delivered report's own table shows 30.5% of employees who worked overtime left, against 10.4% who did not: overtime workers left about 2.9 times as often, with a 95% interval of 2.33 to 3.68. Recomputing a headline figure from the published table is a check anyone can repeat on this report.
What it does not say. This is a raw comparison of two groups. Overtime goes with job role and level, which the report's logistic regression adjusts for; there the odds ratio for overtime is 5.97 (95% interval 4.20 to 8.55). An odds ratio is not a risk ratio and runs larger when the outcome is common, so the two figures are not meant to match. Neither is proof that overtime causes attrition.
Open the full report to see the methods the build chose and the diagnostics behind them.
Further reading on the method in the worked example. Each reference was looked up and its authors, title, year and venue confirmed on 27 October 2026.
Tell us what went wrong, in your own words. We capture the page you're on automatically, so no need to describe where you are.