A surrogate model is a trained ML model used to predict the objective function of the reaction in the generated chemical space. Three types of surrogate models were explored, namely K-Nearest Neighbor, Random Forest, and XGBoost. The first two were implemented in Python using the packages Scikit-learn, and the latter has been implemented with the help of a dedicated package, XGBoost. More details regarding the architectures can be found in Section S5.1 of the ESI.