Although you can use Temporal for general purpose orchestration and cron jobs, I think it solves a more specific problem.
It’s about running a flow which is centered around a specific user, and maintaining state.
For example think about a flow called “order a meal”.
The flow has multiple steps, and between the steps it sits (and maintains state) and listens to outside events, in order to advance to the next step in the flow.
The “order a meal” flow might have steps like payment started, payment finished, food picked, food delivered, user sent review…
And you have millions of flows like this, a flow for each user, with robust state management, that knows exactly what is the current state.
Prefect doesn’t have the concept of saving state.