Vibe code your own Granola
Vibe code your own Granola as notes you typed and a summary you edit. Business is $14 a person a month. System audio and live transcription are the long row.
You can vibe code your own Granola as notes you typed and a summary you can edit. Granola is that product. The catalog line is “Rough notes in. A useful meeting brief out.”
The card lists $14–$35 a person a month, and it scales with the team. Granola’s billing page lists Business at $14 a user a month and Enterprise from $35. Basic is free, and the app only shows the last 30 days of notes until you pay. The first estimate is 2 days, 16 hours. The verdict is “Keep the human in the notes”.
Last time I wrote about building a Descript alternative. That was a regular backlog post. This one is a teardown.
The public sources are Granola’s post on where the app runs, the transcription help page, and the security FAQ. Where those pages stop, I call it a guess.
Vibe code your own Granola from one meeting
The Granola page splits the work into three rows.
The first row is 2 days. Meeting notes, consented audio capture, and an AI summary. You write the line you care about. You start a recording where the screen shows that it is on. You get a summary you can change.
The second row is 1 week. Transcripts, action items, templates, search, and a markdown export. Timed chunks you can search can wait until the brief is already something you trust.
The third row is 1 month and up. Native system-audio capture, live transcription, and calendar smarts. The table labels that row as the part you should skip.
If you tell an agent to “clone Granola”, it aims at the third row. Copy the prompt, then pin it to the first one.
Store Meeting, Attendee, TranscriptSegment, Note, and ActionItem. The card names all five. For these 16 hours, Meeting and Note are enough. Attendees can be a line of names on the meeting. Segments, search, and action items arrive with the week row.
A meeting is the title, the time, the names, and a consent flag. A note is what you typed, kept apart from the summary. Segments, action items, and attendee rows wait for search and the calendar.
The audience is a founder who wants notes from their own meetings. The 16-hour slice is one meeting, the line you typed, and a summary you edit. The card also lists Fathom, Fireflies.ai, and Otter.ai, without prices.
An agenda you write before the call is Fellow at $7–$15 a user a month, billed annually. A tab recording and a share link is Loom at $15–$24 a month, in Vibe code your own Loom. Cutting a sentence out of a finished file is Descript at $16–$50 a person a month, billed annually.
The guardrail on the card is consent, a visible recording state, an encrypted transcript, and a permanent delete.
How does Granola work
Granola’s architecture post puts capture on the device, transcription and the summary in the cloud, and deletes the audio once the text exists.
On Mac and Windows, transcription is real time. On iPhone and Android, they cache audio and transcribe after the meeting. The web app at notes.granola.ai can open notes you already have. Their transcription page says it cannot capture, and mobile cannot take audio from a Zoom, Meet, or Teams call.
Capture is two inputs. System audio is painted on the left, in grey, which is usually other people. Your microphone is on the right, in green. With speaker tags off, those sides are Me and Them. Tags that use a display name exist for Google Meet, Zoom, and Teams on macOS and Windows. The docs do not say how a name gets attached to a line. They do say the model can guess from the words, and that you can correct it.
Nothing joins the call as a bot. Desktop capture listens to the machine, so the meeting app does not matter, and it also cannot isolate one application. Music playing on the computer lands in the transcript too.
You start it, by opening a note, clicking a notification, or pressing New Note. If that note is already open before the scheduled start, transcription begins at the start time. It does not record a meeting you never opened. Their post says to tell the other people, and that the app can post a chat message and show a video watermark. Those two talk to the meeting app. The 16-hour clone has a consent checkbox and a recording bar in your own window.
Stopping is a small state machine. You can press stop. Otherwise they look at transcript length, whether Zoom, Teams, or Meet is still in the call, and, for a calendar event, the scheduled end. They also stop after 15 minutes with no new audio, and when the computer sleeps. On macOS before 14.2, a non-admin user may not get the call-ended signal. Back-to-back calls are the sharp edge. The meeting app can hold the microphone across the gap, and both conversations land in one transcript unless you press stop between them.
Audio does not stay. The architecture post says they delete it after transcription. The transcript and the notes remain, in a US-hosted AWS VPC, encrypted at rest and in transit, backed up daily. A local cache lets you open notes offline. Generating them needs the network, and there is no replay. Their auto-deletion page lets you drop transcripts after a day, a week, a month, or longer. The notes stay, and regenerating them needs the transcript. Notes in the trash go away after 30 days, on the deleting notes page.
The summary keeps your lines visually distinct from what the model added. The privacy policy says third parties such as OpenAI and Anthropic are not allowed to train on your personal data. It does not name the speech vendor. SOC 2 Type 2 is dated July 2025 in their FAQ. HIPAA and a BAA are Enterprise only, and there is no EU residency. The 16-hour clone is one founder and a database.
Screens of a Granola alternative
v1 needs the note you type while the mic is open, and the brief after you stop. A searchable transcript, action items, and a calendar column are later rows.
The note
Sam’s Monday product sync with Priya. He has already checked that she knows the mic is on. The bar says Recording. His line is “ship the pin Friday”. The names sit at the top. Stop is the way out.
The brief
After stop, two blocks. His line stays as he wrote it. The summary sits underneath, and he can delete a sentence the model added. The audio object should already be gone if the transcript write succeeded.
How a meeting becomes a brief
Sam opens a blank meeting, types the names, checks consent, and starts. The browser records the microphone only, so remote Zoom audio arrives only if the speakers leak it into the room. The desktop tap that hears the call directly is the card’s month row.
He presses Stop. The Astro app sends the clip to one speech API, then sends his typed line plus that text to one model. Node.js plus Astro is the default. Use TanStack Start if React is your weekday language. The capability line on the card is Astro, Workers, D1, and R2. The clip sits in R2 until the transcript field is stored, and then the object is deleted. If that write fails, keep the clip and retry.
The transcript is one encrypted field. Their auto-deletion doc is why it stays, because regenerating the brief needs it. Segments, search, action items, and a template are the week row. Speech and the model are called from the server, with keys that never reach the page. A guessed meeting id returns an empty page. Permanent delete removes the meeting, the note, and the transcript.
The hard half of a Granola alternative
Sixteen hours is a note, a mic clip, a transcript field, and a summary Sam can delete words from. Stop a one-minute recording and the clip should be gone while the brief still opens.
System audio is the month row because it is an operating-system problem. Their desktop app hears the meeting without joining it. A browser microphone does not hear the remote side of a call. I have not seen them name the tap, so the API is a guess. Two streams, grey and green, are the published behavior.
Live transcription is the other half of that row. Desktop audio goes to their provider while the call runs. The 16-hour path matches the mobile timing instead. Record, then transcribe. A live socket that survives a blip, shows partial words, and still throws the audio away is a protocol their help page does not publish. I would not invent it.
Calendar smarts are the rest of that row. A Stop button sidesteps the machine on the transcription page. The scheduled end, the 15-minute silence timer, sleep, the macOS 14.2 exception, and the back-to-back merge are how two calls become one note.
Speaker tags, the watermark, and a chat line into Meet sit on top of that. The non-goal says not to join as a bot, not to record in secret, and not to score employees. Fellow is where the agenda lives if you want it written before anyone speaks.
Paste the delete-the-audio rule from How to write a coding agent prompt, and keep the split in How to scope a SaaS clone.
Start with the first row
Go to Build your own Granola. Copy the Astro prompt, or TanStack Start if that is what you write.
Tell the agent the first estimate only. Meeting notes, consented audio capture, and an AI summary. Two days.
Record a minute, stop, and check that the clip is gone and Sam’s line is still his. If you need system audio, a live transcript, or the calendar to start and stop the meeting for you, keep the $14 plan for that part.