Send a message you can't say — as a playlist
playmsg turns a message into a playlist whose song titles, read top to bottom, become that message. It then makes the result easy to share. I set the goal, then designed, built, and shipped it solo.
Visit playmsg ↗Product · design · build · deploy
Concept to launch
Live at playmsg.live
Interaction & visual design
Full-stack (with AI)
I set the goal, designed it, and shipped it solo. It's a viral-first product: type a message and playmsg matches songs so their titles, read top to bottom, become that message.
Type a message. Get a playlist. Send it.
A love letter, delivered as a playlist
I blog as a hobby, and one post stuck with me: someone had received a love letter as a playlist. I wanted a tool that made that easy, so I built one.
Success means it gets shared
I built this to spread from day one, so I set one north star: shareability, measured as K-factor (how many new users each user brings in). Every decision below flows from it.
Three decisions across matching, layout, and sharing. Each one made to get the playlist sent, not just made.
Make the API the backup, not the engine
The first version called the music API once for every word. A single sentence fired off dozens of calls, hit rate limits, and stalled. The fix was to move matching into a local dictionary and call the API only for the words it couldn't find. The real-time API should fill the gaps, not do the work.
When a tech limit made it more shareable
The message has to read clearly in a screenshot.
So I dropped album art for a title-first layout. The tech constraint ended up making the result more shareable, not less.
Sharing without a Spotify login
Every extra step before sharing kills virality.
Set the goal, designed it, and shipped the whole thing
Product to deploy, built with Claude Code. The real skill was directing the AI: batching decisions, splitting workstreams, and fixing conventions up front.
Built to spread. Now to spread it.
The product is wired for virality: URL sharing, dynamic OG cards, GA and UTM in place. The north star is K-factor, fed by three inputs, each shaped by a decision I made.

