Personalisation & ML · ML
Extend member session time with content personalisation
+40%
A homepage ordered by editorial habit serves the average member, who does not exist. This engagement turns browsing behaviour into vectors, clusters them into segments the business can name, and re-orders the modules per segment.
The process
Capture browsing behaviour
Content views, dwell time, scroll depth and completion collected in PostHog or GA4 and landed in the warehouse at member level, not page level.
Build the browsing vectors
Each member represented as an embedding over the content they consume, with recency weighting so last quarter's interests do not outvote this week's.
Cluster into segments an editor can name
Clusters reviewed against real content titles and given plain-language names, because a segment nobody can describe will not be used.
Re-order the modules
Module ranking served per segment behind a feature flag, with editorial pins reserved so campaign and compliance placements always hold their slot.
Measure session depth against control
Session duration, content per session and return rate read against a randomly held-out control group over a full weekly cycle.

What we need from you
- Behavioural event access with a stable member identifier
- Content metadata for the module inventory
- A front end that can render module order dynamically
What you get
- Member-level browsing vectors and named segments
- Per-segment module ranking behind a flag
- Session-depth read against a held-out control
Timeline
Five to eight weeks to the first controlled read.