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
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.
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.
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.
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.