Many multi-scale systems exhibit stochastic and deterministic dynamics. Capturing these aspects in a compartmental model is challenging. Notably, low occupancy compartments exhibit stochastic dynamics and high occupancy compartments exhibit deterministic dynamics. Failing to account for stochasticity in small populations can produce 'atto-foxes', e.g. in the classic Lotka-Volterra ODE system. This can be resolved with discrete stochastic models e.g. continuous time Markov chains (CTMCs). Unfortunately, simulating CTMCs is infeasible for most realistic populations. We develop a hybrid CTMC-ODE approach, 'Jump-Switch-Flow' (JSF), available as a Python package. JSF couples CTMCs and ODEs, and depending on the state of the system, individual compartments 'switch' between stochastic 'jumping' and deterministic 'flowing' representations. Consequently, compartments can reach extinct states, thereby resolving atto-type problems. JSF has the desired behaviours of exact CTMC simulation, but is substantially faster that existing alternatives. JSF's value for inference problems, particularly multi-scale problems, is demonstrated with a case-study using a particle filter. With existing data of SARS-CoV-2 infections, we perform a novel analysis to quantify within-host viral clearance. JSF offers a novel approach to compartmental model development and simulation.