Use text similarity (cosine) instead of machine learning to classify companies into industries
This is an interesting approach.  For me though, it raises a few questions that might impact the effectiveness of the approach:


Were all the descriptions created by the same organization, or performed for the same purpose? e.g. Descriptions are taken from SEC filings.
Have you tried any unsupervised approaches to grouping these companies based on their descriptions?  
How did you come up with 15 industries, not 14, not 16?
Have you applied stop words and removed very infrequent words?


Not being critical, but how confident are you that someone else would apply the same label to each of the 2000 instances you labeled?  Could that be one reason why the models are performing poorly?

Ultimately, to answer your question, there is no reason why domain knowledge cannot be used to inform your key words, but it seems like you will struggle when you get to industries that are "similar but different."  The good results that you have received using this method may just be indicative that you created both the labels, and the key words for the industries, which may well be what you want to achieve.

From a defense perspective, your classifier would only represent your opinion.  In the long run, you may be better off giving up a bit of performance to gain objectivity.  Company classification is difficult because of vertical and horizontal integration, and the practice of using holding companies to manage diversified businesses.  If you can take your opinion out of the process, it may be "better".  If someone disagrees with your model, they are just disagreeing with you.  If they disagree with a more traditional ML model, they are disagreeing with the dispassionate similarity of the descriptions.

HTH