// LABOR

Why a labor time needs a sample size

One number cannot tell you whether a job is predictable. Three can.

5 min readOtoIndex

Ask most sources how long front brake pads take and you get a single figure. It is usually derived from a time study, it is usually rounded, and it carries no indication of how much real jobs vary around it. That is fine for billing a customer. It is not enough for scheduling a bay.

An empirical labor time is computed from completed jobs on the same configuration, and it arrives with the two things a single number cannot carry: how many jobs it rests on, and how widely those jobs spread.

labor.json
GET /v0/labor?config_key=2019_honda_cr_v_ex_l15be&service=brake_pad_replacement
{
"services": [],
"estimates": [
{
"estimate_confidence": 0.3,
"estimate_source": "model_estimate",
"estimated_hours": 1.4,
"name": "Brake Pad Replacement",
"service": "brake_pad_replacement"
}
]
}

That is the reference vehicle today: services[] is empty, so the only figure is a model estimate, labelled as one and carrying a low confidence. A measured row, with its sample size and spread, appears once enough completed jobs exist for the configuration.

Read the spread, not the median

The p25 and p75 figures bracket the middle half of the jobs. A tight bracket means the work is predictable: you can book the bay to the median and be right most of the time. A wide one means something about the job varies, and the honest move is to schedule to the upper end and give the time back when you beat it.

The sample size tells you how much weight to put on any of it. Six jobs is a signal, not a law. Sixty is something you can plan a week around. The API gives you the count so you can make that judgment yourself instead of inheriting ours.

When there is no measurement yet

Most services on most configurations have not been measured enough times to say anything useful. Rather than leave a gap, the response fills every applicable service from a tier model and labels it: estimate_source reads model_estimate where the figure came from the model, and empirical where it came from jobs. A user interface that reads that one field can show the difference honestly, and nothing has to change when a service crosses over.

Labor lives on /v0 while the dataset grows, which means the shape can change with notice on the changelog. The fields above are the ones worth building against.

// TRY IT

Run these calls yourself.

Every endpoint in this post runs on the free sandbox with no key and no signup, against the reference vehicle.