The notes part is a weekend job: take the audio of a call, transcribe it with Whisper, and have an LLM write the summary, action items and open questions into a searchable archive. What Read sells on top is the bot that joins Zoom, Teams and Meet from your calendar on its own, speaker names taken from the call, talk-time and engagement scores, and search that spans meetings, email and chat. A file-drop or loopback recorder covers the first and leaves the rest; the auto-join bot is the fragile part, since it needs meeting-platform automation or a paid bot API. Recording other people also carries consent rules that differ by country and state.
Before you buildRead's Free plan covers 5 meetings a month, and Zoom One Pro, Business and Business Plus plans include Read's premium features through Zoom Essential Apps. Check both before building.
Build me a local meeting-notes archive to replace Read AI. Requirements: - Python 3.12 with FastAPI and server-rendered Jinja pages. `python app.py` serves http://127.0.0.1:4870 on localhost only; `python notes.py add <file>` does the same as the upload page. - Input: drop an audio or video file (m4a, mp3, wav, mp4) on the page or into ~/MeetingNotes/inbox/, or record live with ffmpeg from the device named RECORD_DEVICE in .env (BlackHole on macOS). Convert everything to 16 kHz mono wav first and keep the original. - Transcription: `faster-whisper` (model from .env, default "small", int8) with word timestamps; speaker labels from `pyannote.audio` 3.1 (HF_TOKEN in .env). If labelling fails, keep the transcript with one "Speaker" label instead of losing the meeting. - Summary: an OpenAI-compatible chat endpoint (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL in .env; Ollama works). Ask for JSON: a summary of at most 5 sentences, decisions, action items (owner, task, due date if said), open questions and up to 5 topics. Summarise 30-minute chunks, then merge them. - Storage: sqlite3 at ./data/notes.db with meetings, segments (start, end, speaker, text) and an FTS5 index over segment text; media, transcript.md and summary.md live in ~/MeetingNotes/<date>-<title>/. - Pages: a meeting list with search across every transcript (each hit shows the sentence and its timestamp), and a meeting page with the summary on top, then the transcript, where a click on a timestamp seeks the HTML5 player. A speaker-rename box rewrites every segment; a button copies the notes as markdown. - Calendar: an optional ICS file path in .env; match a recording's start time to an event to prefill the title and attendees. - Single user. No accounts, no telemetry, local-first; the only outbound call is the LLM endpoint. Live recording starts only after a banner reminds me to tell everyone I'm recording. - Out of scope: a bot that joins Zoom, Teams or Meet, email and chat search, engagement scoring, mobile apps, sharing. - README: installing ffmpeg and BlackHole, the pyannote license step, minutes of processing per hour of audio measured on this machine, and a warning that recording-consent rules differ by country and state.
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 Read AI.
Add a weekly digest to the meeting archive in this folder. Requirements: - Add a done checkbox to every action item on the meeting page, stored in SQLite. - `python notes.py digest` collects every action item from the last 7 days that is not marked done, grouped by owner, and writes ~/MeetingNotes/digests/YYYY-WW.md. - If SMTP settings are in .env, also email the digest to me as plain text through smtplib. - Add a cron and a launchd example to the README. - Update the README.
Add question answering to the meeting archive in this folder. Requirements: - Split each transcript into 60-second chunks and store embeddings (EMBED_MODEL in .env: an OpenAI-compatible embeddings endpoint or a local sentence-transformers model) in a `sqlite-vec` table. - An Ask page takes a question, retrieves the 8 closest chunks and has the LLM answer using only those. - Every sentence of the answer cites a meeting and a timestamp that links to the player at that second. - If nothing relevant is retrieved, say so instead of guessing. - Update the README.
Add a Zoom importer to the meeting archive in this folder. Requirements: - Use a Zoom Server-to-Server OAuth app (ZOOM_ACCOUNT_ID, ZOOM_CLIENT_ID and ZOOM_CLIENT_SECRET in .env) and list cloud recordings from the last 7 days through the recordings API. - Download the audio-only file of each recording once, skip recordings already imported, and send them through the normal pipeline with the Zoom topic as the title. - Run it as `python notes.py zoom-sync` and as an hourly job. - Document the Zoom scopes the app needs and that cloud recording must be switched on for the account. - Update the README.
Add redacted exports to the meeting archive in this folder. Requirements: - An Export button on the meeting page offers Markdown and plain HTML, each with a Redact switch. - Redaction replaces email addresses, phone numbers and URLs with [email], [phone] and [link], and any name listed in ~/MeetingNotes/redact.txt with [name]. - Show a preview with every replacement highlighted before the file is written. - Add tests with a transcript containing an email, a phone number in two formats and a listed name. - Update the README.
Nobody has to remember to hit record: the assistant turns up, the report lands in the inbox and it is shared with the people who were in the room. Teams also pay for the metrics and the CRM and Jira hooks, which only matter once many people use it.
Estimate · Free when transcription and summaries both run on your own machine (Whisper plus Ollama). A hosted model adds per-meeting token fees; a dozen hour-long meetings should land in the low single dollars, but check your provider's rates. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Free | $0 | $0 | 5 meeting transcripts and reports a month, meetings up to 1 hour, summaries, Ask Read search, meeting coach, basic integrations, desktop and mobile apps. |
| Pro | $19.75 | $15 | Unlimited transcripts and reports, meetings up to 4 hours, 100 minutes of audio or video uploads a month, premium integrations (Notion, Salesforce, HubSpot, Jira, Confluence, Zapier, webhooks), workspace access, custom assistant name. |
| Enterprise | $29.75 | $22.50 | Everything in Pro plus audio and video playback, video highlights, 200 minutes of uploads a month and premium support. |
| Enterprise+ | $39.75 | $29.75 | Everything in Enterprise plus SAML SSO and SCIM, HIPAA support, domain capture, custom data retention, 8-hour meetings, 300 minutes of uploads and onboarding. |
Free covers 5 meeting transcripts and reports a month, with summaries, the meeting coach and basic integrations.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: A bot that joins Zoom, Teams and Meet from your calendar without you pressing record, Speaker names taken from the meeting platform, plus talk-time, sentiment and engagement scores.
About $19.75 a month on the Pro plan per seat, $237 a year (checked 2026-10-19).
A bot that joins Zoom, Teams and Meet from your calendar without you pressing record; Speaker names taken from the meeting platform, plus talk-time, sentiment and engagement scores; Ask Read search across meetings, email and chat; Audio and video playback with highlights, and the mobile apps; Shared workspaces and connectors to Salesforce, HubSpot, Jira and Notion. If any of those matter to you, keep paying.
Yes: Meetily (open source), Anarlog (open source), Vexa (open source).