Every day
PTO and leave
Leave is requested where people already talk, decided by rules you set, and excused from every score the moment it is approved.
Requesting leave
- In a direct message with the bot, a command or a plain sentence.
- A labelled form in the team’s PTO room; the bot posts a public notice that the request is awaiting approval and clears it when decided.
- From the dashboard or the installable app, with an optional hand-off colleague and note.
- A manager can create leave on someone’s behalf.
pto 2026-08-11 to 2026-08-13 family trip sick today Type: vacation Date: 11, 12 and 13 August Reason: family trip
Writing the dates
- A year-less date is this year unless next year’s occurrence is within 90 days. Sick days are never rolled forward; people legitimately report one that already happened.
- Clock times and parentheticals are stripped first, so 6 August (flight 11:30) files 6 August.
- A request older than one day of grace is flagged backdated and always needs an explicit admin decision.
- Editing a request message supersedes the original; an already-approved request is never silently unwound, admins get a review notification instead.
| 13 August | 13 Aug |
|---|---|
| Thursday, Aug 6 | 6 Aug |
| 11, 12, and 13 August | 11 Aug to 13 Aug |
| 4 & 5 October | 4 Oct to 5 Oct |
| from 11 August to 17 August | 11 Aug to 17 Aug |
| 2026-08-11 to 2026-08-13 | 11 Aug to 13 Aug |
| 30 December and 2 January | 30 Dec to 2 Jan, next year |
Auto-approval guardrails
Off by default. When enabled, a request auto-approves only when every check passes; otherwise it routes to a human with the reasons listed.
pto.requires_approver pto.max_consecutive_days pto.require_handover
| Length | at most 2 days |
|---|---|
| Notice | at least 3 days |
| Type | pto, vacation or half-day; sick and other always route |
| Balance | must fit the remaining annual balance (20 days by default) |
| Coverage | no more than 30% of the team off on those days |
| On-call | the requester is not rostered on-call with no backup |
| Hand-over | optionally, no open tasks in the requester’s own standups |
Six ways to approve, one guarantee
The dashboard button, an approve or deny reply in chat, the Slack button, the rules above, the neural engine, and admin inaction past a configurable timeout all decide a request. Every route writes the same leave record, clears the room notice and announces the decision, so an approved request can never sit in the system as an absence. Discretionary leave beyond the balance is refused by the dashboard and never granted by the two routes where no human decided.
approve 42 deny 42 coverage too thin that week
Leave and the score
- Approved leave, sick days and holidays are removed from expected days and expected hours entirely.
- If leave leaves less than half of a person’s normal week (minimum two days), the week is drawn as a gap in the trend, never as a low score.
- A planned leave that begins in the window must have a hand-off recorded or it lowers Reliability; sudden and sick leave are exempt.
- Approve promptly: until a request is decided the person is still expected on those days. Pending requests sit on the Requests page and the bot-message gate already treats pending days as off.
Patterns and calendars
- Every Monday a job flags suspicious sick patterns to admins: six or more sick days in 60 days, or three or more on the same weekday.
- Holiday calendars are generated offline per country and region and assigned per team; an org-wide list applies to everyone.
- Approved leave counts working days only; half days weigh half.