In reply to Tim Kaye.

Hi Tim,
While this is correct for fairly simple data structures, the more complex the data model the less this rings true. Once you start holding many dimensions for an object, querying at scale fails to be performant via the restrictive (but very useful for some things) custom post type model.

There is a line to walk here, where we make it easy for developers to tweak/build upon ZBS CRM, while not sacrificing end-user performance completely. The reason we've moved to fully custom tables (but will be releasing a solid API & dev guide), is because we reached the limitations of the post model for the data our users want to track.

For example, some of the more value-added functionality in ZBS CRM such as Sales Dashboard: https://zerobscrm.com/product/sales-dashboard/ - would take 5x as long to run calculations across contacts, companies, multiple taxonomies, time-periods, transaction types, etc.

To reiterate, the post model is fantastic for simple data structures. To get high performance for some data models though, it's essential to bake your own.