Models developed to forecast land use and travel demand tend to become highly customized to local circumstances. This may improve their accuracy, but often has the unintended consequence of making the models harder to extend, benchmark, and cross-validate. Can better software architecture help us achieve flexibility and performance at the same time? This paper presents recent work on the UrbanSim open-source modeling platform to shift toward more standardized model components, implemented via a template interface for directly generating and managing a variety of immediately runnable model steps — regression steps, discrete choice steps, and others. We first discuss the relevant software architecture concepts, within the context of Python data science tools. Then we describe the implementation of UrbanSim templates and share a case study applying the templates to the San Francisco region. We find that this approach makes it easier to compare the performance of models across data sets, statistical specifications, and units of analysis. Additionally, it improves ease of use and model transparency. All our code is open source in the Urban Data Science Toolkit.