Mehdi Boudoukhane
February 13, 2024
 — 
3
 min read

Building future proof data models: How Salesforce, Intercom and Cycle do it

Building future proof data models: How Salesforce, Intercom and Cycle do it

When Salesforce launched, their product had two built-in tabs: "accounts" and "contacts". But very early in their journey, they decided to offer a way for folks to type in tab names that directly corresponded to their line of work. Car services could track "drivers" & "vehicles" and nonprofits could follow "causes" & "donors". Even though they had opinionated default tabs, they provided every user with a customized experience. "Flexible yet opinionated" at its finest!

Intercom had a similar approach. They're opinionated by default, but flexible under the hood. Even though they have a limited number of opinionated objects (basically conversations and customers), they also introduced custom objects so their users can model their data in a way that makes sense for their business.

Folks often try to put software in either the "flexibility" bucket or the "opinionated" one as if it was a one-dimensional axis. But it's not. The best products out there are both flexible and opinionated.

Products that lack flexibility usually fail to meet the expectations of power users, while products that lack opinions can be confusing and hard to use. Striking the right balance between the two is critical.

Cycle is no different 😊 By default, everyone has access to "feedback", "insight", "feature" & "release" objects. But we created a way for users to customize these objects to their individual needs. Below you can see an example of a setup in which a user has created 5 different objects: "goal", "need", "feature", "dev" & "design".

Build your own product hierarchy in Cycle

There's more. You can actually customize the relationships you want to have between your custom objects. In the example above, "goals" can be broken down into "needs", which themselves can be broken down into "features". We basically allow for multi-level nesting across objects. That's our custom hierarchy feature. Definitely the most powerful aspect of our data model.

There are as many ways to ship products as there are product teams (hence flexible) yet we do have strong opinions on how to help you do it well (hence opinionated).

That's it for today. Let me know what you think and feel free ping me if you want to discuss all things data/object models (that's what I like the most about product management) ✌️