Skip to content

Projects

Two projects · one system of evidence

A portfolio of services, and the template it produced

Everything here is two projects. The ML-MLOps Portfolio — one monorepo with three production services. And the Production Template — the open-source system that packaged what those services taught.

The ML-MLOps Portfolio

The portfolio is not three models — it is one production system that happens to serve three of them. Each service ships with its FastAPI contract, test suite, Docker image and Kubernetes manifests; around them sits the shared MLOps surface: Terraform-provisioned GKE and EKS clusters, Kustomize overlays per environment, GitHub Actions CI/CD with quality gates, MLflow tracking, Prometheus + Grafana monitoring, and the incident writeups that prove the system was operated, not just deployed.

395+ automated tests and 18 architecture decision records hold it together — every non-trivial choice is documented with the alternatives it rejected.

How to review it

Pick one service and follow its evidence chain: metrics → serving path → deployment → incident. The debugging deep dive on BankChurn is the strongest 10-minute read.

Portfolio deployment walkthrough — full build, test and serve cycle

The three services inside the portfolio — each with its own deep-dive page:

churn classification

BankChurn Predictor

AUC 0.87 90% coverage FastAPI · K8s · SHAP

Cost-aware churn classification — and the serving incident that went from 81% errors to 0% at half the CPU.

BankChurn Predictor

financial nlp

NLPInsight Analyzer

80.6% accuracy 98% coverage CPU-only serving

Financial sentiment with an explainable, low-cost inference path — the heavier transformer documented as a rejected trade-off.

NLPInsight Analyzer

demand forecasting

ChicagoTaxi Pipeline

R² 0.96 6.3M rows PySpark · temporal CV

Demand forecasting at scale with strictly temporal validation — and the data leak that was caught before the metrics were published.

ChicagoTaxi Pipeline

All the infrastructure, testing, security and monitoring proof behind the portfolio lives in one place:

The Production Template

The second project is what the first one taught: an open-source starter system that encodes the portfolio's production lessons as reusable defaults. Scaffold a new ML service and it arrives with the serving and training patterns, deployment overlays and operating guardrails already in place — the mistakes the portfolio paid for once, prevented by default.

Inside the box: a FastAPI serving scaffold with the single-worker + ThreadPoolExecutor pattern, training pipelines with quality gates (metric, fairness, leakage), 6 env×cloud Kustomize overlays for GCP and AWS, Terraform modules, CI/CD that signs images and attests SBOMs (SLSA L2), closed-loop drift monitoring, 32 documented anti-patterns and 28 ADRs.

Its differentiator is the governed AI-assisted development layer: behavior rules, skills, workflows and an audit trail that keep agentic coding reviewable and bounded — engineered, not hidden.

Why it matters

The portfolio proves I can build and operate ML services. The template proves I can turn that experience into a system other teams can adopt.