Yeetline

Polls, approvals, tasks and forms

Beside ordinary messages, a conversation can carry structured ones: a poll, an approval request, a task, a form, or a read-and-acknowledge.

They are not a different kind of thing to this server. Each one is an ordinary sealed envelope whose contents, once your app opens them, happen to be a structure rather than a sentence. The server sees exactly what it sees for a line of speech: opaque bytes, a sender, a conversation and a time.

What that means in practice

Every count is your app's. A poll's tally, an approval's quorum, who has acknowledged and who has not — all of it is computed by each app from the sealed messages it has opened. The server referees none of it and cannot.

The honest consequence: two people whose apps have seen different subsets of the votes will briefly see different tallies, until both have caught up. The encoding the apps use is defined exactly, and checked by two independent implementations in the test suite, so that when they have both seen the same votes they are guaranteed to agree — rather than merely expected to.

Nobody can be stopped from voting twice by the server. What stops it is that each app counts one vote per person, and every vote is signed by the device that sent it in the same way every message is. What the server cannot do is referee a disagreement about it.

The kinds

KindFor
Polla question with options; single choice, several, or ranked
Approvala request with named approvers and a quorum
Taska title, an assignee, a due date and a checklist
Forma set of fields somebody fills in
Acknowledgment"read this and say you have"
Handoverthe note an on-call shift leaves the next one
Minutesa meeting record: who was there, what was decided, what was agreed
Notea handling marking on an earlier message, and why

A ranked poll, and an approval that somebody stepped out of

Two of them do something worth knowing before you rely on the number.

A ranked poll is counted by points: on a poll with five options, your first choice scores four, your second three, and so on — and the scale comes from the poll, not from how many you bothered to rank. Rank one option and you have given it a full first preference rather than nothing. The card shows the points and the first preferences side by side, because the option with the most points is not always the one most people put first, and when those disagree it is worth seeing why.

An approval counts against whoever is still eligible. Somebody who recuses themselves — a conflict of interest — leaves the denominator entirely, so "everyone must approve" with four approvers and one recusal means the other three, and the request can still be granted. Somebody who abstains does the opposite: they stay in the count and withhold. And where nobody is left who could grant it and nobody left who could refuse it, it reads as stalled rather than refused — which asks for a different list of approvers, not for more patience.

Starting one

Five of them are a sentence you can type. The parts are separated by |, exactly as a poll's options are:

Type thisAnd you get
/poll Thursday or Friday? | Thursday | Fridaya poll
/approval Sign off the tender | dana | saman approval request for dana and sam
/task Draft the response | dana | by Fridaya task, assigned, with a checklist
/ack Read the new safeguarding policyread-and-acknowledge, for the room
/handover Night shift | batch job running | watch the queuea shift handover
/minutes Procurement panel | shortlist agreed | tender by the 14tha set of minutes

A form is not on that list, and nor is a handover's full set of item states. A form is a set of typed fields — text, a number, a date, a choice — and a line of text is the wrong shape for describing one, so those are built from the composer rather than pretended to fit on one line.

Answering one

Tap the answer on the card. What your app sends back is another sealed message naming the one it answers — never a change to the original. There is no "edit that message" operation anywhere on this server, for the same reason there is no message search: the server holds no key that opens either one, so altering a message is not something it could do even if it were asked to.

Which is also why nobody's answer is drawn in a color of its own — not approve beside reject, not the option that is currently leading. A highlighted answer is a recommendation, and the card's job is to show you what was asked and what has been said, not to suggest what to say.

Notifications

A notification about a structured message names its kind and nothing said in it — "a new approval request in #Procurement". That is the same rule every notification on this server follows, and this is why: the message is the one thing withheld from a lock screen, because a lock screen is read by whoever is holding the phone.

Last changed 2026-10-06