Who else can see a meeting

Workspaces inside a team — who reads each — and the public link to a summary.

By default a meeting is yours and nobody else's. Two things can widen that, and they are separate: being in a team, and publishing a link.

Inside a team: workspaces

Every meeting recorded in a team is in one workspace or several, and whoever can read ANY of them can read it. A meeting about an HR matter that is also a legal one can sit in “HR” and in “Legal” at once. A team starts with two:

Anybody in the team can make more — a workspace for one client, one deal, three people — name it, rename it, and add or take out colleagues. Whoever is added reads everything in it from that moment, including meetings recorded before they came; that is what sharing a workspace is for. The team's admins read every workspace except anybody's “Private”, whether or not they are in it.

The person who recorded a meeting adds it to workspaces and takes it out of them, while it is being recorded or at any time afterwards; in the app, the workspace card on the meeting opens a list to tick and untick. “Private” cannot be combined with anything: adding a meeting to any other workspace takes it out of “Private”, taking it out of its last one puts it back there, and choosing “Private” takes it out of every other workspace at once — away from everybody else. Nobody else can place it, admins included. A shared link keeps working whatever workspaces a meeting is in.

Workspaces exist only inside a team. A person on their own never sees one.

Nobody who can only read a meeting can change or delete it. That holds for every surface, including an assistant.

A meeting somebody else recorded shows up in lists and searches marked as theirs, so it is always clear whose meeting is being quoted. There is also a filter for "mine" against "the team".

Leaving a team, or being removed from one, stops you reading the team's workspaces from that moment, and takes you out of every workspace you were in. Meetings already recorded stay in the workspaces they are in, and the one who recorded each can still take it back to their “Private”. Somebody taken out of one workspace stops reading a meeting only if no other workspace of theirs holds it.

All of it can be done by asking. list_workspaces() is every workspace you can open, who reads each and how many meetings are in it — with the ids the others take. create_workspace() and rename_workspace() do what they say. add_to_workspace() puts a colleague in, and an assistant is told to say first that they will read everything already there. add_meeting_to_workspace() adds one of your own meetings to a workspace, beside the ones it is already in, and remove_meeting_from_workspace() takes it out of one. get_meeting() lists every workspace a meeting is in. list_meetings() takes a workspace id to list only its meetings — a meeting in several is listed under each. Two are asked about first, because they take readers away: prepare_remove_from_workspace() names who would stop reading what — your own id is how you leave one — and remove_from_workspace() takes only its token; prepare_delete_workspace() names every meeting still in a workspace you made, and delete_workspace() takes each out of it — one that was in no other workspace goes back to the “Private” of whoever recorded it. “Private” and “Whole team” cannot be deleted.

A link to the meeting

A meeting can be published to a link that anybody can open — no Chui account, no sign-in. The page shows the title, the date, how long the meeting was, the people you have named and the summary; you decide whether the transcript and the recording go on it too. Chui counts how many times the link has been opened, leaving out the fetches it recognises as a machine drawing a preview card — so pasting the link into WhatsApp, Slack or Telegram does not move the number. A machine Chui does not recognise still counts, and an open is not a read: the number is the best evidence Chui has that somebody looked, not proof that anybody read the meeting.

If whoever opens the link is already signed into Chui and can see that meeting, the page takes them straight into Chui on it rather than leaving them reading a copy. Everybody else reads the page.

The notes you typed stay with you, whatever else you choose.

It can be stopped, and stopping means stopping: the address answers nothing from that moment, for everybody holding it. Publishing the meeting again makes a different address, so somebody who kept the old link in a chat does not get the meeting back.

Only the person who recorded a meeting can publish it or take the link back. A colleague who can open a meeting shared with the team cannot, and is not even told whether a link exists — it is not their decision to take.

How much of the meeting the page carries

Under the link, three rows say what the person opening it gets:

The sentence above those three rows always says which one is in force, so you know what you are handing over before you hand it over. Changing it is the same address, not a new one, so it takes effect at once for everybody you have already sent the link to — the screen says so. Narrowing it back takes the transcript, or the recording, off the page just as fast, though anybody who read or heard it in the meantime has done so.

At the two narrower settings the recording is not on the page at all — there is no address on it that would reach the audio. At Everything the page serves the recording only for as long as the link itself works: stopping the link, or narrowing it back, stops the audio at the same moment it stops the page.

A meeting Chui never received the audio for can still be set to Everything; its page simply carries no player.

A link you sent before this existed did not change. Every link starts, and stays, at the summary until somebody moves it on purpose.

You can ask for both by saying so. share_meeting() gives a meeting an address and hands it back, so an assistant can put it straight into the message you are writing — it is told to name the meeting and wait for you to say yes, because anybody who reads the page before you change your mind has read it. A meeting Chui is still writing up cannot be published: there would be nothing behind the link yet.

