Creativity, Uninterrupted
AI's role in creativity is not to create for us. It is to help us stay creative.

The most moving moments in creative work feel like they come out of nowhere. A melody arrives on a walk home. A lyric shows up while driving. A verse appears when you are away from the tools you normally use.
Preserving an idea long enough to return to it is often harder than having the idea in the first place.
I started exploring Spur because of my own experience writing music. The first version of a song idea is usually messy. One, maybe two lines of lyrics that arrive with a melody. I will sing or hum it out loud to see if it is working, and I will try to capture it as quickly as I can. Otherwise, it slips away.
When I say capture, I mean getting the idea into a form I can return to. The lyrics written out. The chord progressions annotated. A reference recording of the melody, how I would sing it, saved to the song file. That is what a captured idea looks like. I am not talking about music production.
The problem is that capturing creates its own set of tasks. I have to figure out the key. Find the chords. Transcribe the lyrics. Organize the recording. All of this used to happen across native apps that made every step harder than it needed to be.
This was all work surrounding the work. I wanted to see if software could handle that layer without crossing into the creative act itself.

Before AI could help, I needed to build the container. The structure of a song file that a songwriter would normally assemble by hand, across multiple apps, step by step. I called this the output format.
The hardest part was the lyric editor. React Native has no DOM, which makes rich text harder to implement. I needed chords to sit above specific syllables and be movable. I ended up building a custom block editor with chord badges placed at quantified positions. Chords spawn above the caret and can be dragged to relocate. Solving this was the first time I felt like I was building something new. Not a copy of something that already existed, but a different way of interacting with lyrics and chords together.
The second part was audio recording and playback. A simpler technical challenge, but a fickle experience to get right. Deprecated packages, silent failures, edge cases at every state of the recording process. Hearing my own recording play back for the first time made the output format feel real.
With the container built, I started making the work disappear.
Transcription came first. A songwriter taps record, sings, stops, and the lyrics should already be written down. I tested three models for transcription: OpenAI Whisper, Deepgram, and AssemblyAI.
Before looking at accuracy, I wanted to look at model performance and their ability to accomplish the different tasks. Latency was the primary metric I was looking at because I wanted to avoid making the user wait for 10 seconds before getting their song. As close to instant as I could get it, the better.
On top of latency, I was interested in accuracy, obviously, and the ability to detect when to insert a line break. I came to find a tool that some models have and some don’t: utterance. Utterance is normaly used for separating speakers on a work call with multiple people, but it turns out, it is very good at understanding the natural phrasing of someone singing. Lulls between lines, implied punctuation, shifts in rhythm are all things that models have an easier time picking up on when they can understand utterance.
I built a dev tool to feed the recording through the 3 different models and provide a performance receipt for each job upon completion to get a sense of the better model to go with.
Latency
Deepgram was the fastest by a wide margin. OpenAI Whisper was okay but still felt too slow. AssemblyAI took longer at almost every step of the job.
Cost
- AssemblyAI is cheapest, coming in at $0.0025/min ($0.15/hr of transcription)
- Deepgram was second cheapest at a range from $0.0043/min to $0.0077/min (dependent on the configuration)
- OpenAI came in at $0.006/min (over 2x the cost of AssemblyAI)

Slide 1 of 3
With all this information, Deepgram was seeming to be the best fit, but obviously I needed to see what the output looked like. I looked at accuracy in lyrics, line breaks, punctuation, and in chord annotation. For reference, I was using the intro to the song 'Home' by Jack Johnson. It's a simple song with a few chords and relatively clear vocals.

The results were motivating, but definitely not perfect. Transcription worked for the most part, but there were small mistakes for every model. OpenAI did the best with actually getting the words right, but I learned that it was unable to do the chord annotation, which felt very odd to me, and a bit unfortunate. Assembly and Deepgram were both able to do chord annotation, so my model options got filtered down to 2.
Early versions of the agent treated every harmonic event as worth annotating. A single line of lyrics might end up with a dozen chord badges stacked above it. Technically correct, maybe. Useless for a songwriter trying to read a progression.
The issue was that the chord listener agent was getting overwhelmed but the single audio file. Vocals, other instruments, and background noise were all getting fed into an agent that was trying to understanding chord progression, which led to this over-annotated result.
The solution I started exploring was this concept of “stemming”, which means to break audio into its different parts in isolation: vocals, drums, guitar, bass, piano, or anything else. Then an agent would need to understand which of the stems to listen to, and it would need to pull the right chords.
Even with cleaner input, the harder question was musical, not technical. What defines a progression? If someone strums C four times in a row, do you annotate four C chords or one? I spent time teaching the agent to recognize when a chord is entering the progression for the first time, rather than marking every time it appears.
The results got meaningfully better. Progressions became readable. Transcription and chords started showing up together in a form a songwriter could actually work from. But “better” was not the same as “done.” Word choices still varied between providers. Chord placement was closer, but not something I would trust without checking.

Slide 1 of 4
This was my first real experience with the probabilistic nature of AI. The deterministic parts of the product did what I told them to. The agent interpreted, guessed, and needed guidance to develop a musical understanding I could not fully specify in code. I decided to ship what worked and keep building.
I launched Spur with the workspace intact but the AI features still in progress. The editor, the recording, the organization, the output format, was solid. I put out content to advertise it, hired some content creators to help out, and I got a few subscribers!

People were willing to pay for a place that respected how songwriting actually works, before the AI had even removed the manual effort. The AI features would make it faster, but the foundation had to be right first.
After a few weeks of trying to refine my first AI agents, I started to burn myself out, so I took a break. I stepped away from Cursor and felt more capacity to be creative. Some song ideas came and I found that I was reaching for Spur before voice memos or my notes app. Not only that, I found that I enjoyed writing in Spur more. I was moving through ideas faster, iterating quicker, and finishing more ideas. The workspace let me stay inside the song instead of managing files and switching between tools.
When the smart chord annotations and transcription are fully reliable, a songwriter will be able to tap record, play and sing, stop, and a complete song file will be waiting. Lyrics transcribed. Chords placed. Reference audio saved. All the work surrounding the work, handled.
Most creative tools are designed for what happens after inspiration. They help organize, edit, publish, and distribute. Those things matter, but they show up after the creative moment has already passed.
What I built handles the layer between having an idea and being able to return to it. AI's role in creativity is not to create for us. It is to help us stay creative.







