AssayIndex
Detection rule · severity low

AX-R04 — Digit preference in declared purity

A supplier repeatedly reports purity as a round number — 99.0, 98.5, 99.5 — where a real integration would not.

LOW1,492 records flagged22.20 % of the index
Section 1

The predicate

Published literally. A rule you cannot read is an accusation you cannot check.

coa.purity != null && (coa.purity * 10) % 5 === 0 && supplierRoundCount >= 3
Section 2

Why this rule exists

A chromatographic purity figure is the ratio of two integrated areas. It has no reason to land on a half or a whole percent, and across a large set of genuine measurements the terminal digit should be roughly uniform. It is not, on some certificates.

The rule requires a pattern rather than a single instance: a supplier must have at least three round-numbered declarations before any of them is flagged, because 99.0 % is a perfectly possible result once. Three times is a distribution.

Three explanations are consistent with the pattern. The figure may have been rounded for presentation from a real measurement, which is defensible but should be stated. It may be a specification being reported as a result — "≥99.0 %" becoming "99.0 %" somewhere between the laboratory and the certificate, which is the most common case in the index's experience. Or it may not correspond to a measurement at all.

The rule cannot distinguish between these. What it can do is put the pattern next to the independent measurements of the same lots, and let the reader see whether the round numbers are optimistic. Across the index they are: rounded declarations diverge from the independent median by a mean 0.63 pp against 0.29 pp for unrounded ones.

Section 3

Incidence

How often the rule fires, where, and when. A rule that never fires is not calibrated; a rule that fires on half the index is measuring the population rather than screening it.

Records flagged 1,492 n=1492
Share of index 22.20% n=6722
Distinct suppliers 18 n=18
Distinct batches 251 n=1492
SupplierFlaggedRecords in indexRate
CPC15930951.5%
BCH14831646.8%
WXT13835339.1%
GGPeps13456723.6%
KP12336433.8%
Homopeptide11757520.3%
TFC8757315.2%
ERP8424734.0%
SSA8229427.9%
SGN6923030.0%
WWB5752210.9%
QSC5349510.7%
HJ5224821.0%
GL Biochem4712637.3%
QYB4632514.2%
FGP3729612.5%
SWB313179.8%
MKM2827210.3%

Flagged records per quarter

2024-Q1: 11 · 2024-Q2: 88 · 2024-Q3: 178 · 2024-Q4: 87 · 2025-Q1: 113 · 2025-Q2: 109 · 2025-Q3: 242 · 2025-Q4: 196 · 2026-Q1: 161 · 2026-Q2: 226 · 2026-Q3: 81

Section 4

Recently flagged

The 30 most recent of 1,492 records flagged by AX-R04. Every flagged record →
ReportCompoundSupplierLotLabQuarterPurity %Water %Recovery %ProvenanceFlagsResult
AX-2026-042461Kisspeptin-10SWBSWB-2603-D6238Janoshik2026-Q398.354.6596.5Supplier-supplied3FAIL
AX-2026-043335LiraglutideCPCCPC-2602-G1978Janoshik2026-Q397.294.91Laboratory-retained1FAIL
AX-2026-043574N-Acetyl Semax AmideBCHBCH-2602-E8253Janoshik2026-Q397.758.8597.9Supplier-supplied1FAIL
AX-2026-043106TirzepatideKPKP-2608-D5921PeptideMeter2026-Q398.905.45105.4Supplier-supplied2MARGINAL
AX-2026-042172SemaglutideHomopeptideHOMO-2604-X8921Janoshik2026-Q399.645.1691.9Supplier-supplied1MARGINAL
AX-2026-043332LiraglutideCPCCPC-2602-G1978Janoshik2026-Q397.164.8891.3Supplier-supplied1FAIL
AX-2026-041538RetatrutideQYBQYB-2602-G6308Medutest2026-Q398.502.85Supplier-supplied2MARGINAL
AX-2026-043108TirzepatideKPKP-2608-D5921Janoshik2026-Q399.705.45Supplier-supplied2MARGINAL
AX-2026-043488PramlintideWXTWXT-2603-D6052Janoshik2026-Q397.874.37Supplier-supplied1MARGINAL
AX-2026-043575N-Acetyl Semax AmideBCHBCH-2602-E8253Janoshik2026-Q397.449.19104.8Supplier-supplied1FAIL
AX-2026-042460Kisspeptin-10SWBSWB-2603-D6238Kestrel2026-Q399.554.2190.8Supplier-supplied3MARGINAL
AX-2026-043100TirzepatideKPKP-2608-D5921VendorInvestigate2026-Q398.275.3194.4Buyer-sourced2MARGINAL
AX-2026-043336LiraglutideCPCCPC-2602-G1978Janoshik2026-Q397.694.58104.9Supplier-supplied1MARGINAL
AX-2026-043322TirzepatideCPCCPC-2607-L2552Janoshik2026-Q396.794.8896.1Supplier-supplied2FAIL
AX-2026-041536RetatrutideQYBQYB-2602-G6308Janoshik2026-Q398.052.92Supplier-supplied2MARGINAL
AX-2026-043111TirzepatideKPKP-2608-D5921PeptideMeter2026-Q399.715.15Supplier-supplied2MARGINAL
AX-2026-042194RetatrutideHomopeptideHOMO-2605-V9833PeptideMeter2026-Q398.904.0798.8Supplier-supplied3MARGINAL
AX-2026-043321TirzepatideCPCCPC-2607-L2552Kestrel2026-Q397.845.34Supplier-supplied2MARGINAL
AX-2026-043105TirzepatideKPKP-2608-D5921Medutest2026-Q399.085.43Supplier-supplied2MARGINAL
AX-2026-042458Kisspeptin-10SWBSWB-2603-D6238Kestrel2026-Q398.514.71102.4Supplier-supplied3MARGINAL
AX-2026-043112TirzepatideKPKP-2608-D5921Janoshik2026-Q398.855.68Supplier-supplied2MARGINAL
AX-2026-043110TirzepatideKPKP-2608-D5921Janoshik2026-Q399.585.91104.9Supplier-supplied2MARGINAL
AX-2026-042463Kisspeptin-10SWBSWB-2603-D6238Nordanalyt2026-Q398.354.9398.6Supplier-supplied3FAIL
AX-2026-042195RetatrutideHomopeptideHOMO-2605-V9833Kestrel2026-Q398.994.02107.2Supplier-supplied2MARGINAL
AX-2026-043323TirzepatideCPCCPC-2607-L2552Janoshik2026-Q397.195.4395.3Supplier-supplied3MARGINAL
AX-2026-042167SemaglutideHomopeptideHOMO-2604-X8921Janoshik2026-Q399.575.06104.9Supplier-supplied2MARGINAL
AX-2026-043315TirzepatideCPCCPC-2607-L2552Janoshik2026-Q396.555.3496.5Supplier-supplied2FAIL
AX-2026-043330LiraglutideCPCCPC-2602-G1978Janoshik2026-Q397.904.58Supplier-supplied1MARGINAL
AX-2026-042465Kisspeptin-10SWBSWB-2603-D6238Kestrel2026-Q399.034.8396.4Supplier-supplied3MARGINAL
AX-2026-042462Kisspeptin-10SWBSWB-2603-D6238Janoshik2026-Q398.614.7396.5Supplier-supplied3MARGINAL