28 January 2026
Building a churn feature store for mobile
A feature store for churn prediction is not a dump of every event your tracker already captures. It is a deliberately small table whose columns you can explain while standing. Most of the work is deletion.
Start with intent, not taps
If your dictionary still contains button_clicked_17, stop. Collapse to intents: search performed, item saved, checkout attempted, checkout failed, support opened, permission denied, widget opened, notification disabled. Taps are evidence of a confused UI, not of loyalty. They also explode cardinality the week design ships a new bottom nav.
Leakage loves recency
“Days since last purchase” looks innocent and quietly contains the outcome. Users who are about to leave have not purchased; the column is a restatement of the label. We ban pure recency of the target behaviour and keep recency of adjacent behaviours instead: days since last search, last widget open, last successful delivery. Adjacent recency still predicts; it does not tautologise.
Columns that keep surviving our cut
Across commerce and mid-core games in our archive, three families refuse to die:
- Session depth (screens per session, not sessions per day).
- System permissions decaying (notifications, background refresh, location).
- Social or household signals (guild mute, shared-device hints, multi-profile switches).
Spend features matter, but they arrive late and they flatter finance. If you only have room for eight columns, do not let four of them be money.
Time travel in mobile clocks
Install time, first-open time, and first-intent time are three different origins. Feature stores that mix them produce models that look brilliant in backtest and foolish in production. Pick one origin per model and write it at the top of the notebook. In the Churn Lab we still catch teams using install time for Line mini-app onboarding, where first intent happened yesterday inside a chat.
How we grade it in class
Students in Cohort Signals submit a store of no more than twelve columns, a leakage note, and a sentence for each column that a PM could repeat. Novelty is not scored. If your twelfth column exists to impress a data-science interview, it fails.