-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Implement music compatibility scores that show how similar two users' music tastes are when viewing a profile.
Background
- When viewing another user's profile, there should be a section showing a compatibility/similarity score with the current user.
- The score can be derived from overlapping listening history, shared song streaks, liked albums in common, followed artists in common, and genre overlap.
- This is a core social feature that encourages discovery and connection between users.
Scope
Backend (C# API)
- Design and implement a compatibility scoring algorithm that considers:
- Overlapping listening history (shared tracks)
- Shared song streaks
- Liked albums in common
- Followed artists in common
- Genre overlap from top artists
- Create an API endpoint:
GET /users/{userId}/compatibilitythat returns the score and a breakdown of contributing factors. - Optimize the query for performance — this needs to be fast enough for profile page loads.
Frontend (React Native)
- Add a "Music Compatibility" section to the user profile page.
- Display the overall score (e.g., percentage or visual meter).
- Show a breakdown of what contributes to the score (e.g., "12 artists in common," "8 shared tracks").
- Design the component to be visually engaging and consistent with the app's design system.
Definition of Done
- Algorithm implemented: A scoring algorithm exists that computes compatibility based on overlapping listening history, streaks, liked albums, followed artists, and genres.
- API endpoint created:
GET /users/{userId}/compatibilityreturns a score and factor breakdown for the authenticated user vs. the target user. - Profile UI added: The user profile page shows a "Music Compatibility" section with the score.
- Breakdown displayed: The UI shows contributing factors (e.g., "X artists in common," "Y shared tracks").
- Performance acceptable: The compatibility score loads within a reasonable time (< 2 seconds) on a profile page.
- Score range defined: The score uses a clear, understandable scale (e.g., 0–100%).
- Edge cases handled: If there is insufficient data to compute a score (new user, no overlap), an appropriate message is shown instead of 0% or a broken state.
- Self-profile: The compatibility section is hidden or shows a special state on the user's own profile.
- Build passes: Both the C# API and the frontend compile without errors.
- Verified with test data: Tested with users who have overlapping and non-overlapping listening data to confirm the score behaves correctly.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request