set_share_level() is the three rows above, said out loud: ask for the transcript — or the recording — to go on the page too, or for either to come back off. It cannot publish anything — a meeting with no live link is an error — so an assistant asked to «share it with the transcript» does it in two steps, and if the second one fails the page is narrower than you asked rather than wider. An assistant is told to say plainly what Everything hands over before it asks you: your voice, and everybody else's, playable by anybody who holds the address.

Stopping one is asked about first. prepare_unshare_meeting() reads back which meeting it is, what the address is and how many times it has been opened, and nothing has happened at that point; only after you say yes does unshare_meeting() take it back, and it can only take back the link you were just shown. That is the same question the app asks by drawing the address beside the button, and it is asked here because this one cannot be undone.

What is published right now

Chui can answer "which of my meetings can anybody with a link read?" in one question rather than one meeting at a time. In the app it is a screen of its own — Settings → Public links — listing every meeting that has a live link, when it was published and how many times the page has been opened, with the way to stop each one right there. When nothing is published it says so in a sentence, which is the reassuring answer.

list_shared_meetings() is the same list, and it says what each page carries — the summary, the summary and the transcript, or all of that and the recording — because three live links are not the same thing. It does not hand back the addresses themselves: ask about one meeting for its link. Links you have already stopped are not listed anywhere — this is what is readable now, not a history of what once was.

Who in a team reads a meeting is its workspaces — add_meeting_to_workspace(), above.

When a meeting reaches you and should not have

A meeting somebody else shared is somebody else's conversation, and there are two things you can do about it. Both sit at the foot of that meeting, where the owner's own Delete would be — neither is drawn on a meeting of your own, because there is nobody to report it to and nobody to block.

Report it. «Report this meeting» takes what you want to say, in your own words, and sends it to a person at Chui who reads it and answers it. There is no category to pick and no email address to give. The page a public link opens carries the same thing as a form on the page itself, which matters because whoever opens one usually has no Chui at all.

report_meeting() is the same door by typing. It is not report_problem(): that one reports a fault in Chui — a wrong summary, a recording that stopped — and goes to a different queue read by different people. This one is about a person and their recording.

Report illegal content. If you believe a recording stored at Chui breaks the law — anybody's, not only one shared with you — the EU Digital Services Act gives you a formal notice: the form at chui.io/dsa/report, linked from every shared recording's page, or an email to privacy@chui.io. It asks for the link, why it is illegal, your name and email, and your statement that you send it in good faith. You get a confirmation by email, a person reviews it, and you are told what was decided and how to contest it. chui.io/dsa has the contact points. report_illegal_content() is the same notice by typing.

Block them. After a block, nothing that person shares reaches you again and nothing you share reaches them — including meetings already shared. Nothing is deleted, unshared or changed: Chui simply stops answering, and Settings → Privacy lists everybody you have blocked with the way to lift it. Lifting one puts every meeting back on both sides, exactly as it was.

A block is not the same as removing a colleague from a company: it survives somebody inviting you back.

prepare_block_person() reads back who would go silent and how many meetings each side stops seeing; block_person() takes only the token it hands over, so nothing can be blocked that you were not shown first. unblock_person() lifts one and list_blocked() is the list — and it is only ever the blocks YOU wrote, because a block somebody wrote against you is not yours to lift.

Sending the notes by email

When a meeting you recorded came from a calendar invite, a card under its summary offers to email the summary to the people on that invite — never the transcript, the recording or the notes you typed. «Review & send» shows every address ticked (untick anybody, or add an address by hand) and the email exactly as it will go. It comes from Chui in your name, replies go to you, and you get a copy. A link to the meeting is in it only if you already shared one. There is a daily limit on how many addresses one account writes to.

prepare_send_notes() shows the email and every recipient — the invite's people, or the addresses you give it; send_notes() takes only the token it hands over. An email that has gone cannot be called back.

After every meeting with other people on its invite, the «your meeting is ready» notification also offers to send them the notes, with how many there are; tapping it opens the send screen, and nothing goes until the person presses send. Under that screen, «Don't ask after every meeting» stops the offer until it is turned back on in Settings → Meeting reminders. set_notes_offer() turns it on or off by typing; get_account says which it is.

Every summary to Slack, Zapier or a web address, by itself

In Settings, «The summary — elsewhere too» takes one web address per account: a Slack incoming webhook, a Zapier «Catch Hook», a Make custom webhook, or any https address of your own. Paste it and press Save: Chui sends one test message there first and refuses an address that does not take it. From then on, when a meeting's summary is ready, Chui sends it there by itself — Slack gets a message in its own shape, any other address one JSON document (the meeting's id, the account it is in, title, the names of the people who spoke, summary, link, start time, length in minutes, language). Only the summary goes, never the transcript, the recording or the notes you typed; a link only if the meeting is already shared. Each meeting goes once, and memos never go by themselves.

