Entity Connections

Every platform entity can be linked to the graph. Once mapped, the entity participates in recommendations, search, and cross-entity discovery. Connections fall into three relationship types, depending on the entity’s role.


The Three Connection Types

Learning Graph

Topics & Skills

DEVELOPS— content that teaches this topic
Course
Module
Session
Task
Resource
FOCUSES_ON— community specialised in this area
Campus
Organisation
INTERESTED_IN— learner expressed interest
Profile

What Each Relationship Means

Content entities (Courses, Modules, Sessions, Tasks, Resources) declare what they teach via DEVELOPS. A single course might develop Machine Learning, Python, and Data Visualisation — and a learner searching for any of those topics will find it. DEVELOPS is the primary driver of resource matching and curriculum intelligence.

Community entities (Campuses, Organisations) use FOCUSES_ON to express their specialisation. A campus focused on Sustainable Energy can automatically surface all platform resources related to that domain, even ones added long after the campus was created. FOCUSES_ON shapes library views and discovery at the campus and organisation level.

Learner profiles use INTERESTED_IN to track expressed and inferred interests. This powers personalised recommendations, matchmaking between learners, and helps the platform suggest the next relevant content. Interests can be set manually or inferred from activity (e.g. saving a resource, completing a course).


Containment in the Graph

Platform entities also have containment relationships in the graph: Organisation → Campus → Course → Module / Session / Task / Resource. These CONTAINS edges mirror the hierarchy in Supabase (e.g. campus_courses, course_outline_blocks). Containment is used for:

  • Structural rollup — when a child entity’s topic mappings change, parents can inherit inferred topic signals (e.g. a course inheriting from its modules and resources).
  • Member activity rollup — when a learner completes a resource or attends a session, the course, campus, and organisation can accumulate member_activity topic signals for analytics and discovery.

Containment is synced from the platform when admins add or remove entities from parents (e.g. adding a course to a campus). It is the backbone for entity-level signal propagation.


Next Steps