Inspiration

Scope is a Facebook Messenger bot that identifies songs from lyrics/titles. Scope returns detailed information about songs it matches including title, artist, album, release date, recording location, BPM, key, samples, featured artists, producers and writers (where available). Scope also returns direct Spotify, Apple Music, Soundcloud, YouTube and Genius links to the song. Scope is powered by Genius and Spotify APIs so matches are slightly biased towards hiphop and rap music (Genius started off as Rap Genius).

It's easy to scope a song - just send a message starting with 'scope' followed by the lyric/title you're after (e.g. scope waves). Scope will reply with details of the closest match. If Scope matches the wrong song, simply reply with the word 'wrong' to select from the next best matches.

Technologies Used

  • Node.js
  • TypeScript
  • Terraform
  • Lex
  • Lambda
  • CodeBuild/CodePipeline
  • Facebook Messenger Platform
  • Spotify API
  • Genius API

Challenges

Lack of support for Lex in Terraform meant I had to configure the Lex side of the bot manually via the AWS console. The Lambda function sitting behind Lex is built and deployed to AWS by CodeBuild/CodePipeline and Terraform. I'd love to have the entire bot scripted and automated.

What I learned

Bots are a damn convenient way to build solid interactions with users. Previously I would've built a web application for something like this. Using a bot tightens the feedback loop and improves the overall user experience. It's so easy to open a conversation in Messenger and find the exact song you're after.

What's next for Scope?

  • Add/improve sharing functionality
  • Add suggestions
  • Add more intents/interactions
  • Add Scope for other media - movies/TV/quotes etc.

Do you fools listen to music or do you just skim through it? - JAY-Z

Built With

Share this project:

Updates