This paper proposes an efficient, stage-wise optimisation model for scheduling part-time staff. During stage 1, the problem is formulated as a totally unimodular integer linear programme (ILP) that produces integer solution upon solving its LP relaxation. The model produces optimum work shifts of various lengths along with the optimal number of employees needed in each shift while minimising the total labour time. In the second stage, an assignment model is used to allocate employees to various work shifts while maximising their preferences. The stage-wise model has the necessary flexibility and computational efficiency to solve many real-world business scheduling problems, as illustrated by three separate case studies.