I lean on Fyxer every single day. It sits in my meetings, writes the transcripts, and its MCP server lets Claude read them back to me. So when Fyxer changed its pricing and our bill more than doubled for exactly the same thing, I had a choice. Pay up, or find out how hard a notetaker really is to build.

It's a pattern I see everywhere in SaaS. Growth slows, so the product doesn't get better. The plans get bigger. The one feature you rely on moves up a tier, bundled with ten features nobody was waiting for, and the bill follows. That's not a pricing strategy. It's a lock-in strategy dressed up as one.

I picked the second option. One evening and one night later, madewithlove has its own: Notes. It transcribes English, Dutch and the mix of both that our meetings actually are. It knows who said what. It has an MCP server, so Claude can search our meetings, name speakers and manage the vocabulary. And everything it stores lives in Europe.

I didn't write it alone. I wrote it with Claude, in one long Claude Code session. I set the direction, listened to audio, voted on transcripts and made the calls. Claude wrote the code, ran the benchmarks and deployed. This post is the honest version of how that went, step by step, including the parts that didn't work.

Step one wasn't code. It was a benchmark. Vendors test on clean English podcasts. Our meetings switch languages mid-sentence. So we took six real meetings from Fyxer and ran them through everything: Whisper and Parakeet on my Mac, Whisper and Deepgram's Nova-3 on Cloudflare, pyannoteAI, and ElevenLabs Scribe.

Local Whisper promptly turned a Dutch management meeting into bad English, because it opened with "good morning". That's exactly what averages hide.

Scoring wasn't easy either. Word error rates need a perfect reference transcript, and we didn't have one. So Claude built me a blind listening tool: the snippets where the engines disagreed most, the audio, and the competing versions without names. I spent an evening clicking. Seventy-two judgements later, the answer was clear.

The blind listening tool, shown with a made-up snippet]

ElevenLabs Scribe won the words. It was picked 24 times out of the 44 snippets it appeared in, in Dutch and English alike. Fyxer won 9. Local Whisper 7. The tool I was paying for came second or third on everything.

Speakers were more interesting. Scribe puts a speaker change on exactly the right word, but now and then merges two colleagues into one. pyannote recognises a voice across a whole meeting, but is sloppy about where turns start. So we use both. Scribe decides where the speaker changes. pyannote decides who it is.

Could we split the audio per speaker and transcribe the pieces in parallel? Faster, yes. Worse, too. The model needs the whole conversation as context.

A transcript in Notes, with demo data

The service itself is deliberately boring. One Rust Worker on Cloudflare, a D1 database, a queue and an R2 bucket. Sign-in copies our internal MCP hub: Cloudflare Access for the web, OAuth for Claude. The transcription services get a signed link that expires, and every step saves its work before the next one starts. A hiccup at three in the morning costs nothing.

Then one rule: everything in Europe. Our meetings are full of client names and hiring talk. Cloudflare made that a setting rather than a project. The database and the recordings sit in its EU jurisdiction, the meeting bot runs in EU containers, and pyannoteAI runs in France.

Where Notes runs, everything stored in the EU

One exception, said out loud. ElevenLabs transcribes in the US for now. Their Enterprise plan offers EU residency, and switching is one line of configuration.

Privacy shaped the features too. A voiceprint needs consent: name a colleague's voice and they approve the sample first. And in the app, nobody reads a colleague's meetings unless they're shared.

The rest of the night was "can we also". A company vocabulary generated from our Notion databases, so different members of my team come out right. Zoom cloud recordings, one click to transcribe. A meeting bot: paste a link, and "Andreas's notetaker" joins as a guest, records and leaves. And a Mac menu bar app that records any call, offers to start when Zoom grabs your microphone, and loses at most a second if it crashes.

Notes, with the meeting bot recording a call (demo data)
The Mac app offering to record a meeting

So what does it cost? We had nine Fyxer seats at $252 a month. The new Team plan is $64 a seat, so the same nine seats now cost $576. Notes costs about $0.40 per hour of meeting we actually transcribe: $0.27 for ElevenLabs, including the vocabulary hints, and roughly €0.11 for pyannoteAI. When the bot records, its container adds up to $0.22 an hour. On top of that come the fixed parts, $5 a month for Cloudflare and €19 for pyannoteAI's plan. Assuming about four meeting hours per person per week:

  Fyxer before Fyxer now Notes
How you pay $28 per seat per month $64 per seat per month About $0.40 per meeting hour, plus about $27 a month fixed
Our 9 Fyxer users, about 150 meeting hours a month $252 a month $576 a month About $90 a month, or $120 if the bot records all of them
All 25 of us, about 400 meeting hours a month $700 a month $1,600 a month About $190 a month, or $280 if the bot records all of them

In other words: the whole company on Notes costs less than nine people on Fyxer's new plan. For those nine, Notes would only catch up with Fyxer's new price at around 1,400 meeting hours a month, or 900 if the bot records all of them. The bot's container has two cores and 8 GB of memory, billed per second. Prices as of October 2026, from Fyxer, ElevenLabs, pyannoteAI and Cloudflare (containers).

What I took away is simple. Benchmark on your own mess, not on a leaderboard. The speed didn't come from typing faster. It came from decisions made quickly: which engine, what leaves Europe, what never happens without a click. And boring choices age well.

And I believe more than ever in tools that are good at one thing. Notes doesn't draft my emails or score my sales calls. It turns meetings into transcripts and hands them to whatever I use next, mostly Claude. A tool that does one thing well is easy to keep, easy to replace and hard to hold you hostage. A tool that does everything gets to charge you for all of it.

Is it finished? No. The bot needs more real meetings on Meet and Teams, and the switch to EU transcription is still on the list. But instead of paying per seat, we now pay per hour of audio we actually transcribe. And "we should build our own" became a working product in one night.