A support team routes every incoming ticket by hand into one of six queues. Mis-routed tickets bounce between teams for days, and the security queue is the one that cannot afford to wait. You are building the classifier that reads the ticket text and picks the queue. The hard part is not the accuracy number: it is knowing which tickets the model should refuse to route, and noticing that the most predictive column in the training data is one you will never have at routing time.
Establish how volume is distributed across the six queues and how long the tail is.
Implement explore_queues(train_df) returning a dict with:
Look at majority_baseline_accuracy next to imbalance_ratio. Predicting one label for everything scores about 31%, and its macro F1 is under 0.09. Those two numbers disagreeing is the whole reason this project grades on macro F1.
Evaluated server-side against a hidden test set.