Discovery, Search and Recommendations
Big and dangerous to Feature. Backend / recommendation engine to be done by Mark. UI can be divvied up. ## API | Endpoint | Method | Notes | | -------- | ------ | ------ | | api/v2/discovery/suggested | GET | | | api/v2/discovery/suggested/users | POST | Sends up an array of phone numbers | ###Example response ```json { "status": "success", "suggestions": [], "load-next": "..." } ``` ## PHP structure `Core/Suggestions/Manager` ```php const ALGORITHMS = [ AddressBookAlgorithm::class, HashtagsVotedOnAlgorithm::class ]; ``` `Core/Suggestions/Algorithms/*` ## Current Recommendation Systems in Production (need more placements, other apps have this stuff everywhere) - Search Results - Discovery Feeds - Suggested Channels - Suggested Groups - Suggested Hashtags - Boosts (outlier) - Potential - Notifications - Empty feeds ## Hypotheses - Increased core, casual users - User will subscribe to more channels - User will join more groups - User will engage on content more often (Votes, Comments, Reminds) ## Factors for Recommendation Logic (in no particular order) **Data (only with consent and controls to delete from being used)** - Personal connection (phone number only with consent) (email?) - mobile only - Top feeds based on tags - Location - NSFW - Friends of friends - Birthday - Channels/groups that are posting hashtags that you frequently vote on, post about, or have set as your preferred hashtags - Channels or groups your subscriptions are subscribing to / joining - Channels or groups the subscriptions of your subscriptions are subscribing to / joining - Amount of engagement receive **Legitimacy of channels** - Recently active - Banner setup - Avatar setup - Social links - Onchain setup - Strikes - Messenger setup ## Architecture - Plugable algorithms that can be swapped in and out - Unleash integration for easily turning these on / off - A/B to metrics index for better results - experimentId - expirementVariant - actionsSource - Apply experiments to action stored. Unleash client configuration needs to be tracked so we can tell what experiments are running - Investigate GEO with elasticsearch ## Top Level Concerns - Data collection without breach of privacy - Activity stream/console with privacy controls - Consent required for more sensitive information to be used (phone number, location, birthday) - Transparency about why specific recommendations are served to you - Self-curation and feed control without censorship - Better controls to hide or see more of certain tags - Scalable, non-stigmatized system for classifying content - Politics tag? - Need better classification/tagging on all content, channels and groups ## Collaborative recommendations: - https://en.wikipedia.org/wiki/Netflix_Prize - https://en.wikipedia.org/wiki/Collaborative_filtering - The high-level idea is: similar people like the same things… i.e. if I like the Movies X and Y, and another user like X, Y and Z…. then I may like Z. ## Correlation with T3? - Trusted channels based on community / decentralized consensus mechanism - Trust that we are not recommending bad actors - Building a web of a trust you enter where you get trusted recommendations - Push -> https://gitlab.com/minds/engine/blob/master/Core/Notification/Extensions/Push.php - Views -> https://gitlab.com/minds/front/blob/master/src/app/modules/notifications/notification.component.html#L19 ## Next Steps - Design mobile consent and address sync - Design suggestions for new users - Design privacy console - Mark/Brian to look at architecture and plan out ## Milestones | Milestone | Link | | --------- | ------ | | TODO | | ## Merge Requests & Branches | | | | ------ | ------ | | TODO | | ## Mockups | | | | ------ | ------ | | TODO | | ## Developers | Developer | Focus | | ------ | ------ | | @edgebal | backend |
epic