Inspiration
Every night out ends the same way: someone hears a great track, opens Shazam, and the find disappears into a private history nobody else sees. The next morning the group remembers the night but not the music. Mutual started from that gap — recognition is a solo act, but listening is not.
What it does
A group creates a shared collection for an occasion — a festival, a party, a road trip. Every member can identify what is playing, and every track lands in the same timeline with the name of the person who found it and the moment it happened. Members react with emojis, comment, and open tracks in Spotify or Apple Music.
Collections are private and invite-only, joined by link, QR code or a six-character code. Identified tracks are automatically checked for AI-generated artists and labelled. Mutual Pro, a one-time purchase handled by RevenueCat, removes ads and adds a home screen widget and Spotify playlist export.
How we built it
Kotlin and Compose Multiplatform: one shared UI and data layer running on Android and iOS, with thin platform hosts. ShazamKit for recognition, Firebase for auth, Firestore and push, RevenueCat for the purchase, and our own Cloud Functions for the Spotify export and a three-stage AI check.
Challenges we ran into
Shipping both platforms from one codebase without destabilising the Android app, which was already in a closed test with real testers. The Multiplatform conversion happened on a branch while Android kept releasing from main, and was merged only after a full device test passed.
Frosted glass had to be rebuilt from scratch. The library we used on Android produced nothing but a dark haze on iPhone, so the app now records its own screen into a layer and blurs each glass surface from it — identical on both platforms.
Accomplishments that we're proud of
Shipped to both stores inside the competition window, from a codebase that was Android-only in August. The design language survived the port intact: S-curve gradients, the same slide and zoom transitions, spring-based drag reordering, and a home screen widget that renders the collection name in the app font on both platforms.
What we learned
That "one codebase" is decided by the parts nobody demos — blur, timestamps, haptics, fonts. Everything that looked identical in a screenshot took the least time; everything that had to feel identical took the most.
What's next for Mutual
Recognising the phone's internal audio, so a song playing in a TikTok or a game can be captured. Shared playlists that keep updating as a collection grows.
Log in or sign up for Devpost to join the conversation.