Back to work
2026

Hummingbird

A vibe catcher for new song ideas

  • Native app
  • iOS
  • Audio capture

Skills

  • React Native
  • Expo
  • Audio UX

A songwriting app built for the fragments: the line that arrives at a bus stop, kept until it grows into a song.


Challenge

Songwriters lose more ideas than they finish. A hook arrives somewhere inconvenient, it goes into the phone's voice memos, and it joins two hundred other untitled recordings that no one will ever play back. The problem isn't recording, every phone does that. The problem is that a captured fragment has nowhere to live and no way to be found again, so capture and craft stay disconnected.

Action

I designed and built Hummingbird as a native app in Expo and React Native, with capture as the first screen rather than a feature buried in a menu. One tap takes an audio scrap or a lyric fragment. From there the app is built to help a fragment grow: Sparks for loose ideas, a lyric workspace, chord tooling driven by a chords database and music-theory helpers, Places so an idea keeps the location it arrived in, and an immersive writing mode that strips the interface back when it is time to write. Vibe Search lets you find your way back in by feel instead of by filename. On the back end it shares an existing Supabase project using prefixed tables, keeps audio in Cloudflare R2, and routes image search through a Cloudflare Worker so no API key ever ships inside the app bundle.

Result

The app is in active development and running on device. The design bet it proves out is the ordering: making capture the home screen, and treating search as recall by feel rather than by name, keeps fragments in circulation instead of letting them sink. The shared-backend approach also brought the running cost of another app to near zero, which is what makes a portfolio of small products practical to maintain solo.

Research & process

  1. Research

    The problem was recall, not recording

    What I did

    Went through my own voice memos and asked other writers to do the same. Counted how many captured fragments had ever been played back.

    What it told me

    Almost none. Every phone already records; what nothing did was give a fragment somewhere to live or a way to be found again, so capture and craft stayed disconnected.

    What changed

    Stopped treating this as a recording app. The design problem became retrieval, which is what put Vibe Search in scope at all.

  2. Decision

    Capture is the home screen, not a feature

    What I did

    Timed how long it took to get from locked phone to a recorded fragment across the note and memo apps writers were already using.

    What it told me

    Every extra tap between the idea and the capture is a place to lose it. Ideas arrive somewhere inconvenient, which is exactly when patience is lowest.

    What changed

    Made capture the first screen rather than an item in a menu. One tap takes an audio scrap or a lyric fragment.

  3. Iteration

    Finding an idea by feel rather than by filename

    What I did

    Tested browsing a library of untitled fragments, first by date, then by title, then by feel.

    What it told me

    Names are the wrong handle. Nobody titles a fragment at the moment of capture, and by the next week the date means nothing either.

    What changed

    Built Vibe Search, and added Places so a fragment keeps the location it arrived in. Both are recall by association rather than by label.