The same privacy check as an email runs first. If it finds anything that looks private, nothing goes: the meeting says so, and «Review & send» shows each flagged passage to keep or remove before you send it. If the address stops taking them, Settings says what it answered; «Change the address» or «Stop sending».

An address that only takes posts carrying a key — a webhook of your own, or an assistant's routine — gets one too: paste it in the Key field under the address. It goes with every post in the Authorization header (a bare key as Bearer <key>; one that already starts with Bearer or Basic as you typed it), and once saved it is never shown again, anywhere; Settings only says «With a key». A Slack address takes none. «Send a test» sends one test message to the saved address and key, so you can watch the other end wake up without pasting either again. If the address does not answer, or answers that it is busy, Chui asks again twice, a few seconds apart; a refusal (a 401 means the key is wrong) is not asked again. Each post carries the meeting's id, so a receiver that sees one twice can tell.

prepare_set_summary_destination() shows where every summary would go and set_summary_destination() takes only the token it hands over; stop_summary_destination() stops; test_summary_destination() sends the test. prepare_set_summary_destination() takes the key too, and never reads it back. prepare_post_summary() shows one meeting's summary as it would go (with the flagged passages to answer) and post_summary() sends it. get_account says what is connected.

Promises from a meeting

Under a meeting's summary, «Promised» shows one card for each thing you promised in it — to whom, what, by when. For the ones Chui can write, the email is already written: «See the email» shows it exactly as it will go, to the address from the invite or the person's page (or one you type once — Chui remembers it on that person), from Chui in your name, with replies and a copy to you. A promise to send a file says which file; attach one of the meeting's files, or add one, and send — up to 3.5 MB per email. A promise that needs your own work first (a priced offer, a contract) gets no email; the card only says what is owed. «Hide» dismisses a card; nothing is sent. Cards are not a to-do list: nothing gathers them across meetings.

list_promises() lists them with each email word for word. prepare_send_promise() shows the email, its recipient and its files, and send_promise() takes only the token it hands over; prepare_dismiss_promise() and dismiss_promise() hide one the same way. An email that has gone cannot be called back.

Sending from your own address, and promises into your To Do

Since build 225. If your mail is Microsoft's (Outlook, Microsoft 365), Chui can send the notes and a promise's email from your own address instead of «you via Chui»: it then sits in your Sent folder and replies come straight back to you. On the send sheet, «Send from <your address> instead» asks Microsoft once; after that the «From» choice switches between your address and Chui's, and Chui remembers the one you chose. The same approval lets a promise that needs your own work go into your Microsoft To Do — «Add to my To Do» on its card files it with its due date and a link back to the meeting. Nothing goes and nothing is filed without your tap. A company that does not let people approve apps themselves shows a page to forward to its IT instead. From your own address one email carries up to 2.9 MB of files.

On an iPhone (since #1800), «Add to my to-dos» asks where it should go: Apple Reminders — the default list on that iPhone — or Microsoft To Do. «Always there» remembers the answer on all your devices; «change» beside the button asks again, and Settings → Public links → «Ask each time» forgets it. Apple Reminders cannot be reached over the internet, so the reminder is written by your iPhone itself, and only when you press: iOS asks once whether Chui may use Reminders, and Chui adds the one reminder — its title, the due date, whom it is for and a link back to the meeting — and never reads, changes or deletes your other reminders. If you said no, the card says where to turn it on. Android, Windows and chui.io put promises into Microsoft To Do. set_todo_destination() picks the place by typing.

A promise that is a list, such as a shopping list, goes to your to-do list as one task with each item as its own step, in the order it was said, and its card shows the heading first and the items after it in lighter type (since build 239).

connect_mailbox() says whether it is connected and, if not, where to connect it — an assistant cannot do that step for you. set_send_from("mine") or set_send_from("chui") picks the address. prepare_add_task() shows the task a promise would become and add_task() files it; prepare_disconnect_mailbox() and disconnect_mailbox() let go of the connection, after which Microsoft still lists Chui at myaccount.microsoft.com until you remove it there.

Before it goes, Chui checks the summary for passages that look private (since build 224) — a price, a remark about somebody, something from your own notes, something called confidential — and shows each one in place with why: keep it, or remove it from what goes. Nothing is decided for you, and your own summary never changes. Afterwards «What you shared» on the same card shows when it went, to whom, and exactly what they got.

prepare_send_notes() also lists the passages that look private and why; call it again with remove naming the ones the person took out, and the email it shows is then the version that goes. get_shared_version() reads what went.