Categorizing text into dynamic amount of categories
Transfer Learning allows you to add new categories to be predicted to the output layer without needing to re-train the entire model every time a new category needs to be classified. Rather, the weights of all initial layers up to the last few layers of the network can be frozen and only the last one or two layers can be made trainable for fine-tuning the classification rather than training from scratch. This approach would be relatively fast than other methods since the dataset in your case is small.

In order for model to flag the need of a new output class by inferring on a test document, you could include a class "Unknown" in addition to existing N classes (hence, the output layer now contains N+1 classes). If the model predicts "Unknown" with highest probability, you could add a new class to the output layer after examining the test data.