Skip to content
Preptima
mediumConceptScenarioCase StudyMidSeniorStaff

A churn model scores 0.94 AUC offline and barely beats the baseline in production. One of its strongest features is populated by a process that runs after the customer has already churned. Explain what happened and how you would fix it.

The feature encodes the outcome, so the model reads the answer rather than predicting it. Offline the label and the feature come from the same snapshot, which is why validation looks excellent; in production the feature is empty at scoring time and the signal vanishes. Fix by defining features by when they were available and validating on a forward time split.

5 min readUpdated 2026-08-16Target archetype: Big Tech, Product Startup, Fintech

Answer

Short answer

The feature is not predicting churn; it is recording it. Offline, the feature and the label are both read from the same warehouse snapshot, so a value written after the customer churned sits in the training row as though it had been known beforehand. The model learns to read it and scores brilliantly. In production the feature is null or stale at the moment you need a prediction, the signal vanishes, and the model falls back to whatever weak information remains.

Was this answer helpful?

Likely follow-ups

  • Your AUC drops from 0.94 to 0.71 after the fix. How do you present that to a stakeholder who saw the first number?
  • How would a feature store with point-in-time correctness have prevented this?
  • Give me two other ways leakage sneaks in that have nothing to do with timestamps.
  • The feature is available in production but arrives six hours late. Is it usable at all?
  • What check would fail the build if someone reintroduces this next quarter?

Related questions

Further reading