Veerendra R. Patil
Project 06 — MLOps
06 MLOps·Production engineering

Phishing URL Detection — Production MLOps

The robotics work proves I can make models run on hardware. This one proves I can make them run in production — versioned, containerised and deployed by a pipeline rather than by hand.

RoleSole developer
StackPython · FastAPI · MLflow · Docker · AWS
ServingFastAPI REST endpoint
ReleaseGitHub Actions → ECR → EC2
MLOps pipeline: data ingestion, validation and transformation, model training tracked by MLflow, served by FastAPI, containerised with Docker, pushed to AWS ECR and released to EC2 by GitHub Actions Data Ingest · validate Phishing-site features Train 5 classifiers GridSearchCV MLflow Experiment tracking MLflow / DagsHub FastAPI REST predictions Serving layer GitHub Actions Build · test · push AWS ECR Docker image registry AWS EC2 Self-hosted runner · release Three-stage release pipeline
Training path and release path — diagram drawn for this case study Fig. 01
01 — Overview

A model nobody can call is not a service

Classifying a URL as phishing or legitimate is a modest modelling problem. Turning that classifier into something with a stable interface, reproducible training, a versioned artefact and a repeatable path to a running server is the actual engineering.

This project is built as the second thing rather than the first: an end-to-end MLOps pipeline where the model is one component among several.

02 — Pipeline

Ingest, validate, transform

The pipeline ingests, validates and transforms phishing-site data as discrete stages rather than one script. Validation sits between ingestion and transformation on purpose — it is the stage that catches a bad upstream change before it silently becomes a bad model.

03 — Models

Five classifiers, one comparison

  • Trained and benchmarked five classifiers — Random Forest, Gradient Boosting, AdaBoost and others — on the same prepared data.
  • Hyperparameters tuned with GridSearchCV, so the comparison is between tuned models rather than default ones.
  • Every run tracked in MLflow via DagsHub, so the selection is auditable after the fact instead of remembered.
04 — Serving

A REST endpoint, not a notebook cell

Predictions are served through a FastAPI REST endpoint — a real interface with a schema that other software can call, which is the point at which a model becomes usable by anything other than its author.

05 — Release

Shipped by a pipeline, not by hand

Deployment is automated as a three-stage CI/CD pipeline: GitHub Actions builds the application, pushes a Docker image to AWS ECR, and releases it through a self-hosted EC2 runner.

The same discipline carried directly into professional work — decibyl.ai reached production on an equivalent GitHub Actions → ECR → EC2 release path.

5classifiers benchmarked
3stage CI/CD release pipeline
RESTFastAPI prediction endpoint
06 — Technologies

Modelling

  • Scikit-learn
  • GridSearchCV
  • Random Forest
  • Gradient Boosting
  • AdaBoost

Tracking

  • MLflow
  • DagsHub

Serving

  • FastAPI
  • REST

Delivery

  • Docker
  • GitHub Actions
  • AWS ECR
  • AWS EC2
07 — Repository

Source

Code on GitHub.

Veerendra R. Patil — © 2026 Back to index