the short answer
Clients rarely quit out of nowhere - they drift first. The early signals are behavioural: a missed check-in, a slower reply, activity dropping below that client's normal, adherence thinning, a message left unread. You catch them by watching for changes from each client's own baseline, and by filtering your client list to surface exactly those signals - missing check-ins, no contact, unread messages, ending soon - so the quiet ones do not vanish behind the active ones. These are prompts for a personal conversation, not a prediction that someone will cancel. The point is to reach out while there is still time to fix the fit.