KPI definitions: the same data looks healthy while the operation degrades

Supply chain KPIs that look healthy while the operation degrades. Same data, different definition.

Live result
The same rows score 94.4% on one honest definition of OTIF and 33.3% on another.
  • rows behind every reading18 order lines
  • Lines, promise date, 2-day grace94.4%
  • Lines, request date, no grace72.2%
  • Complete orders, request date33.3%
Nothing about the operation changed, only the denominator, the date measured against, and the level counted at.
The same rows score 94.4% on one honest definition of OTIF and 33.3% on another.Nothing about the operation changed, only the denominator, the date measured against, and the level counted at.

KPI on the report

The target is measured as

A target needs the definition it is measured against. Name one above and this field opens.

Nothing here marks a score as met or missed. The target is drawn where you put it, against the definition you named, and the other two readings stay where they are.

One dataset. Three readings.

Select any score line to inspect the rule behind it.

Rows fixed18 order lines
Definition spread61.1 points
OTIF scores from three definitionsThe same rows score 94.4% on one honest definition of OTIF and 33.3% on another. Rows behind every reading: 18 order lines. Lines, promise date, 2-day grace: 94.4%. Lines, request date, no grace: 72.2%. Complete orders, request date: 33.3%. Nothing about the operation changed, only the denominator, the date measured against, and the level counted at. Lines, promise date, 2-day grace: 94.4%. Lines, request date, no grace: 72.2%. Complete orders, request date: 33.3%.Promise + 2 days94.4%Requested date72.2%Complete orders33.3%

Each series carries its own denominator, even though the source rows are the same.

Inspect the unchanged rows

18 order lines · synthetic data written for this page · not anyone's performance record

PO-4471 · line 1 · Gasket set

40 of 40 · requested 10 Mar · delivered 10 Mar

flips between definitions
counts

PO-4471 · line 2 · Seal kit

12 of 12 · requested 10 Mar · delivered 10 Mar

flips between definitions
counts

PO-4471 · line 3 · Fastener pack

200 of 200 · requested 10 Mar · delivered 12 Mar

flips between definitions
counts

PO-4472 · line 1 · Bearing, 6204

60 of 60 · requested 14 Mar · delivered 13 Mar

counts

PO-4472 · line 2 · Bearing, 6206

25 of 25 · requested 14 Mar · delivered 13 Mar

counts

PO-4472 · line 3 · Shaft collar

8 of 8 · requested 14 Mar · delivered 13 Mar

counts

PO-4472 · line 4 · Grease cartridge

150 of 150 · requested 14 Mar · delivered 13 Mar

counts

PO-4473 · line 1 · Cable, 4 mm²

500 of 500 · requested 18 Mar · delivered 21 Mar

flips between definitions
counts1 day late

PO-4473 · line 2 · Cable gland

480 of 500 · requested 18 Mar · delivered 21 Mar

does not count20 short

PO-4474 · line 1 · Filter element

90 of 90 · requested 20 Mar · delivered 19 Mar

counts

PO-4474 · line 2 · O-ring, viton

30 of 30 · requested 20 Mar · delivered 20 Mar

counts

PO-4474 · line 3 · Pressure gauge

14 of 14 · requested 20 Mar · delivered 20 Mar

counts

PO-4475 · line 1 · Valve, 2 in

75 of 75 · requested 24 Mar · delivered 24 Mar

flips between definitions
counts

PO-4475 · line 2 · Valve, 3 in

18 of 18 · requested 24 Mar · delivered 24 Mar

flips between definitions
counts

PO-4475 · line 3 · Flange set

220 of 220 · requested 24 Mar · delivered 29 Mar

flips between definitions
counts2 days late

PO-4476 · line 1 · Coupling

45 of 45 · requested 26 Mar · delivered 25 Mar

flips between definitions
counts

PO-4476 · line 2 · Coupling insert

6 of 6 · requested 26 Mar · delivered 25 Mar

flips between definitions
counts

PO-4476 · line 3 · Hose assembly

310 of 310 · requested 26 Mar · delivered 27 Mar

flips between definitions
counts1 day late

Build another definition

Assemble another reading

Choose what the numerator and denominator mean. The fixed rows do not move.

Load a rule

Presets restore common rule shapes. They do not mark any definition as preferred.

Count at

Reference date

Grace window

Assembled definition

Lines, promise date, 2 days of grace

A line counts when it is complete and arrives by the promise date, with 2 days of grace.

94.4%

17 of 18 lines count under this rule.

LtL\frac{L_t}{L}

where LtL_t is the complete lines meeting the chosen date and grace window, and LL all lines.

This page does not rank the assembled rule against the listed definitions.

What actually changed

The assembled rule currently matches the selected card at 94.4%. Their rule parts and row treatment are identical.

Trace the disagreement

0 changed rows

Compare the assembled rule with Lines, promise date, 2-day grace. The buckets describe row treatment. They do not grade either definition.

Show rows

PO-4471 · line 1

Gasket set

Assembled

counts

Selected

counts

PO-4471 · line 2

Seal kit

Assembled

counts

Selected

counts

PO-4471 · line 3

Fastener pack

Assembled

counts

Selected

counts

PO-4472 · line 1

Bearing, 6204

Assembled

counts

Selected

counts

PO-4472 · line 2

Bearing, 6206

Assembled

counts

Selected

counts

PO-4472 · line 3

Shaft collar

Assembled

counts

