Assert the invariants between stages
Row counts should not grow through cleaning; a share column should still sum to one; a key should stay unique. Assert these between stages so a bad transformation fails at the stage that caused it rather than in the report.
Make the whole thing one command
One command from raw file to finished report is the test that the pipeline is reproducible. If a human has to click something in the middle, that step is not reproducible and will not survive the next month.