The problem

Indiegraf serves 180+ independent publishers on a subscription model. Losing a publisher is costly, and without a system to flag risk early, the pattern only becomes visible after it’s too late to act.

The framing

The goal was to catch risk early using signals already being collected: how actively a publisher was using the platform, and how that activity was trending over time. Rather than waiting for a cancellation to reveal a problem, the model looks for the early warning signs that tend to show up beforehand.

Tools

Python, pandas, and scikit-learn for modeling and evaluation, using a Random Forest model trained on 250 publisher accounts. Feature exploration and validation in Jupyter notebooks.

predicting publisher churn

Result

  • AUC: 0.81 — in plain terms, given one at-risk account and one healthy account, the model correctly ranks the at-risk one higher about 81% of the time
  • Behavioral signals (engagement patterns, usage trends) were the strongest predictors, stronger than firmographic data like publisher size or tenure
  • Data quality gaps capped accuracy further. That’s a finding on its own: it points to specific gaps worth closing before the next iteration, not just a limitation to note in passing

What this demonstrates

Going from a business problem to a working, evaluated model. Not the algorithm choice on its own, but the judgment behind what to build, what data to trust, and what the result actually means for the business.

Updated: