Documentation
Everything Brieflee does, and how to drive it.
Brieflee is the private AI assistant for the people who run the room. It joins your Teams, Meet or Zoom call as a visible participant, transcribes live, and writes the summary, the decisions and the action items once the call ends. Switch coaching on and a side panel only you can see says what to say and what to ask while you are still on the call.
- 3
- platformsTeams · Meet · Zoom
- ~20s
- to joinafter you send it in
- 7
- live tabsin the meeting panel
- 3 credits
- per coaching hour+10 min grace
Overview
Brieflee listens to a meeting and works on it in real time. A notetaker joins the call as a visible participant and the transcript streams back, so the report is written from what was actually said rather than from memory.
During the call: a side panel, one only you can see, fills with a suggested reply, the next question worth asking, risks it heard, and what you still have not covered. Switch coaching on from the panel at any minute; the recording and the report happen either way.
It never speaks, never posts to the meeting chat beyond its own arrival notice, and never renders on the shared screen or in the recording. You stay the only voice in the room.
During the call
The notetaker joins and transcribes. The narrow panel inside Teams, Meet or Zoom fills its seven tabs of live signal once coaching is on.
When it ends
A structured report writes itself: takeaways, decisions, risks, action items.
Afterwards
Tasks, search across every meeting, a shareable read-only link, and a push to your CRM.
Install
There are three ways in. The meeting app puts the panel inside the call. The web app lets you send the notetaker into any call from a link: no install on the meeting platform at all. The desktop app, for Windows and Mac, records calls on your own computer, with nothing joining them.
Microsoft Teams
Get the package
The app ships as a zip containing manifest.json and two icons at the archive root. Teams rejects it if the files sit in a subfolder.
Sideload or publish
Teams → Apps → Manage your apps → Upload a custom app, or publish the zip to the org from the Teams Developer Portal. Your Teams admin must permit custom app upload.
Add it to a meeting
Brieflee appears in the meeting's app list, and can also be added as a tab from the meeting chat or details view.
Sign in inside the panel
Tab SSO is off by default, so the panel shows its own sign-in card the first time. Later panel loads reuse that session.
Google Meet, Zoom, or anything with a link
Open the web app, press Send Brieflee to a meeting in the sidebar, and paste the join link. Brieflee validates it and sends the notetaker in. Recognised links:
| Platform | Link forms accepted |
|---|---|
| Microsoft Teams | teams.microsoft.com |
| Google Meet | meet.google.com |
| Zoom | zoom.us |
In Zoom specifically, opening the Brieflee panel dispatches the notetaker on its own using the join URL the Zoom SDK provides.
Desktop app for Windows and Mac
On Windows 10 and 11, it notices when Teams, Zoom, Google Meet or Webex takes your microphone and records the call from your computer: your microphone and what the computer plays, streamed to Brieflee as you talk. When a Brieflee notetaker is going to the same booked meeting, the app leaves the recording to it, and records instead if the notetaker is turned away or still waiting to be let in after three minutes. Google Meet is recognised from its browser tab while that tab is in front; after that you can switch tabs and it stays one recording.
On a Mac with Apple silicon (M1 or later) and macOS 13 or later, it records the same two sides, with some differences. It starts by itself for a call in the Zoom, Teams or Webex app; for Google Meet or any other call in a browser, press Record. A Zoom recording ends with the meeting, but press Stop when a Teams or Webex call ends: a Mac does not tell Brieflee that the call is over, and left alone the recording carries on until nothing has been heard for five minutes. Installing on a Mac has the steps and the rest of what differs.
On either, nobody sees a notetaker join when the computer records, so tell everyone on the call that an AI notetaker is running. Download it, check its checksum, and find the MSI for IT deployment on Windows at brieflee.ai/download.
Your first call
Open the Brieflee panel in your meeting, or paste the join link into “Send Brieflee to a meeting”.
Pick your seat: the panel asks once which role you sit in, and tunes what it surfaces to it.
Add context if you have it: paste a note or drop in the proposal. Optional, but it is what makes the replies specific.
Admit “Brieflee Notetaker” from the lobby if your meeting has one. It takes about 20 seconds to appear.
Talk normally. Reply, Probe, Risk and Gaps fill as the other side speaks.
When the call ends the report writes itself: no button to press.
The live panel
Seven tabs. Four sit in the bar: Reply, Feed, Probe, AI, and Risk, Gaps and Decided open from the “More ▾” dropdown at the end. Each carries a live count badge; Risk adds a red ! when a flag is high or critical.
The header shows the meeting title, an elapsed clock, a pulsing Rec light once the first line lands, and a running count of captured transcript lines. The clock is anchored to when the meeting actually started, server-side, so switching Teams tabs or reloading the panel does not reset it to zero.
The signals
A signal is something the AI produced: one of the four below. It is not the line count in the panel header, which counts lines of speech the notetaker finalised. The two used to share the word and a customer, quite reasonably, asked which was which.
A whispered answer that streams in word-by-word as soon as the other side finishes a sentence: first person, 1–3 sentences, something you can say out loud. It fires only on other people's lines, never your own, and stays quiet for filler, greetings and acknowledgements.
The next questions worth asking, each with the reason it matters, a priority and a category, colour-coded and individually copyable.
Flagged concerns graded critical to low, each with an Evidence line quoting what triggered it and a recommended Move: one concrete next action.
What a confident proposal still needs, with severity and why it matters, plus the coverage meter described below.
Decisions the conversation actually landed on, pulled out as they happen.
Free-form chat about the meeting in progress, grounded in the transcript so far. Costs nothing.
If the client speaks again while a reply is still writing, the stream is cancelled and the half-written text is relabelled superseded rather than left looking finished. Below the live reply sit refined answers from a slower pass: the detected question as a pull-quote, a suggested reply, bullet talking points, a confidence label and a copy button.
Coverage & wrap-up
Every meeting is tracked against a fixed ten-point technical checklist, shown as a meter with an NN / 10 count:
An item is never marked covered or partial without an actual quote from the call; if the AI claims coverage with no evidence, the server forces it back to empty. Expand a row to read the quote it was based on. You can override any item by clicking its status dot to cycle empty → partial → covered, and the change syncs to every device watching that meeting.
Set the expected meeting length (default 60 minutes) and the panel runs a T-minus countdown. With ten minutes left and items still open it writes a single bundled wrap-up question covering the remainder; at two minutes it switches to a red “These will need a follow-up” banner.
Transcript & Ask AI
The Feed tab is the live transcript. Each finalised line carries a timestamp, the speaker's name as the notetaker reported it, and the text; every distinct speaker keeps a consistent colour and your own lines take the accent. A greyed “live” line can show a sentence forming before it settles.
Right-to-left scripts (Urdu, Arabic, Hebrew) are laid out correctly beside a Latin speaker name, both in the panel and in the finished report.
The AI tab answers questions about the meeting in progress from the transcript so far, and is instructed to say plainly when the transcript does not cover something rather than guess. The conversation survives a panel reload. In-meeting questions are free.
How it joins
The notetaker is a browser bot running on Brieflee's own infrastructure. It joins as a guest participant named Brieflee Notetaker, visible to everyone in the participant list. Nothing is captured covertly.
On joining, it posts this to the meeting chat:
To help take notes, this meeting is being recorded and transcribed by Brieflee AI. By staying in the meeting, you're giving consent. A summary may be shared with the meeting organiser. Privacy policy: https://brieflee.ai/privacy
By default no meeting audio is sent to a third-party speech engine at all: the bot turns on the meeting platform's own closed captions and Brieflee ingests the caption text, with speaker attribution coming from the platform itself.
| Situation | What happens |
|---|---|
| Never admitted from the lobby | Nothing is captured. The panel keeps showing “Nothing is being captured”. |
| You add it twice | The second request finds the existing bot and reports “already-joined”. No second bot enters. |
| A bot was denied or crashed | It is replaced, attached to the same meeting. |
| The meeting ends | The bot leaves by itself, and the report generation starts. |
| You are out of credits | The notetaker still joins and records, whether you add it by hand or the calendar sends it; only live coaching cannot be switched on. |
| A meeting is already live | Refused: one live meeting per account at a time. |
Languages
You pick the spoken language of the meeting per account, and it is read at the moment the bot is created, so it applies identically to a notetaker you send in by hand and one dispatched from your calendar.
Calendar auto-join
Connect Outlook or Google Calendar and the notetaker turns up on its own, dispatched1, 3 or 5 minutes before each meeting starts (3 unless you change it under Calendar auto-join in Settings, Integrations), so the join and any lobby admission happen before anyone is talking. There is nothing to launch.
| How it behaves | |
|---|---|
| Providers | Microsoft (Outlook / Microsoft 365) and Google Calendar. No others. |
| Direction | Read-only. Every calendar request Brieflee makes is a GET, and it never writes to your calendar. |
| Invitation text | The sync looks through it only for a join link and keeps none of it. “Read from the invitation” in a meeting's agenda reads that one event's description again, when you press it. |
| Opt-in model | Opt-out per meeting: every mirrored event with a join link starts with the notetaker ON. |
| Sync | Every 3 minutes, covering the next 14 days, into Brieflee's own copy. |
| Duplicate invites | The same invite on two calendars is collapsed to one meeting and one bot. |
| Recurring meetings | Handled per occurrence: each gets its own decision and its own bot. |
| No join link | Shown as un-joinable, with no toggle offered. |
The Calendar page has Day, Week, Month and Year views, filters, and keyboard shortcuts (←/→ to move, T for today, D/W/M/Y to switch view). The view and date live in the URL, so a calendar link can be shared.
Meeting context
Before a call you can attach material to that one meeting: paste a note, or upload documents. Both are stored as extracted plain text and fed into the live prompts, so replies, probes, risks and gaps can draw on your own material.
| File types | .pdf .docx .txt .md |
| Size limit | 10 MB per file |
| Combined cap | 30,000 characters per AI call; the model is told when material was truncated |
| Tables in DOCX | Read, including table contents, so pricing and scope tables do reach the AI |
| Scanned PDFs | Not supported: there is no OCR, and a no-text upload is rejected with a message saying so |
| Visibility | Only the meeting's owner. Every context endpoint verifies ownership. |
Both Start meeting and Skip open the same consent dialog, “Save this meeting's context?”, with a tick-box on by default. Where you consent, documents from your earlier meetings with the same client are pulled into later meetings too, newest first.
Playbooks
Seven discovery playbooks ship with the product, read-only:
They are substantial: the Website playbook alone carries 40 checklist items and 30 reference questions. Three parts reach the live AI: the discovery checklist feeds the gaps detector, the top questions feed the next-question generator, and the risk flags feed the risk detector. Items are filtered against your stated role first, so what is irrelevant to your seat drops away.
Objection library
Your workspace keeps cards with a category, trigger phrases and one approved answer. A new organization is seeded with 31 default cards across all ten categories; solo accounts get their own private library.
Detection runs in two stages: a free keyword match against your trigger phrases first, then an AI classifier reading recent transcript when no phrase hits. When one fires, the panel shows an orange card with the matched phrase, a confidence percentage, your approved answer, and, streaming in below, a version tailored to this client.
The report
When a meeting completes the report generates itself; there is no button to press. It usually takes 10–30 seconds, and the owner is emailed the whole thing inline.
The report has eight tabs:
| Tab | What is on it |
|---|---|
| Overview | A 1–2 sentence purpose, 8–12 takeaways, and 4–8 topic-clustered sections |
| Mind map | The meeting drawn as a map: its topics, what was decided, what is to do and what is still open, a few points each |
| Signals & Risks | Verbatim buying signals tagged by type, plus risks graded critical to low with evidence |
| Requirements | What the client actually asked for |
| Actions | Each action item with an owner, priority and a due date in the speaker's own words |
| Follow-up & CRM | A pre-drafted follow-up email, CRM-ready fields, and the push controls |
| Coaching | How the conversation went |
| Transcript | The full speaker-attributed record, with the recording if there was one |
If a call continues an earlier one, the report adds Related past meetings and Carried over from last meeting, checking each past commitment against the new transcript and marking it done, in progress, not done or unclear. A link the model itself grades low-confidence is discarded, so an uncertain match cannot write another customer's history into your report.
Filing a meeting
Every way a meeting starts asks the same four things: what type it is, the client it is with, the project it belongs to, and what it is for. A meeting can name a client and a project together, and neither is required. A Procurement meeting names a vendor where the others name a client. A name that does not exist yet is created in the same field, and the title is suggested from the name and the purpose: ABC Company: Product demonstration.
Meetings from before you started filing are not lost. They sit as Uncategorisedand can be filed one at a time, several at once from the Meetings list, or proposed by Brieflee from the call itself. A proposal always says it is one and waits for you to confirm it, so nothing is filed under a heading you did not choose.
What a meeting is filed under is what everything else filters on: the Meetings list, Tasks, Decisions, the analytics and the scope of a question.
Tasks
Every action item the AI heard, across every meeting, in one list. Tasks are deduplicated by a hash of the meeting and the normalised action text, so re-syncing never duplicates and a task you already ticked stays ticked.
They group into Open, Overdue and Done. Tick them, cycle priority by clicking the chip, or remove them; changes save immediately. Clicking a task opens that meeting's report on the Actions tab and highlights the exact item it came from.
What the AI hears arrives as a suggestion. It waits in Suggested until somebody approves it, one at a time or a whole meeting at once, because “maybe Ahmed can look into this” is not a commitment. A promise made again in a later meeting joins the task already open rather than becoming a second row, and says how many meetings it has come up in.
A daily email is available in Settings, Notifications, with a switch per kind: overdue, due in the next seven days, raised again, waiting for review, and decisions recorded. Every switch is off until you turn it on, and a day with nothing in the kinds you chose sends no email at all.
Ask Brieflee
Ask Brieflee answers from your recorded meetings rather than from one of them. It is in the navigation and on your home page, not buried inside a call: “What did we agree with ABC Company?”, “What is still unresolved on this project?”, “What objections came up most often?”
Narrow it before you ask: everything, chosen meetings, a meeting type, a client, a vendor, a project, a purpose, a participant or a date range. The page says which meetings it searched. Answers carry their sources, and a source card gives the meeting, the date, the speaker and the timestamp; opening a timestamp opens that transcript line, with the recording ready to play from there.
It answers only from meetings you can already open, says plainly when the answer is not in them rather than inventing one, prefers the latest confirmed position when something changed, and explains a contradiction instead of choosing a side. Follow-up questions keep the thread, and a new chat clears it.
Decisions
What your meetings decided, kept outside the meetings that decided it: the decision, the call it came from, the date and where it stands. Filter it the way you filter everything else, and group it by meeting, client or vendor, project, type or month.
When a later meeting changes its mind, both are kept. The earlier decision is marked as replaced and linked to the one that replaced it, so the chain reads end to end and the current position is never in doubt. Brieflee never connects two decisions on its own: it offers the ones that look related and you choose, becauseuse Provider A for hosting and use Provider A for email read alike and are two decisions.
The brief before a call
Fifteen minutes before a meeting that follows an earlier one, Brieflee offers a brief at the top of the app: what was decided, what you promised, what others promised and what nobody took. It is also on the meeting's card in the Calendar and beside your next call on Home, so you can open it sooner.
A meeting follows an earlier one when it is the same repeating meeting on your calendar, or when both are filed under the same project, client or vendor. It reads your own finished meetings, so nothing is offered ahead of a first meeting.
Every finished meeting, including one recorded with no calendar entry, has the same brief at the top of its report: Brief for next call. It opens what that meeting decided and what is still open, with anything left from the earlier meetings it follows.
The brief before a meeting can also come by email, fifteen minutes ahead. It is off until you switch it on in Settings, Notifications, and nothing is sent when there is nothing to say.
Tick off a promise you have kept right there; it is the same task as on the Tasks page. A task Brieflee heard and nobody has approved yet is marked Suggested. Opening a brief costs no credits.
Push to CRM
Three CRMs are supported end-to-end: HubSpot, Pipedrive and Zoho CRM. The push lives on the report page and appears only once a summary exists and that CRM is connected.
| CRM | Each action item becomes | The optional summary note |
|---|---|---|
| HubSpot | A Task on the deal, assigned to the owner whose email matches yours | A Note engagement on the deal |
| Pipedrive | An Activity of type “task” on the deal | A Note on the deal |
| Zoho CRM | A Task linked to the deal | A Note attached to the deal |
Every task carries a breadcrumb back to Brieflee: the meeting title, the suggested owner and the summary id. Due dates are read from the wording of the action item (“by tomorrow”, “by next week”, “in 3 days”) and otherwise default to three days out. A push can partially succeed, and you get a per-item report of exactly what was created.
Step-by-step setup for each, with the data shared and how to disconnect: HubSpot, Pipedrive and Zoho CRM.
Plans & credits
Meetings cost no credits. Pro includes up to 60 hours of meetings a month and Enterprise up to 120 hours a person, under fair use, and Free includes 3 hours of meetings a month. Credits pay for live coaching, counted from when you switch coaching on in a meeting, which can be halfway through. 3 credits cover up to 60 minutes of coaching, with a 10-minute grace before the next hour is charged, so 70 minutes of coaching still costs 3, and 71 minutes costs 6. Coaching shorter than 5 minutes in a meeting is not charged by itself; such short stretches add up over the calendar month, and every full hour of them uses one coaching hour. The charge is incremental as coaching runs, not up front.
Your plan includes its coaching hours outright (the Coaching hours column below), and those are spent before any credits you have bought, so a pack you buy on the side tops the plan up rather than replacing it.
| Plan | Monthly | Yearly | Coaching hours |
|---|---|---|---|
| Free | $0 | — | 1 at sign-up, 3 recap hours a month |
| Pro | $15 | $153 ($12.75/mo) | 2 / month |
| Enterprise | $23 per person | $220.80 ($18.40/mo) per person | 5 / month per person |
Annual billing deposits the whole year's coaching hours up front: 24 for Pro, 60 for Enterprise. Credit packs need no subscription and are sold in 4 sizes:
| Pack | Price | Per credit |
|---|---|---|
| 5 credits | $12 | $2.40 |
| 15 credits | $30 | $2.00 |
| 40 credits | $70 | $1.75 |
| 100 credits | $150 | $1.50 |
What costs extra
| Action | Cost |
|---|---|
| The meeting, its transcript and its automatic report | Included, no credits |
| Asking the AI about the meeting you are in | Free |
| Asking a question across your meetings | Included: 100 a month on Pro, 300 a person on Enterprise, 10 on Free; then 1 credit each |
| The full post-meeting report | Included on Pro and Enterprise; 1 credit on Free, once per meeting |
Nothing else debits a credit: reading history, exports and transcript ingest are all covered. Both extras are refunded automatically if generation fails.
Workspace & roles
There are two independent axes. Your workspace role is owner, admin or member. Separately, a platform-operator flag unlocks the Brieflee console; being a workspace owner does not grant it.
| Owner / Admin | Member | Solo | |
|---|---|---|---|
| Dashboard, Meetings, Calendar, Tasks, Analytics, Ask AI | ✓ | ✓ | ✓ |
| Playbooks | ✓ | — | ✓ |
| Credits & billing | ✓ | — | ✓ |
| Team roster, invite links, remove members, set roles | ✓ | — | — |
A solo account has no organization and is treated as owner of its own one-person workspace, with a personal credit balance. It can form or join a team later without creating a new account.
Integrations & scopes
Signing in with Microsoft or Google is separate from connecting those accounts. Sign-in requests only openid email profile; no calendar, mail or task permission at all.
Connecting an account under Settings → Integrations is an explicit second step:
| Provider | Scopes requested | Brieflee writes |
|---|---|---|
openid email profile tasks calendar.readonly | Tasks, into a list you pick. Never the calendar. | |
| Microsoft | Tasks.ReadWrite Calendars.Read User.Read offline_access openid email | To Do tasks, into a list you pick. Never the calendar or mailbox. |
From a calendar event Brieflee stores only the event id, the invite's iCalUID, the title, start and end times, the join URL and a cancelled flag. Attendee lists are never stored. “Read from the invitation” in a meeting's agenda reads that one event's description when you press it and keeps only the agenda lines you save; those lines are never sent to AI. Action items reach Google Tasks or Microsoft To Do only when you pick a target list and press Push.
API keys
Create a key at Settings → API keys. It needs a name and an end date. The full secret is returned exactly once, at creation; the list endpoint has no field for it, so a lost key is unrecoverable. Create a new one and revoke the old.
| Format | de_ followed by 48 hex characters, 51 in total |
| Stored | Only a SHA-256 hash and an 11-character prefix. A database read cannot recover a usable key. |
| Expiry | Chosen when the key is made: 30 days, 90 days (the default), a year, or never. From that moment the key is refused. Keys made before 2 October 2026 never expire. |
| Limits | A key cannot create another key and cannot open platform administration. Sign in for those. |
| Revocation | Takes effect on the very next request. The row is kept, so name, prefix and last-used history stay visible. |
| Plan gate | None: API access is not restricted by subscription plan. The only economic gate is the credit balance on AI actions. |
Three headers all authenticate a key:
X-API-Key: de_…
Authorization: Bearer de_…
Authorization: de_…REST API
Every path is prefixed with /v1. Start with a smoke test; it returns the account the credential belongs to:
curl https://brieflee.ai/v1/auth/me \
-H "X-API-Key: de_your_key_here"Key management
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/api-keys | List keys, newest first. Never returns secrets. |
| POST | /v1/api-keys | Create. Takes `name` and an optional `expires_in_days` (1 to 365; omitted means never). Returns the secret once, as `key`, with `expires_at`. |
| DELETE | /v1/api-keys/{id} | Revoke (204 No Content). |
Meetings and transcripts
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/meeting-sessions | List, with ?page, ?page_size and ?status |
| POST | /v1/meeting-sessions | Create (title, meeting_type, domain all required) |
| GET | /v1/meeting-sessions/{id} | One session in detail |
| PATCH | /v1/meeting-sessions/{id} | Update |
| DELETE | /v1/meeting-sessions/{id} | Delete (204) |
| GET | /v1/meeting-sessions/{id}/chunks | The transcript, paginated |
| GET | /v1/meeting-sessions/{id}/summaries | Persisted summaries, newest first |
Asking questions
curl -X POST https://brieflee.ai/v1/meeting-sessions/SESSION_ID/ask \
-H "X-API-Key: de_your_key_here" \
-H "Content-Type: application/json" \
-d '{"question": "What did they say about the timeline?"}'
# => {"answer": "..."}POST /v1/meeting-sessions/ask-all asks across your recent meetings and returns the same shape. That one costs 1 credit; the single-meeting form does not.
The notetaker
curl -X POST https://brieflee.ai/v1/bot/join \
-H "X-API-Key: de_your_key_here" \
-H "Content-Type: application/json" \
-d '{"meeting_url": "https://teams.microsoft.com/l/meetup-join/..."}'It creates a meeting session on the fly if you do not pass one. POST /v1/bot/leave pulls the bot out.
Everything else
| Area | Endpoints |
|---|---|
| Tasks | /v1/tasks |
| Credits | /v1/credits/summary, /v1/credits/transactions |
| Profile | /v1/users/me, /v1/users/languages |
| Playbooks | /v1/playbooks, /v1/objection-cards |
| Calendar | /v1/calendar/status, /v1/calendar/events |
| Exports | /v1/meeting-sessions/{id}/exports |
| Share links | /v1/meeting-sessions/{id}/share |
| Health | /health, at the root, not under /v1 |
Errors
Errors come back as standard JSON: {"detail": "..."}.
| Status | When |
|---|---|
| 401 | No credential, a malformed header, or a key that is unknown, revoked, deactivated or belongs to a deleted account. Takes effect on the next request, not at token expiry. |
| 402 | Not enough credits for something that costs them: the full report, an AI question across meetings, or switching on live coaching (code no_credits). Also a month's meeting hours used up (the free plan's allowance, or a paid plan's fair use): when adding a notetaker, recording from the browser, importing, or adding the first line to a meeting nothing has started yet (code meetings_used_up). Imported text longer than the hours left is refused the same way; a recording longer than them ends as a failed import that says why. Adding transcript to a meeting already running never returns it. |
| 404 | Anything you do not own: sessions, exports and keys alike. Deliberately not 403, so ids cannot be enumerated across accounts. |
| 409 | A meeting is already live. Sessions idle for 20 minutes are closed out first. |
| 422 | Asking to summarise a meeting with essentially no transcript, rather than returning a fabricated summary. Also setting a meeting's status to anything but completed or archived: a meeting starts when its notetaker joins or its first audio or line arrives, never by setting its status. |
| 429 | Past a daily safety limit on questions or on rewriting one meeting's report, or live suggestions asked for again within seconds. The detail says when it opens again. |
Security & privacy
| Who sees the panel | Only you. It renders in your client, never on the shared meeting surface, in chat, or in the recording. |
| Who sees the notetaker | Everyone. It joins as a visible participant and announces itself in the meeting chat. |
| Where the bot runs | On infrastructure Brieflee hosts itself, not a third-party notetaker vendor. |
| AI subprocessors | Three: our own speech-to-text on RunPod GPUs (audio only), Modal as its backup when RunPod has no server free (audio only), and DeepSeek for suggestions and summaries (transcript only). All called directly. The full list, with regions, is on the sub-processors page. |
| Meeting privacy | Meetings are private to the account that created them. No workspace, admin or platform endpoint returns another user's transcript or summary. |
| Passwords | Hashed with bcrypt. Plaintext is never stored. |
| Sessions | An 8-hour token on the web; 30 days in the phone and desktop apps. Every request re-reads the account, so deactivation and Sign out of every device take effect immediately rather than at expiry. |
| Third-party tokens | Encrypted at rest for every connected provider. |
| Payment details | Handled by Stripe. Card details are never posted to Brieflee's servers. |
The verbatim Google API Services User Data Policy Limited Use statement is published on the privacy policy.
Keep recordings on your own storage
Recording, video, transcript, summaries and exports are all written to storage you own, encrypted in transit and at rest. It never has to rest on Brieflee’s infrastructure. Set it up in Settings → Storage.
| S3-compatible | Amazon S3, Cloudflare R2, Wasabi, Backblaze B2, DigitalOcean Spaces, MinIO/Ceph, or any other S3 endpoint. Server-side encryption and your own KMS key are supported. |
| Azure Blob Storage | Account, container and key. Server-side encryption supported. |
| Google Cloud Storage | Via S3 interop, with customer-managed keys. |
| SFTP / cPanel | Any server you can reach over SSH. No cloud account needed. |
| OneDrive | Personal or work and school. Connect with Microsoft; there are no keys to copy, and Brieflee can open only its own folder there. A company OneDrive may need your IT admin to approve Brieflee the first time. |
| Google Drive | Personal or Google Workspace. Connect with Google; there are no keys to copy, and Brieflee can see only the files it saved itself. |
| Folder prefix | Every provider takes one, so recordings land where your own retention rules already apply. |
| Credentials | Write-only. A saved key is returned masked and must be sent back unchanged to keep it, so editing a bucket prefix cannot wipe your access key. |
The two delivery paths are different promises. S3, Azure and Google Cloud can issue a signed URL, so the recording is uploaded straight into your storage and is never written to a Brieflee disk. SFTP, OneDrive and Google Drive cannot take an upload signed straight from the recorder, so their uploads are streamed through Brieflee in chunks, in memory, and never written to its disk either. OneDrive recordings then play straight from OneDrive. Which path a given meeting took is recorded against that meeting.
If your storage is unreachable, Brieflee holds the recording and keeps retrying. You choose what happens then: keep a copy with Brieflee, or have nothing kept anywhere else.
Data & deletion
Deleting a meeting deletes its transcript and summaries, and calls the bot runtime to destroy the recording it holds, not just the row in Brieflee's database. Deleting everything is self-serve, irreversible, and purges the recordings too. A workspace with storage of its own can choose to keep a deleted meeting's files there (Settings, Storage).
Security-relevant actions are written to an audit trail: sign-ins with method, meeting deletions, recording purges, API-key creation and integration disconnects. The audit writer never records secrets.
Troubleshooting
No captions are appearing
Check the notetaker was admitted: it shows up in the participant list as “Brieflee Notetaker”. If it is sitting in a lobby, nothing is captured until someone lets it in. Credits are a separate question: at zero balance the notetaker still joins and records, whether you add it by hand or the calendar sends it; only live coaching needs hours.
The notetaker never joined
Auto-join needs the meeting flagged in Calendar and a connected Microsoft or Google account, and it is sent 1, 3 or 5 minutes before the start, as you set it under Calendar auto-join. A meeting with no join link cannot be attended. You can always add it mid-call from the panel.
It says a meeting is already in progress
Only one live meeting per account at a time. Open the meeting that is running, or wait; sessions idle for 20 minutes stop counting.
The side panel is blank in Teams
Make sure the app is pinned to the meeting and you are signed in. Tab SSO is off by default, so the panel shows its own sign-in card the first time. Reopen it if you joined late. The AI tabs stay quiet until coaching is switched on for the meeting.
The panel reset when I switched tabs
Teams reboots the panel iframe on every tab switch. Brieflee restores your tab, your AI conversation and the meeting clock, but a genuinely fresh panel will ask you to sign in if no session was stored.
Suggestions seem off-domain
Attach the relevant material to the meeting, and set your role. Replies and the gaps ledger are grounded in your documents, the active playbook and your seat.
My uploaded PDF was rejected
There is no OCR, so a scanned or image-only PDF has no extractable text. Files must be .pdf, .docx, .txt or .md and 10 MB or smaller.
The language was wrong
The language is read when the bot is created, so it cannot be changed for a call already in progress. Set it before the next meeting.
Limits reference
| Credit | 60 minutes + 10 minutes grace, rounded up per meeting; under 5 minutes in a meeting is free, and such stretches add up: every full hour of them in a month uses one |
| Free allowance | 3 credits (1 coaching hour) once at sign-up, and 3 hours of recording every calendar month |
| Meetings a month | 3 hours on Free; up to 60 hours on Pro and 120 hours a person on Enterprise (fair use). Calendar month in UTC, each part of a meeting counted in the month it is held; on a paid plan a meeting already running is never cut off, and on Free it stops recording when the hours run out, with a warning ten minutes before |
| Live meetings | One per account at a time; idle sessions stop counting after 20 minutes |
| Context upload | 10 MB per file; .pdf .docx .txt .md; 30,000 characters combined per AI call |
| Discovery checklist | Fixed at 10 items |
| Meeting length setting | 5–480 minutes, default 60 |
| Live transcript view | Last 80 segments in the panel; the full record is in the report |
| API key | de_ + 48 hex = 51 chars; optional end date, up to a year; no per-account limit |
| Session token | 8 hours on the web; 30 days in the phone app and the desktop app, which renews its own while in use |
| Notetaker dispatch | 1, 3 or 5 minutes before a calendar meeting (3 unless you change it); ~20 seconds to appear |
| Calendar sync | Every 3 minutes, 14 days ahead |
| Share links | No expiry; revocable |
| Currency | USD only |