An end-to-end sentiment classifier built the way production ML has to be built — versioned data, tracked experiments, a registered model, and an API at the end of it.
A model that only exists in a notebook cannot be rebuilt, compared, or shipped. The interesting work in ML is rarely the estimator — it is making the whole path from raw data to served prediction reproducible by someone who is not you.
Data and pipeline stages are versioned with DVC and parameterised from a single params.yaml. Experiments run as a deliberate ladder — baseline, then Bag-of-Words vs TF-IDF, then class-imbalance treatments (SMOTE, ADASYN, undersampling, class weights), then XGBoost with hyperparameter tuning — each tracked in MLflow. The winning run is registered as a model and served behind a Flask API.
That an experiment can be re-run from a clean checkout and land on the same number, and that the gap between 'a notebook that scored well' and 'an endpoint someone can call' is a pipeline problem I know how to close.
Losing hours to work an AI system could handle?
Tell me about the process. I'll tell you straight whether it's worth automating — no pitch, no obligation.
Book a call