Serial ctDNA carries a signal that any single test throws away. Span reads the pattern of detections over time, and flags resistance while it's still below the limit of detection.
When a liquid biopsy comes back negative, it doesn't mean the resistant clone is gone. It means the clone is below the assay's limit of detection (LoD). At low variant allele frequency, detection flickers, detect, non-detect, detect, because each draw samples a finite number of molecules (Poisson sampling).
A single value is blind during this sub-LoD dwell. So is its slope. But the rising rate of detections is not, and that is what Span models.
It models the biology of the assay directly, rather than fitting a curve to noisy numbers.
Each draw's detect / non-detect is a Bernoulli outcome under Poisson sampling with LoD left-censoring, so non-detects inform the model instead of being discarded as zeros.
A sequential generalised-likelihood-ratio (GLR) test watches for an upward shift in each variant's detection rate, the earliest statistical sign a resistant clone is expanding.
Evidence is combined across competing resistance pathways (ESR1, PIK3CA, RB1, HER2), so the alarm reflects the whole resistance landscape, not one marker.
The alarm is tuned to a matched false-alarm rate, so lead time is reported honestly against a controlled rate of false positives.
Span is a transparent decision rule, there is nothing to overfit, and every alarm traces back to the detection pattern that produced it. That interpretability is a feature, not a limitation: it's what makes the method defensible to clinicians and regulators.
Span turns serial ctDNA, EHR context, and standard-of-care imaging into a patient trajectory, and reads three things off it.