As said previously, a lot of machine learning projects never make it beyond a Jupyter notebook.
Sad right?
Notebooks are excellent for learning concepts, exploring data, and building models. They're heavily used in universities and online courses. But building a model is only a small part of machine learning engineering.
In the real world, a model sitting inside a notebook doesn't create value. It has to be packaged, deployed, monitored, and made accessible to users.
The challenge is that this part of machine learning is rarely taught in school. Many students graduate knowing how to train a model but have little idea how to turn it into a production-ready application. This project was built to bridge that gap.
Whether you're a student, a beginner, or even a professional looking to improve your ML engineering skills, this project shows what it actually takes to ship a machine learning system. More importantly, it helps you understand how the different pieces fit together, why each tool is used, and what alternatives exist.
You clean some data, train a model, achieve a great accuracy score... and then what?
That's where the real engineering begins.
I built the UAE Rent Prediction project to demonstrate an end-to-end machine learning workflow. Given a property's basic information, the application instantly predicts its estimated annual rent (AED) through a live web application. More than just predicting rent, the goal of this project is to demonstrate how a complete ML system is designed, built, and deployed.
Instead of writing one large script, I organized the project into a modular, production-style pipeline.
The Technology Stack
Here's how everything comes together:
-
Pipeline Orchestration (ZenML): Rather than manually executing scripts, ZenML orchestrates the complete workflow—from data ingestion and preprocessing to feature engineering, model training, and evaluation. Every step becomes reproducible and easy to maintain. If you'd like to explore other orchestration platforms, tools such as Kubeflow Pipelines, Apache Airflow, Metaflow, and Prefect are also widely used depending on your infrastructure and project requirements.
-
Experiment Tracking (MLflow): Machine learning involves constant experimentation. MLflow records every experiment by logging parameters, metrics, artifacts, and model versions, making it easy to compare runs and reproduce the best-performing model. Other popular experiment tracking tools worth exploring include Weights & Biases (W&B), Neptune.ai, Comet ML, and Aim.
-
Machine Learning (scikit-learn): The prediction engine is powered by a Random Forest Regressor trained on UAE real estate data to estimate annual rental prices accurately.
-
Backend API (FastAPI): The trained model is served through a FastAPI application, exposing a REST API that allows other applications to request predictions.
-
Frontend (Next.js): A clean and responsive interface built with Next.js lets users enter property details and receive predictions instantly.
-
Containerization (Docker): The application is fully containerized using Docker, ensuring the same environment runs consistently across development, testing, and production. Containerization simplifies deployment, improves portability, and makes it much easier for other developers to reproduce the project on their own machines.
-
Deployment: Model artifacts are stored on Hugging Face, while the FastAPI backend is deployed on Railway and the Next.js frontend is hosted on Vercel.
Note: There is no single "best" MLOps stack. The concepts—automation, experiment tracking, versioning, reproducibility, containerization, and deployment—matter far more than the specific tools. Once you understand these principles, moving from ZenML to Airflow or MLflow to Weights & Biases becomes much easier.
From Notebook to Production
Building a production-ready ML application isn't just about training a model.
Along the way, I encountered many real-world challenges—from cleaning messy data and preventing data leakage to designing a modular architecture, orchestrating pipelines, tracking experiments, packaging the model, containerizing the application with Docker, exposing the model through an API, and deploying the entire system to the cloud.
These are the engineering problems that every ML practitioner eventually faces, but they're often missing from traditional tutorials.
If you're interested in learning how all these pieces work together, exploring the project architecture, or running the complete ZenML pipeline yourself, check out the repository and experiment with it.
GitHub Repo: View Repository
Live Demo: Try the App
Training a model is only the beginning. The real value comes from building systems that people can actually use.
