How it works
- Invite itAdd your aikto address (for example
aikto+yourname@…) to the meeting invite. That's the only thing you do. - It joinsAt start time a participant called “aikto (Your name's notes)” asks to join. The host lets it in like anyone else.
- It listensIt posts a short recording notice in chat, records audio, and notes who is speaking. Type
aikto stopin chat and it leaves. - It writes notesAfter the call it transcribes on the Mac, labels speakers by name, and has Claude write a summary, decisions, action items and chapters.
- You read themOpen the aikto page in your browser. Search every meeting, click any line to hear that moment, and ask questions about what was said.
Why build our own
The pipeline
Everything runs on one always-on Mac mini at home. Each meeting moves through these stages in order.
+name tag.Platforms
| Platform | How the bot joins | Difficulty |
|---|---|---|
| Google Meet | As a guest in a normal Chrome window. Captions give us speaker names. We build this first. | Easiest |
| Microsoft Teams | “Continue on this browser”, as a guest or with its own account. Some companies block guests, so it depends on who hosts the call. | Medium |
| Zoom | The browser client first. The official SDK now needs the inviter's Zoom account to authorize it, and the inviter has to be in the call. | Hardest |
Who owns a recording
One aikto serves the team. Everyone gets their own invite address, and whoever invites aikto owns the notes. You only see your own meetings, plus any a teammate shares with you.
| Situation | What happens |
|---|---|
You invite aikto+you@… | The bot shows as “aikto (Your name's notes)” and the notes land in your folder. |
| Two of us invite it to the same call | One bot joins. The first inviter owns the notes and they're shared with the second. |
| A stranger sends it an invite | Ignored. Only known senders can send the bot to a meeting. |
| Two of our meetings overlap | The Mac handles one at a time, so the second is skipped and its owner gets a notice. This is an open question below. |
Tools we're using
| Job | Choice |
|---|---|
| Language | Python 3.12, managed with uv |
| Joining calls | Playwright driving a real Chrome window |
| Speech to text | Whisper (whisper.cpp or mlx-whisper), running on the Mac |
| Speaker labels | pyannote, matched to names from the call's captions |
| Summaries & Ask | Claude API (Opus 5.5) |
| Storage & search | Plain folders + SQLite with full-text search |
| Web page | FastAPI with server-rendered pages |
| Remote access | Tailscale (private network, no open ports) |
What it costs
| Item | Estimate |
|---|---|
| Claude, per meeting-hour | ≈ $0.15–0.20 |
| 6 people × 3 h/day × 22 workdays | ≈ 400 h → $60–80 / month |
| Transcription and storage | $0 (runs on the Mac) |
| Disk per meeting-hour (audio) | ≈ 15–30 MB |
These are estimates, to check against current pricing. We'll set a hard spend limit on the API key and show spend in the app.
Privacy & consent
aikto always joins visibly under a clear name, and the host can refuse or remove it. It posts a recording notice when it joins and leaves when anyone types aikto stop. Put [no-aikto] in a meeting title and it won't join at all. It only goes to meetings it's invited to and never reads anyone's calendar.
Recording-consent laws vary by country and state. We'll write a one-page team policy and check the rules where our clients are before we roll out.
Milestones
- M0Project skeletonStructure, config and lint/type checks in place.
- M1Audio file → notesA real 30-minute recording becomes a clean transcript with speakers and a useful summary.
- M2Web page v1Browse, search and play back meetings from any device on the network.
- M3Google Meet botPaste a Meet link and get named notes without touching the Mac.
- M4Invite by emailAdding aikto to a calendar invite is all anyone does.
- M5Microsoft TeamsSame flow works on Teams.
- M6ZoomA Zoom meeting you're in produces notes.
- M7Ask & polishAsk questions about meetings with answers that link to the exact moment. Spend tracking.
- M8Team rolloutLogins, sharing, remote access, guides, then a pilot with 1–2 of us before everyone.
What we learned from Fireflies
We studied how Fireflies' web app is put together to learn from the product, not to copy code. Useful ideas we're borrowing: inviting an email address as the trigger, one record per meeting with audio kept separately, keyword overrides in meeting titles (“don't join” / “do join”), a “join now” box for pasted links, and an assistant whose answers cite the exact transcript lines. Even Fireflies uses several speech-to-text vendors chosen by language. For us, one local Whisper model is enough.
Questions for the team
- Which do you use most: Meet, Teams or Zoom? That decides what we build after Meet.
- What languages are spoken in your meetings? English only, or mixed with Marathi or Hindi?
- Two of our meetings at the same time will happen. Is “second one skipped” acceptable at first, or do we budget for a bigger Mac?
- Are you comfortable with transcript text going to the Claude API to be summarized? It can be turned off per meeting.
- Where do you want “your notes are ready” messages: email, Telegram, or nowhere?
- Anything Fireflies (or another tool) does that you'd miss?
Everything between now and the team using it
No items match this filter.