CourseAI / ML Engineer: The Complete Course · Module 15: Professional Practice · part 88 of 93
Part 88 · Module 15: Professional Practice

Lesson 1: Judgement: when to build, when to refuse

28 min read·
Module 15 · Lesson 1 · About 50 minutes · Needs: Module 3 lesson 3 (costs, the 0.129 threshold, calibration), Module 5 lesson 3 (the grams), Module 8 lesson 3 (cost per 1,000 predictions) and the Kestrel data (course-guide/06).

The situation

Week 15 at Kestrel. The model works, so Morag Sinclair brings three requests. "Warn customers about late parcels, yes. Also forecast when the island ferries will stop. And build a model just for bank holidays: they were a mess in August." Adaeze adds: "Tell Morag what it saves and how sure you are. In pounds."

One parcel runs through the lesson: KP0093042 (simulated), collected at Birmingham on Thursday 27 August 2026, economy service on rural route BHM-R11, 53.8 km, promised for Monday 31 August, the bank holiday. It was late, and nobody was warned.

WHERE THIS FITS The Kestrel system this lesson SHARED SERVICES Depot scans parcels, routes Ingestion nightly batch Validation Pandera checks Data lake Parquet, DuckDB Experiments MLflow runs Training LightGBM, Optuna Online store Feast, Redis Features point in time Gates vs the champion Registry staged versions Serving API FastAPI, ONNX Consumers vans, customers Retraining trigger, budget Alerting on call Monitoring drift, Evidently Late labels a day later Orchestrator Prefect flows Versions DVC, Git CI/CD GitHub Actions Containers Docker images
This lesson adds no new component: it decides which parts are worth building, from the consumers back to training (blue); the rest is grey.

The rest of this course is yours to keep

This course is bought on its own, once, and stays readable afterwards, including the parts added to it later.

Or open everything with a plan