Back to notes

February 28, 2026 · 5 min read

Intent Classification Accuracy Drifted Over Six Months, Here's Why

A chatbot's intent classifier didn't get worse overnight. It eroded quietly for six months before anyone noticed the pattern in the complaint tickets.

PostmortemNLP

Nobody noticed the chatbot getting worse. What people noticed was a slow uptick in frustrated escalations over about half a year, with no single incident to point at. By the time we investigated properly, intent classification accuracy had drifted from the mid-90s down into the high 70s, and it had happened gradually enough that no single week's metrics looked alarming.

The cause was a feature launch nobody connected to the chatbot

Six months earlier, the product team had renamed a core feature and changed the terminology used across the app and marketing. Customers, naturally, started phrasing their questions using the new terms. The intent classifier had been trained on the old vocabulary and had no concept of the new phrasing mapping to the same intents — it had effectively gone stale the day the rename shipped, and just kept getting slightly staler every week after.

A model doesn't need a bug to fail. Sometimes the world it was trained on just stops existing, one renamed feature at a time.

We hadn't been monitoring intent confidence scores over time, only overall resolution metrics, which absorbed the drift slowly enough to stay below anyone's alert threshold until the escalation trend finally forced a look.

  • Monitor classifier confidence distributions over time, not just end-to-end resolution metrics — confidence erodes before outcomes visibly do.
  • Treat any product rename, terminology change, or UI relabel as a trigger to review downstream NLP models, not just docs and UI copy.
  • Retrain on a rolling window of recent real transcripts rather than a static dataset that ages with the product.
  • A slow drift with no single incident is still a real incident, just one that needs trend monitoring instead of alerting to catch.

We added a quarterly retrain cadence against the last 90 days of transcripts and a standing Slack notification whenever product ships a feature rename. Neither is sophisticated. Both would have caught this in week two instead of month six.