You can totally demand doing most of the domain modelling in types before messing around with implementation details.
Plan.hs > plan.md