Purpose Framework explainer

What is it?

The Purpose Framework is a data model and a set of patterns that is designed to keep track of current state, listen to events that may change current state and make sure that different Entities can understand other Entities' state. This turned out to have a lot of interesting and useful consequences. 


The proposed framework is the result of investigations from different perspectives. One was to find a way to find products without knowing what the products are - but with an idea of what purpose the products will fulfill. Another originated in the pursuit of how to avoid malevolent Entities to get too much power - without enforcing it with laws, but rather change the rules of the competition slightly to reward positive and constructive behavior.

Both coalesced into - how to define Purpose, and subsequently how to measure target achievement. Defining Purpose also helped solving how to handle the world as a constant stream of events. Which coincidentally was a very good fit to the CellProtocol’s streaming nature.

Purpose and product

In a project we were working with it was imperative to connect a lot of different merchants in a way that would let the customer seamlessly evaluate offerings without having to know the specific name or properties of the product. We figured out that the customer often is more interested in what Purpose the product fulfills than the name of the product or it's brand. Brand is however important when calculating trustworthiness, even though it is often not entirely rational. By decomposing products into it’s Purpose - which may be plural - we discovered that if we begin with the Purpose we want to pursue it’s much easier to find sub purposes that helps fulfill parts of the main purpose and look into what products the sub purposes are associated with. The challenge here is to normalize the Purpose definitions within a relevant scoped group of Entities, where The Commons naturally has the widest scope.

Incentivize positive and constructive behavior 

One nagging challenge when designing an digital ecosystem meant to protect and empower the individual is that it may give malicious players an advantage. The problem is that to succeed building a robust and stable system it’s very important to avoid that single entities does not get too much power. Especially entities that employs destructive strategies. Destructive strategies are usually much easier to implement than constructive ones and it hurts the potential value of the whole system. Though, any buildup of power that skews the defining power of the system must be avoided. 

The concept is simple; if an Entity claims to be able to help you fulfill a purpose then you can record that within your Entity and you can choose to expose that to a relevant group. This may be a group of your friends or a group of contacts with similar interests or any group you wish to know. Thus building a web-of-trust. If an Entity that claims to fulfill a purpose is backed by other entities you can use that to calculate the claim’s trustworthiness. Trustworthiness may be boosted by other technical proofs, such as certificates in the form of Verifiable Credentials.  

Please bear in mind that this is not a perfect solution, but something that hopefully will nudge the ecosystem in a constructive direction, imposing a cost to lying.

Calculating trustworthiness 

Any interaction with another Entity is an opportunity to calculate the remote Entity’s chance to help you fulfill your current Purpose. The reason for your thinking that the other Entity can help you fulfill your Purpose will typically be because that Entity has announced to you that it will fulfill a certain purpose. This can range from something abstract like being a good friend to something more tangible like protect your feet when jogging. When your Purpose is fulfilled with the help of another Entity, you can associate it with your own Entity’s representation of the other Entity. This is data you control and may choose to expose in a relevant social relation of your choosing. In this way an Entity's claim of fulfilling a Purpose can be backed by a relevant web-of-trust. If an Entity has no backing of a claim - either social or technical, the result of calculating trustworthiness should reflect high uncertainty. Building trustworthiness backing will increase an Entity’s potential value.








A Perspective is the collected state and it's associated configuration for the Purpose an Entity is currently pursuing and any number of background Purposes. It subscribes to events that may change current Purposes or change how to respond to other events. For example a Goal may be the same but how to reach it may change depending on the social context.


A Purpose is a way to describe intent or motivation in a nonrigid way. The purpose itself consists of a description of the purpose, it’s relation to other purposes and a measurable Goal. The goal may be a fulfilment of sub purposes or a concrete target like reaching a specific location. A goal may be ongoing or it may have an definitive end and it should be described by an expression.

In addition a Purpose may be associated with interests, to help finding matching purposes and Creation Space references that may help in achieving the current Purpose's Goal.


Interest is a symbol that can be used to match data with similar interests. Matching may be done by looking at an interest’s relation to other interests instead of searching for the interests labels. 


Other Entities are represented in one own’s Entity as EntityRepresentation, where you store data about said Entity like how to connect it - digitally or physically - or data like how good they are at helping you fulfil Purposes they claim they will fulfil.


A labelled node with an optional constraint that can be used when pursuing any Goal


Building upon the CellProtocol the Purpose framework is highly event driven. When setting up a Goal for a Purpose, one should subscribe to a cell that sends notifications relevant to the Goal achievement 


A node is not defined by its label but by its relations to other nodes. A label is only there for us to easily recognise it 

The Purpose Framework is built on top of the CellProtocol. A Perspective is typically loaded into on Cell and represents the Entity's current state of mind. A person may find it practical to use one perspective, but there are no limits to how many Perspectives is run at the same time in an Entity.