Add functionality to handle pre and post jobs
Currently, there is a (rough around the edges) post-processing stage. But we need a pre-processing stage. For example to generate the data.
Additionally, there needs to a sensible way to pass data between these stages.