Documentation

User Engagement

Bloom.ai tracks user interactions to build personalized interest profiles. Implicit signals and explicit preferences combine to deliver a ranked, relevant feed for each user.

Implicit signals

Interaction tracking

Every user interaction with events is tracked and assigned a weight. These signals build a profile of what each user cares about — from casual browsing to deep research behavior. Weights decay over time so recent interactions matter more.

  • Positive signals boost category and topic relevance
  • Negative signals (quick bounce) reduce noise
  • Time decay ensures the profile stays current
Signal Weights
Event click
Interest0.3
Map pin expand
Browse0.2
Dwell time
Deep read0.7
Text copy
Reference0.7
Screenshot
Capture0.9
Share
Advocacy0.9
Quick bounce
Disinterest-0.3
weighted signals

Explicit input

User preferences

Users select up to 5 of 17 categories during onboarding. These are stored as a text[] array and act as hard filters for the dashboard feed — no stock data if the user has no interest in economy.

17 Categories
Arts/CultureConflict/WarCrime/JusticeDisasterEconomyEducationEnvironmentHealthHuman InterestLabourLifestyleMediaPoliticsReligionScience/TechSocietySport

Computed profile

Interest vector

A weighted average of embeddings from events the user interacted with. Lives in the same 768-dimensional space as event vectors, enabling direct cosine similarity comparison for personalized ranking.

Vector Pipeline
Interactions
Weight + DecayTRANSFORM
Event Embeddings
Weighted AverageTRANSFORM
User Vector (768-dim)

Output

Personalized feed

Events are ranked per-user at read time using a hybrid actionability score. The top results are deduplicated via embedding similarity and surfaced as each user's personalized feed.

Feed Pipeline
All Events
Score + RankPROCESS
DedupPROCESS
Top-N Feed
Actionability Formula
Cosine similarity between user vector & event vector50%
Event severity score25%
Recency — newer events rank higher15%
Specificity — detailed events over vague ones10%

768-dim

Vector space

Read-time

Score computation

Continuously adapting

The engagement system learns from every interaction. No manual tuning required — your feed improves automatically over time.

Adaptive ranking

As users interact with events, their interest vector evolves. Recommendations improve over time without manual configuration.

Smart notifications

A scheduled job evaluates the top matching events and sends personalized suggestion notifications once every 24 hours.

Category filtering

Explicit category preferences act as hard filters, while implicit signals handle the soft ranking within those categories.

Intelligence, tailored to you

See how the personalized feed works in practice — or learn how the data pipeline powers it all.