Selected

counts

PO-4472 · line 4

Grease cartridge

Assembled

counts

Selected

counts

PO-4473 · line 1

Cable, 4 mm²

Assembled

counts

Selected

counts1 day late

PO-4473 · line 2

Cable gland

Assembled

does not count20 short

Selected

does not count20 short

PO-4474 · line 1

Filter element

Assembled

counts

Selected

counts

PO-4474 · line 2

O-ring, viton

Assembled

counts

Selected

counts

PO-4474 · line 3

Pressure gauge

Assembled

counts

Selected

counts

PO-4475 · line 1

Valve, 2 in

Assembled

counts

Selected

counts

PO-4475 · line 2

Valve, 3 in

Assembled

counts

Selected

counts

PO-4475 · line 3

Flange set

Assembled

counts

Selected

counts2 days late

PO-4476 · line 1

Coupling

Assembled

counts

Selected

counts

PO-4476 · line 2

Coupling insert

Assembled

counts

Selected

counts

PO-4476 · line 3

Hose assembly

Assembled

counts

Selected

counts1 day late

Here is the maths

Model version
1.0

The formula, in words

Each definition is a filter and a fraction. The filter decides which rows count in the numerator; the definition also decides what the denominator is counting: lines, orders, units, shipments or months. Changing either half changes the answer without touching a single row.

OTIFL=LtL\mathrm{OTIF}_L = \frac{L_t}{L}
where LtL_t is lines meeting the chosen date rule in full and LL lines.
OTIFO=OtO\mathrm{OTIF}_O = \frac{O_t}{O}
where OtO_t is orders whose every line meets the rule and OO orders.
FU=UsUoF_U = \frac{U_s}{U_o}
where FUF_U is unit fill rate, UsU_s units shipped, and UoU_o units ordered.
FL=LfLF_L = \frac{L_f}{L}
where FLF_L is line fill rate and LfL_f lines shipped complete.
FO=OfOF_O = \frac{O_f}{O}
where FOF_O is order fill rate and OfO_f orders shipped complete.
T=StST = \frac{S_t}{S}
where TT is on time delivery, StS_t shipments meeting the chosen date on the chosen event, and SS shipments.
V=KIˉV = \frac{K}{\bar I}
where VV is inventory turns, KK cost of goods sold, and Iˉ\bar I average inventory.or
V=EIˉV = \frac{E}{\bar I}
where EE is revenue.or
V=KIeV = \frac{K}{I_e}
where IeI_e is point in time inventory.
SC=C0CS_C = \frac{C_0}{C}
where SCS_C is service by cycles, C0C_0 clean cycles, and CC cycles.
SU=UsUoS_U = \frac{U_s}{U_o}
where SUS_U is service by units.
SD=D0DS_D = \frac{D_0}{D}
where SDS_D is service by days, D0D_0 clear days, and DD days in the window.

A worked example

Order PO-4471 has three lines, all delivered complete. Two arrived on the requested date and one arrived two days later, on the promised date. Under a line-level definition with a two-day grace against the promise, all three count and the order contributes 3 of 3. Under a line-level definition against the request date with no grace, two of three count. Under an order-level definition against the request date, the order contributes zero, because one late line makes the whole order late. One order, three answers: 100%, 67%, 0%.

Twelve replenishment cycles carry 36,000 demanded units across 360 days. Three cycles run short by 40, 25 and 15 units across 4, 3 and 2 days. Clean cycles are 912=75.0%\frac{9}{12} = 75.0\%, units filled are 35,92036,000=99.8%\frac{35{,}920}{36{,}000} = 99.8\%, and clear days are 351360=97.5%\frac{351}{360} = 97.5\%.

How the workshop compares two rules

Row disagreement is the number of fixed source rows where one rule counts the row and the other does not. Score difference is the assembled reading minus the selected card reading. The rule parts remain visible because matching scores can still come from different events, dates or denominators.

R=∣H∣R=\lvert H\rvert
where RR is row disagreement and HH the set of rows with different count decisions.
ΔS=Sa−Sc\Delta S=S_a-S_c
where ΔS\Delta S is score difference, SaS_a the assembled reading, and ScS_c the selected card reading.

Compare the default assembled OTIF rule, lines against the promise date with two days of grace, with the selected request date line rule with no grace. Four of eighteen source rows change treatment. The readings are 94.4% and 72.2%, so the score difference is 94.4−72.2=22.294.4 - 72.2 = 22.2 percentage points. This direction describes the current comparison and does not rank either definition.

What this does not model

Real datasets are larger, dirtier and carry cases these do not: partial deliveries across several dates, cancelled and re-entered lines, customer-caused delays, holds, substitutions, consignment stock, and the difference between the date a system recorded and the date something physically happened. Every one of those is another definition decision, and every one of them moves the number. The service cycle rows do not model a reorder point, stock policy, substitution rule or a cycle crossing the edge of a reporting window. A target is an annotation against one named definition. It does not change a reading and it is not evaluated here.

Why no definition here is marked correct

All of them are in live use inside serious organisations, and each is the right answer to a different question. A line-level measure tells you about your warehouse; an order-level measure tells you about your customer's experience. The failure mode is not choosing the wrong one. It is reporting a number without stating which one, and comparing two numbers that were never the same measure.

Each definition shown is used in practice and none is presented as the correct one. The point is that a KPI without its definition is not a number. Nothing here scores you, your team or your suppliers.