Recipe

Private meeting notes with local AI

Turn a meeting recording into a transcript and a summary of decisions and action items on your own computer.

IntermediateDesktop appTerminalInstructions checked October 15, 2026

Written by Jakub Rusinowski · Updated

Two local pieces do the work: a speech-to-text model (Whisper or Parakeet) turns the recording into a transcript, and a chat model running in Ollama turns the transcript into decisions, action items and owners. Meetily packages both in one free desktop app; engineers can script the same pipeline with whisper.cpp and Ollama. It stays private only if the summary model is local too.

Will this work on my computer?

The Model Finder's picks for “Everyday assistant” on one modest machine of each kind. Estimated, not measured.
Your computerWhat the Model Finder sets upExpect
PC with 16 GB of RAM and no graphics cardQwen 3.5 4BUsable
PC with an 8 GB graphics cardQwen 3.5 4BSmooth
PC with a 24 GB graphics cardGemma 4 26B-A4BSmooth
M1 Mac with 16 GB of memoryQwen 3.5 9BUsable

This table covers the summary model. Transcription runs a separate speech model as well; the site has no measured figures for speech models, so the table does not include it.

Check my exact hardware

What you'll build

  1. Meeting audio
  2. Speech-to-text (Whisper or Parakeet, local)
  3. Transcript
  4. Summary prompt to a chat model in Ollama (local)
  5. Decisions, actions, owners, dates and open questions

Before you start

  • Consent first. Rules on recording conversations differ between countries and, in the US, between states; some require everyone's agreement. Tell people you are recording and get their agreement before you start. This is not legal advice: check the rules where you and the other participants are.
  • Meetily: a Mac with Apple Silicon or a Windows PC (the Windows installer needs an x64 processor with AVX2). On Linux you build it from source.
  • DIY path: comfortable in a terminal, with git, cmake, ffmpeg, jq and a C++ compiler installed.
  • Ollama installed for the summaries, from ollama.com/download.

Recommended stack

Pick: Meetily (Community Edition). A free, MIT-licensed desktop app that records the meeting, transcribes it on your machine with Whisper or Parakeet, and summarises it with Ollama or a cloud provider you choose. Its current release is marked pre-release, so expect rough edges.

Alternative for engineers: whisper.cpp + Ollama. Two command-line tools and one prompt, and the transcript is a plain text file you keep.

The summary model is the one the table above names for your computer.

Setup steps

Path A: Meetily

  1. Install Ollama and pull the summary model the table names for your computer:
bash
ollama pull qwen3.5:4b       # for No GPU, 8 GB GPU
ollama pull gemma4:26b-a4b   # for 24 GB GPU
ollama pull qwen3.5:9b       # for Mac
  1. Download Meetily from its GitHub Releases page: the .dmg for an Apple Silicon Mac, the x64-setup.exe for Windows.
  2. Install it. On a Mac, open the .dmg and drag Meetily to Applications; on Windows, run the installer.
  3. In Meetily's settings, choose a local transcription model (Whisper or Parakeet). It downloads once.
  4. For summaries, choose Ollama and the model you pulled in step 1. If the meeting must stay private, do not pick Claude, Groq, OpenRouter or OpenAI: those send the transcript to that provider.
  5. Record a short test meeting, stop it, and generate the summary.

Path B: whisper.cpp + Ollama (DIY)

  1. Build whisper.cpp and download a speech model:
bash
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh base.en
cmake -B build
cmake --build build -j --config Release
  1. Convert your recording to the 16-bit WAV that whisper-cli reads:
bash
ffmpeg -i meeting.m4a -ar 16000 -ac 1 -c:a pcm_s16le meeting.wav
  1. Transcribe it to a text file:
bash
./build/bin/whisper-cli -m models/ggml-base.en.bin -f meeting.wav -otxt -of meeting
  1. For a meeting that is not in English, download a multilingual model (one without .en in its name) and add -l auto.
  2. Summarise it with Ollama, asking for JSON so you can reuse the result. If you pulled a different model, change the model name:
bash
jq -n --rawfile t meeting.txt '{
  model: "qwen3.5:4b", stream: false,
  messages: [{role: "user", content: ("Summarise this meeting transcript. List decisions, action items with owner and due date if stated, and open questions. Use only what the transcript says; write \"not stated\" when an owner or date is missing.\n\n" + $t)}],
  format: {type: "object", properties: {
    decisions: {type: "array", items: {type: "string"}},
    actions: {type: "array", items: {type: "object", properties: {task: {type: "string"}, owner: {type: "string"}, due: {type: "string"}}, required: ["task", "owner", "due"]}},
    open_questions: {type: "array", items: {type: "string"}}
  }, required: ["decisions", "actions", "open_questions"]}
}' | curl -s http://localhost:11434/api/chat -d @- | jq -r '.message.content' > meeting-summary.json

jq builds the request from the transcript safely, quotes and line breaks included. More on the JSON part: Reliable JSON from local LLMs.

Test it

Record yourself reading a short script with one decision, one task with an owner and a date, and one open question:

"We agreed to move the launch to the second week of March. Anna will update the pricing page by Friday. We still don't know whether the EU price includes VAT."

A good summary lists exactly one decision, one action (Anna, pricing page, Friday) and one open question, and adds nothing.

Verify it worked

  • The transcript has the names and numbers you said, spelled the way you said them.
  • Every action in the summary appears in the transcript. Nothing is invented.
  • With Wi-Fi off, transcription and summary both still run.

Did you get this working?

Troubleshooting and limits

  • Who said what. Meetily's README lists speaker labels as a PRO-edition feature, and whisper.cpp's default output does not label speakers. whisper.cpp has an experimental speaker-turn mode (the small.en-tdrz model with -tdrz), English only. Treat the owners in a summary as a draft to check.
  • Check names, numbers and owners against the audio. Speech models mishear names and figures, and the summary model then repeats the mistake confidently.
  • Long meetings. If the summary forgets the second half, the transcript did not fit the model's context window. Summarise in parts, or see context length and memory.
  • Ollama not reachable. Connection refused fixes.
  • Windows says the app is unsafe. SmartScreen and antivirus.
  • Meetily also sells a separate PRO edition (accuracy, speaker labels, team deployment). The free Community Edition is what this page covers.

What stays on your computer

ComponentRuns whereNote
Audio recordingOn your computerSaved by Meetily, or wherever you keep the file
Speech-to-text (Whisper or Parakeet)On your computer, after a one-time downloadThe speech model downloads once
Summary modelOn your computer, or online if you choose a cloud optionLocal only if you choose Ollama; Meetily also offers Claude, Groq, OpenRouter, OpenAI and other endpoints, which send the transcript to that provider
OllamaOn your computerUnless you pick a :cloud model; OLLAMA_NO_CLOUD=1 blocks those
Transcripts and summariesOn your computerStored on your disk

Go deeper

Sources

The steps on this page were checked against these official pages on the date shown.