On Software and Moats
A light case study with Granola
There’s already been a lot written about how the moats around software are deteriorating. Here’s my take on it, with a specific case study on Granola (the meeting note app). It turns out that you can build something functionally similar over a weekend, but Granola still has some interesting moats.
A while ago, I was talking to Collin Stewart about meeting note software, and the discussion turned to Granola. I like Granola quite a bit, and thought that they might have a bit more of a moat than other in-meeting meeting apps like Fireflies. After all, you need to run a local app that records audio. It’s at least more technically challenging than hooking up to a meeting app API like Recall.ai. Collin challenged me and said that you could probably vibe code something similar very quickly... so I tried it. And now I have my own app that I use daily after about a weekend’s worth of work.
Some notes on the implementation: I did the project entirely with Claude Code. And for fun, I decided to have Claude write the majority of the code in Rust, a language I have never worked with before. I started by writing out a spec for what I wanted: a Mac application that records local audio (both output and input) to a file, then runs that output through a local transcription service, and then sends the transcript into Anthropic or OpenAI to get transcribed. After the spec, I had Claude create a detailed implementation plan, which I reviewed. And then I hit go.
Fast forward a couple of days, and the app was ready for use. The workflow is simple: you hit record at the start of a meeting, and it starts recording locally. Then, after the meeting, you hit Stop and it transcribes the meeting audio using an on-device model, so the audio never leaves your machine. Then, if you desire, you can optionally generate notes by pressing a button. The meeting notes prompt is saved and editable so you can tweak everything until you’re satisfied with the note output. The transcript and notes are all written to a local folder for storage, and you can set up automations to send the notes to cloud services.
This app has worked so well for me that I usually use it instead of alternatives at this point. It’s simple, doesn’t consume many system resources, and also doesn’t send my audio to the cloud to transcribe.
Does this mean that Granola is dead? Are there no moats anymore? I don’t think that’s true. Here are some of the reasons why it’d be hard to just package up my app today and capture Granola’s market share:
Transforming a prototype into a tested, general product is hard. There are a lot of edge cases that I haven’t covered with my application. My application is Mac specific, for example. The model I selected works well for English, and I haven’t tested it for other languages. The UI isn’t fully polished yet; it’s good enough for me but I could see people wanting something more snazzy. In order to address all of the edge cases and other permutations of the problem, I’d need to spend a substantial amount of time to iron things out.
Distribution is king, and building a brand is difficult. Even if you were able to make a great application, you still need people to know that it exists. Building a brand is really hard, and Granola has a great one. Most of the founders and VCs that I talk to have at least heard of Granola. It’s incredibly difficult to break through in this market, because there are tons of meeting notes apps in the market. If you’re shipping this from scratch, do you have the right messaging, and can you get your app in front of the right people?
Support is a real moat. B2B is looking more and more like consumer. If you want people to stick around, customer support is essential. Do you want to file a bug against an open source project and hope that someone responds, or do you want to contact support and get a solution immediately? Companies are going to be built on their customer experience: support and fast turnaround times will be moats.
And finally, technical moats still exist. If this were a slightly more tricky technical project, or if I didn’t have enough domain expertise, this project would not have gone well. For example, coding models don’t always work well with specific technologies, such as with functional languages.
There are also cases where you need very novel technical approaches to solve a problem, and it’s not immediately apparent what those approaches should be. As an example, Figma had a problem around speed and latency: they needed to make a web experience feel fas fast as a native one. Their solution was to go all in with WebAssembly, and they did that at a time when WebAssembly was not very widely used. If Claude Code or Cursor were around at that time, there’s no way way they would have picked WebAssembly as the right approach.
So Granola is still safe, at least for today. Even as coding agents continue to improve, there are still some interesting moats for businesses.
What do you think? What other moats do companies have in this new era?
By the way, if you’re interested in the actual development process of this app and the gotchas involved, part 2 is coming soon.


