Future improvements could include filtering by artist type(e.g., person, group) and country of origin. This would allow the app to recommend, for example, only bands or only solo artists from specific regions—such as British indie bands or Canadian solo performers—making the results more relevant to the user’s preferences or search context.
This is a scaffold project for the take-home assignment. Your goal is to build a simple music artist recommendation tool using Next.js, React, and the MusicBrainz API.
Build a web application that allows users to get music artist recommendations based on a simple algorithm:
- Artist Input: Create a UI where a user can input a list of artist names.
- Tag Calculation: For the given artists, fetch their profiles from the MusicBrainz API. From these profiles, calculate the 3 most popular tags (by total count across all found artists).
- Recommendations: Search for other artists on MusicBrainz who have all three of the popular tags you just calculated.
- Display Results: Display the first
n(you can make this a configurable option, defaulting to 3) recommended artists. Ensure that the original artists from the input are not included in the recommendations.
- Framework: Use Next.js.
- Language: Use TypeScript.
- API Calls: All calls to the MusicBrainz API should be made from the server-side, preferably using Server Functions.
- Rendering: Use Server-Side Rendering (SSR) and Server Components where it makes sense. The initial page load should present the user with the main interface.
- Styling: Use Tailwind CSS for styling. The quality of the UI/UX is important.
- Error Handling: The application should gracefully handle errors, such as when an artist is not found or the MusicBrainz API is unavailable.
- Rate Limiting: Be mindful of the MusicBrainz API Rate Limiting rules. You should include your contact information in the
User-Agentheader for your requests.
Suggest how you might improve the quality of your recommendations. For example, you could consider using information on shared labels, the years artists were active, their country of
origin, etc. You can either implement these ideas or describe them in the README.md.
Enhance the recommendation system with AI-powered conversational features:
Implement a chat-like interface that allows users to:
- Ask questions about recommendations (e.g., "Show me more electronic artists", "I want something from the 90s")
- Get personalized descriptions for each artist that was recommended
- Provider Support: Support selected AI provider of your choice (Google Gemini, OpenAI, Anthropic, etc.) with ability to switch between providers through environment variables
- Conversational State: Maintain conversation context across multiple interactions
- Semantic Analysis: Use AI to analyze tags relationships and generate meaningful descriptions
- User inputs initial artists → Gets basic recommendations
- AI generates personalized descriptions for each recommendation
- User asks: "Show me more electronic artists" → AI refines recommendations
- AI explains the connection: "These artists share approaches to [specific tag]"
- User can continue the conversation to further refine results
To get started, run the development server:
npm run dev
# or
yarn dev
# or
pnpm devOpen http://localhost:3000 with your browser to see the result.
Good luck!
Proprietary.
Copyright © 2025