Note So Fast

Inspiration

AI meeting notetakers like Otter and Granola are now facing lawsuits claiming they recorded people who never agreed to it (Otter.ai court order, Granola complaint). The problem is simple. One person adds a bot, everyone else in the call gets recorded, and the audio gets processed on someone else's cloud.

People still need meeting notes. Teams in legal, HR, finance, healthcare and other high-security industries need them the most, and they're also the ones who can least afford a notetaker that doesn't respect consent. So we built one that's privacy-first and consent-first from the start.

What it does

Note So Fast is a video meeting with a personal notetaking agent built in, and every participant controls that agent for themselves.

  • Each person has their own toggle. If yours is off, your voice is never transcribed. That's the first layer of defense.
  • You don't have to hunt for a button mid-meeting. Say "this next bit's off the record" and nothing goes into the notes until you're back on. Say "strike that" and what you just said gets knocked from the transcript.
  • If someone mentions pay, health details, HR issues, legal matters or contact info, it gets kept out of the transcript even if nobody asks.
  • An Insights view shows what kinds of things were kept out (never the actual text), and a "How it decides" view explains why. You can see for yourself that the agent is doing what it says.

How we built it

Everything that touches what you said runs locally on the host's laptop. None of it goes to a third-party AI service.

  1. faster-whisper turns speech into text locally, and only for people who opted in.
  2. Every sentence waits in a hold buffer for a few seconds before it can reach the shared notes. That's what lets "strike that" pull something back before anyone ever sees it.
  3. A cue detector and a small state machine track when someone goes off the record and when they come back.
  4. Microsoft Presidio masks contact details and other personal info.
  5. IBM Granite 4.2 (3B), an open-weight model running locally through Ollama, flags sensitive topics like pay and health. If the model isn't available, keyword rules take over, so the filter never just shuts off.

We were deliberately conservative here. The local model is only allowed to make the filter stricter. It can keep an off-the-record section open, but it can never end one early. Only text that passes every check makes it into the transcript.

The whole project is open source under the MIT license, with open-weight models, so anyone can read exactly what happens to their words instead of taking our word for it.

What makes it different

Existing notetakers record first and sort it out later, in the cloud. We flipped that. Consent is per person, filtering happens before anything gets written down, and it all runs on your own hardware. As far as we know, no other notetaker gives every participant their own control over the bot, or lets you take something back just by saying so.

Challenges and where it stands

Making consent easy to see and change ended up being just as important as the models. We also had to deal with live call connections, backend restarts, and the tradeoff between missing sensitive speech and cutting harmless speech.

We built a benchmark from real meeting transcripts (QMSum) with private lines inserted. Our pipeline catches roughly 2 to 3 times as many private items as simple keyword rules, but it still misses a lot and sometimes removes harmless lines too. The numbers and caveats are all in the repo. We haven't measured accuracy with real voices on live mics yet, so this is a prototype, not a legal compliance guarantee.

In the public demo, audio and video go through LiveKit Cloud, and approved transcript text passes through Vercel and Cloudflare. Transcription and filtering run on our laptop. The repo can also run the call server locally in Docker.

What's next

We built our own meeting room for the hackathon so we could focus on the agent and the consent logic. Next we want to make fully local deployment the default, test with real voices, improve accuracy, and build a bot that brings the same controls into Google Meet and Zoom.

Built With

  • fastapi
  • faster-wispr
  • granite
  • livekit
  • ollama
  • presidio
  • python
  • spacy
  • vercel
  • webrtc
Share this project:

Updates

Submission history