What happens after the call fits in one sitting: a recording goes through whisper.cpp, speakers are labelled, a language model writes the summary and action items, and everything lands in a searchable local database. The weekend goes on the bot that joins Zoom, Meet and Teams from your calendar, because a headless browser has to sign in, wait in the lobby and keep up with each platform's changes, and some platforms block it. Skipping the bot and recording your own audio works for one person. Team workspaces, conversation analytics and CRM sync stay behind.
Before you buildCheck Fireflies Free first: unlimited transcription with limited AI summaries costs nothing. It stops being enough once your stored meetings pass 400 minutes.
Build me a meeting transcript archive to replace Fireflies. Requirements: - Python 3.12: FastAPI with HTMX pages and a Typer CLI. `meetnotes serve` runs http://localhost:4770; `meetnotes add <file>` ingests one recording. - Input: watch ~/MeetingRecordings/ (`watchdog`) for .mp3, .m4a, .wav, .mp4, .webm and .mkv, and accept uploads on the web page. `ffmpeg` converts everything to 16 kHz mono WAV first. - Transcription: whisper.cpp through `pywhispercpp`, model and language from .env (default medium, auto-detect), with timestamps. Label speakers with `pyannote.audio` when HF_TOKEN is set; otherwise label every line "Speaker". - Notes: send the transcript in chunks to an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL in .env) and write a summary, decisions, action items with owner and due date when they were spoken, and open questions. Save transcript and notes as Markdown in ~/MeetingNotes/YYYY-MM-DD-title.md; the files are the source of truth. - Storage: sqlite3 with FTS5 and `sqlite-vec` in ./data/meetings.db: meetings, transcript segments (start, end, speaker, text) and action items with a done flag. `meetnotes reindex` rebuilds the database from the Markdown files. - Pages: a meeting list with search that jumps to the timestamp in an HTML5 audio player; an action-items page with checkboxes; export of one meeting to Markdown or SRT. - Ask: a box that takes a question across all meetings, retrieves the 8 best segments (FTS5 plus embeddings from the same endpoint) and answers with citations as meeting and timestamp. - Single user. No accounts, no telemetry, local-first. Audio never leaves the machine; only transcript text goes to the LLM endpoint, and the README must say so and show how to point LLM_BASE_URL at Ollama to keep everything local. - Out of scope: a bot that joins Zoom, Meet or Teams, calendar integration, CRM, Slack or task syncing, accounts and sharing. - README: how to record a call (the platform's own record button, or OBS), the ~1.5 GB whisper medium download, and the Hugging Face licence step that pyannote needs.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Fireflies.ai.
Add automatic meeting capture to the transcript archive in this folder. Requirements: - Read an iCal feed (ICS_URL in .env) every 5 minutes and find events in the next 10 minutes that have a Zoom, Google Meet or Teams link. - For each, ask a self-hosted Vexa instance (VEXA_URL and VEXA_API_KEY in .env, following the endpoints in Vexa's README) to send a bot, and remember the request so it is never sent twice. - When the meeting ends, fetch the transcript and feed it through the same notes and indexing pipeline as an uploaded file; mark the source as "vexa". - An opt-out list of event titles or domains the bot must never join. - Update the README, including a warning that attendees should be told a bot is recording.
Add a weekly digest to the transcript archive in this folder. Requirements: - A command `meetnotes digest` that collects last week's meetings, their decisions and every action item still open, and sends one email through SMTP (`smtplib`; SMTP_HOST, SMTP_USER, SMTP_PASSWORD and DIGEST_TO in .env). - One section per meeting with the title, date and a three-line summary linking to its page. - A launchd plist and a cron line in the README to run it Monday at 08:00. - Update the README.
Add task export to the transcript archive in this folder. Requirements: - A command `meetnotes tasks` that writes open action items to TASKS_FILE (a Markdown file in .env) as `- [ ] text (owner, due date) [[meeting]]` lines, and reads ticked boxes back to mark them done. - Keep a stable id per item in an HTML comment so edits to the text never create duplicates. - Only items assigned to YOUR_NAME in .env, or all of them with a flag. - Update the README.
The bot means nobody has to remember to record: it appears in every call, and the transcript and summary are waiting in the archive, Slack or the CRM afterwards. Teams also pay for one searchable archive in place of a folder per person. A script you start by hand loses that habit, and the meeting you forgot to record is the one you needed.
Estimate · Transcription runs locally for free. Summaries cost a few cents per meeting through an API, or nothing with Ollama. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | Unlimited transcription, limited AI summaries, 400 minutes of storage per team, 20 AI credits, recording of Zoom, Meet and Teams, upload of audio and video files, Chrome extension, desktop and mobile apps. |
| Pro | $18 | $10 | Unlimited AI summaries, 8,000 minutes of storage per seat, 20 AI credits, video recording, downloads of transcripts, summaries and recordings, action items, unlimited integrations. |
| Business | $29 | $19 | Unlimited storage, 30 AI credits, conversation intelligence, team analytics for admins, user groups, multi-language mode, public meeting access. |
| Enterprise | — | $39 | 50 AI credits, rules engine, SSO and SCIM, audit logs, HIPAA compliance, private storage, custom data retention, a dedicated account manager. |
Free has unlimited transcription with limited AI summaries and 400 minutes of storage per team.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: A bot that joins Zoom, Google Meet and Teams from your calendar without you doing anything, Shared workspaces, channels, comments and clips for a team.
About $18 a month on the Pro plan per seat, $216 a year (checked 2026-10-19).
A bot that joins Zoom, Google Meet and Teams from your calendar without you doing anything; Shared workspaces, channels, comments and clips for a team; Notes and action items pushed into CRMs, Slack and task apps; Conversation analytics such as talk time, topics and sentiment on Business; Mobile and desktop apps and a Chrome extension for recording without the bot. If any of those matter to you, keep paying.
Yes: Meetily (open source), Anarlog (open source), Vexa (open source).