Creating multiple jobs that must run one after another, and use same input

So i have a job that is really 3 big jobs,

Now job number 1 and job number 3, can fail often because of how the legacy code architectured,

There is a VPN connection between getting data for job 1 and job 3,

Now if the job fails,eg at job 3, i don’t want to redo the job 1 as it is error prone and is a likely spot to fail.

I want to do job 1 if it fails keep trying, and if it succeeds, i want it to move on to job 2, this is stable and likely to succeed, then i want to move on to job 3, if job 3 fails, i don’t want it to start from the beginning, it should start from doing only job 3,

Is it possible to coordinate such a task?