Early in a project forecasting Teams seat adoption for a mid-market segment, I built a regression model using historical license purchase data. The model predicted strong growth, but actual adoption came in about forty percent below forecast. After digging in, I realised I had not accounted for IT admin activation lag — licenses purchased don't equal active users for weeks. I updated the model to include an activation delay coefficient, reran the forecast, and it tracked much more closely. I presented the revised numbers to the PM and we adjusted the roadmap targets accordingly.
I built a churn-risk model for Microsoft 365 enterprise renewals. It hit eighty-three percent accuracy in holdout testing, and I presented it with confidence. Three months after deployment, the sales team flagged that high-risk accounts the model flagged were actually renewing fine — but low-risk accounts were churning. I went back and found I had trained on accounts that had already churned, creating survivorship bias in my feature set. The model had learned the shape of customers we had already lost, not the ones we were about to lose. What genuinely changed for me was not just the model — I now run an explicit survivorship-bias check as the first step in every retention or conversion modelling project. I documented that as a team standard. The retrained model brought false-negative rate down from thirty-one to nine percent, and more importantly the sales team started trusting the output.