All writing
5 min read

The transcription was the easy part

A meeting transcriber is one API call and a two-quarter product. The transcription is a commodity. The privacy, the identity, the ingestion, and the authz are the actual work, and that is exactly the work agents now let one person do.

I had a meeting transcriber working on the first evening. Point an audio file at a speech API, get text back with speaker turns. Done. It is a commodity now, a couple hundred lines, and it demos beautifully.

Then the real questions start, and not one of them is about transcription. That gap, between the evening demo and the thing you would actually let near a real meeting, is the entire product. It is also a clean look at what agents changed, because the easy part is the part everyone means when they say "AI built it," and it was the smallest part by a mile.

An iceberg. The small orange tip above the waterline is labeled 'transcription, 1 API call,' with a tiny boat labeled 'AI' bobbing smugly beside it. The vast bulk below the waterline is 'the other 80%': per-owner encryption, client-held keys and crypto-shred, voiceprint identity, Drive/Meet/Zoom/Slack ingest, RBAC and 404-not-403, key rotation and audit log. Footer: the transcription was the easy part.An iceberg. The small orange tip above the waterline is labeled 'transcription, 1 API call,' with a tiny boat labeled 'AI' bobbing smugly beside it. The vast bulk below the waterline is 'the other 80%': per-owner encryption, client-held keys and crypto-shred, voiceprint identity, Drive/Meet/Zoom/Slack ingest, RBAC and 404-not-403, key rotation and audit log. Footer: the transcription was the easy part.
The part everyone calls 'the AI' is the tip. The product is everything under the water.

Whose is it?

Meeting transcripts are some of the most sensitive text an org produces. So the first real question is not a feature, it is a threat model.

The crown jewels get encrypted at rest, per owner: transcript, summaries, titles, speaker names. The database instance sits under customer-managed keys on top of that. Then the harder version, the one worth building: keys held by the client, generated on the device, never escrowed on the server, so the service has no standing ability to read your meetings even if it wanted to. And crypto-shred, destroy the key and the content is mathematically gone, which is what "delete my data" should mean instead of a flag in a row somewhere.

None of that is AI work. It is the unglamorous, get-it-wrong-and-you-are-on-the-news work. It is also most of the codebase.

Who said what?

Diarization hands you "Speaker 0" and "Speaker 1." Turning that into "this is the person who runs the meeting" is a separate machine: voice embeddings, a vector search to match a voice against known prints, and an enrollment flow to register those prints in the first place.

And enrolling a biometric voiceprint is not a thing every user gets to do to every other user. That is a privileged action held by one role, audited, revocable. The feature is "show me names instead of numbers." The work underneath is consent and access control around biometric data.

Where do recordings even come from?

Nobody is going to hand-upload audio files. So the recordings have to arrive on their own, which means connectors: Drive, Google Meet, Zoom, a Slack bot, live mic capture in the browser. Each one is a different auth model, a different discovery mechanism, and the same hard puzzle every time: when a file shows up, who does it belong to? Attribute the owner wrong and you have just handed someone else's meeting to the wrong person.

Who can see it?

Row-level authz on every single read and mutate. The detail that matters: a non-owner asking for a recording gets a 404, not a 403. A 403 says "this exists and you can't have it," which already leaks that it exists. A 404 says nothing. On sensitive data, "this exists" is itself a disclosure, and that one-digit difference is the kind of decision no agent makes for you.

Two doors with a snooping stick figure at each. The left door, glowing orange, reads '403 Forbidden' and shows a sign 'exists ✓ (but no)'; the snoop's thought bubble says 'aha. it exists.' The right door is dark and reads '404 Not Found' with only '· · ·'; the snoop's thought bubble says '…nothing here.' Footer: one digit. 403 says 'exists', 404 says nothing.Two doors with a snooping stick figure at each. The left door, glowing orange, reads '403 Forbidden' and shows a sign 'exists ✓ (but no)'; the snoop's thought bubble says 'aha. it exists.' The right door is dark and reads '404 Not Found' with only '· · ·'; the snoop's thought bubble says '…nothing here.' Footer: one digit. 403 says 'exists', 404 says nothing.
A 403 confirms the thing is there. A 404 gives a snoop nothing to work with. One digit.

The AI part was the smallest part

The enhancement, the summaries, the cleanup, the speaker relabeling, runs as a pluggable pipeline where I can swap Claude for Gemini without a redeploy. That is the piece people picture when they hear "AI meeting tool," and it was genuinely the least of the work. It is a few prompts and a provider interface. The product is everything wrapped around it.

What this is not

It is not "AI built my product." Agents built the parts I specified, fast, and saved me the months of typing that used to make a project like this need a team and a quarter. But they built them because I decided what to encrypt, who holds the keys, which role touches biometrics, and what a 404 is protecting. Those decisions are the product. The typing was never the hard part.

The bottom line

The transcription was the easy part. It is always the easy part. The easy part is exactly the part that got commoditized, which means the value moved entirely into the part that did not: the privacy model, the identity model, the ingestion, the authz, the judgment calls that bite you a year later if you get them wrong.

That is the good news for anyone who can think clearly about systems. The work that remains is the work that rewards judgment over typing speed. Agents did not make that work disappear. They cleared the noise around it so you can finally spend all your time there.