Joyce

PORTFOLIO

Back to Projects
Live2026

FinSentiment MLOps Pipeline

View CodeLive Demo

ABOUT THIS PROJECT

End-to-end MLOps pipeline for financial news sentiment classification — trained, versioned, tested, containerised, and deployed to Azure with a full CI/CD pipeline.

Classifies financial headlines as positive, neutral, or negative using scikit-learn (90% accuracy, 0.90 weighted F1). MLflow handles experiment tracking and model versioning. FastAPI serves predictions via REST API with 9 automated pytest tests and a quality gate that blocks bad models from shipping. Containerised with Docker, pushed to Azure Container Registry, and deployed to Azure Container Apps in UK South — auto-scaling 1–3 replicas. CI/CD via GitHub Actions runs in under 4 minutes. Streamlit UI for interactive inference.

WHAT I LEARNED

MLflow experiment tracking changes how you think about model development — every run is logged, every metric is comparable, and you stop guessing which version was best

A quality gate in CI/CD (blocking deployment if F1 drops below threshold) is what separates a pipeline from a toy — the model has to earn its deploy

pytest for ML isn't just unit testing — testing prediction schema, response time, and edge case inputs catches production failures before they happen

Docker makes the 'it works on my machine' problem disappear, but writing a clean multi-stage Dockerfile for a Python ML app takes more thought than expected

Azure Container Apps auto-scaling is deceptively simple to configure and genuinely impressive to watch — zero-to-replica in seconds under load

TECH STACK

Pythonscikit-learnMLflowFastAPIpytestDockerGitHub ActionsAzure Container RegistryAzure Container AppsStreamlit

LIVE PREVIEW

Having trouble viewing? Open in new tab

Back to all projects