Lesson 1: Pipelines that can run twice: batch, stream and backfill
Module 5 · Lesson 1 · About 50 minutes · Needs: pandas, the Kestrel data (course-guide/06), and Module 3 lesson 3 for why columns known only after delivery stay out of training.
The situation
Week 5 at Kestrel. Every night each depot sends Tomasz a scan file: the parcels it collected that day. The spring prototype read one CSV that someone exported by hand. Adaeze wants a data path that runs every night with nobody touching it. Rhys asks the question that decides the design: "Some nights the Inverness link drops. When the job runs again, what happens to the data?"
One depot-day runs through the lesson: Dartford on Monday 7 September 2026, 435 parcels (simulated), the day scanner software v4 arrived. Lesson 3 catches what v4 did to weight_kg; this lesson makes sure the day lands once, and only once.