Track

We chose to create our project in the creative tools track.

Inspiration

We were inspired by how deeply music connects with emotion and how often it’s hard to find songs that match exactly how you feel in the moment. Whether you're feeling nostalgic, hyped, or simply reflective, you shouldn’t have to build a new playlist from scratch. With AI tools like Claude and Spotify's API, we realized we could create a seamless, mood-driven music discovery experience. We wanted to make something that feels personal, smart, and fun.

What it does

Moodify lets users input a mood (like “happy” or “calm”) or upload an image, and it:

  • Uses Claude (Anthropic’s LLM) to generate 10 songs that match the mood
  • Uses the Spotify Web API to search for real tracks
  • Displays a visual grid of songs with album art and artist info to the user
  • Allows users to “like” a song to get 5 similar suggestions
  • Allows users to “dislike” a song to immediately replace it with something new

How we built it

  • Frontend: React.js and CSS to organize song cards
  • Backend: AWS Lambda (Python) with multiple endpoints
  • AI Integration: Claude 3.5 Haiku via AWS Bedrock for song generation
  • Image Labeling: AWS Rekognition for extracting keywords from uploaded images
  • Music Search: Spotify API matches AI-suggested songs and fetches details

Challenges we ran into

None of us had experience with AWS before this hackathon. We spent hours figuring out which tools to use and where. It took a lot of trial and error before we were able to create anything like a website. We also had trouble figuring out a way to efficiently work on the project. We initially coded in JupyterLab, but since we had to constantly refresh the page to see what the other members added to the file, it ended up being tedious and slow. It took a while to figure out the ideal platform to work on. Isha was completely new to AWS and took a while to figure out how to use Lambda and use AI integrations using Bedrock and Rekognition. She spent a while trying to figure out how to get proper output from Claude in order to successfully obtain accurate songs, instead of songs that just started with the keyword. She also had very little prior experience with React and had trouble figuring out how to format the page and create interactive buttons such as the file upload button and the like/dislike buttons. Additionally, it took some time for her to figure out how to integrate the frontend with the backend, especially creating new Lambda routes for the “like” and “dislike” buttons. Kaelyn has never used AWS before or React and was having trouble figuring out how to make the UI look nice and professional. She has mainly backend experience, and this was the first time she was given the main task of completing the front end. Learning React was a tedious process and most of her time was spent on an arduous process of non-stop shifting text and buttons around. Also, she had absolutely zero knowledge on AWS and often ran into issues with how to run her code, navigate through SageMaker, deploy her changes, etc. Most of her time was spent referencing online CrashCourses to solve her issues which made the work process very tedious. Rachel has never used AWS before and hasn’t joined any activity like this. She was new to using Figma to sketch the simple UI and new to developing in general.

Accomplishments that we're proud of

We’re proud to have been able to create a fully functional web app with image-to-music interaction, especially with our limited previous experience with both frontend and backend development. We are also proud that we could integrate multiple AWS services and a third-party API to create song recommendations with LLM-generated suggestions.

What we learned

We learned how to use multiple AWS services, including Lambda for backend logic, Rekognition for image analysis, and Bedrock to integrate Claude 3.5 for natural language generation. On the frontend, we learned how to use React to interact with our API endpoints and dynamically update the UI. Additionally, we gained hands-on experience parsing LLM-generated text into structured JSON, debugging cross-service interactions, and securely managing API credentials across our stack.

What's next for Moodify

We want to eventually make a way that the users can directly connect to their personal accounts on Spotify to the website. The website only recommends songs from Spotify’s database, so we want to expand that by allowing the users a way to create a playlist with those songs that will appear on their Spotify account with a press of a button.

Share this project:

Updates