Data Fabric · Feature Store
One definition of churn score, shared by every agent
Features are computed once and served online. That is what stops the retention agent and the voice agent from describing the same member two different ways in the same afternoon.
Served features
7
Serving p95
22ms
worst feature in the set
Features drifting
2
over the 5% threshold
Training / serving skew
0.8%
measured nightly
Feature catalogue
Tap a row to act on it — ownership, backfill or retirement
| Feature | Type | Freshness | Serve p95 | Used by | Drift |
|---|---|---|---|---|---|
| engagement_7d | float | 40s | 12ms | retention, lifecycle | 2% |
| churn_score | float | 6 hours | 22ms | retention, voice | 4% |
| risk_band | enum | 5 min | 9ms | stoxo, portfolio, compliance | 1% |
| renewal_pressure | float | 24 hours | 14ms | revenue, retention | 7% |
| language_pref | enum | live | 8ms | whatsapp, voice, marketing | 0% |
| kyc_blocker_class | enum | 2 min | 11ms | onboarding, support | 3% |
| bot_likelihood | float | live | 7ms | fraud, surveillance | 5% |
Drift watch
Distribution shift against the training window
engagement_7d2%
churn_score4%
risk_band1%
renewal_pressure7%
language_pref0%
kyc_blocker_class3%
bot_likelihood5%
renewal_pressure is drifting at 7% because the annual cohort mix changed after the last pricing move — the model is due a refresh, not a patch.
Rules for a feature to be served
Anything else stays a notebook column
- One definition, used for both training and serving, from the same code path.
- A declared freshness target; missing it withholds the feature instead of serving a stale value.
- A PII classification. A feature derived from PII is served as a band, never as the raw value.
- A named owner, and a list of agents that break if it changes.
- A drift alarm that opens an incident, not an email nobody reads.

