A "compute backend" is an abstraction around a library or framework which is able to distribute a set of tasks to perform, such as building the coordinates of a molecular system, across a number of available compute resources. These may be as simple as wrappers around Python's multi-processing libraries, or more complex such as the 'dask-jobqueue' library which is able to distribute graphs of tasks across high performance compute (HPC) resources. A "storage backend" is another abstraction whose purpose is to both store cached simulation data (for example on a remote storage platform, or in a database structure) and also query and retrieve stored simulation data. The currently implemented local file backend stores all data on the local file disk. However, in the future, more sophisticated options, such as storing data within a SQL or NoSQL database or on a remote server, may be supported. Finally, calculation layers (as discussed in more detail in Section 2.2) are implementations of a particular approach for estimating a set of physical properties, such as via molecular simulation or evaluating a surrogate model which has been training on previously generated simulation data.