Skip to content

Time Off Requests

The request-and-approval workflow for PTO, sick time, and leave.


Three types of time off

TypeDescriptionTypical use
PTOPaid time off / vacationPlanned holidays, vacation days
SickSick daysUnexpected illness
LeaveUnpaid or extended leaveParental leave, sabbatical, extended absence

The core rule

Users cannot log time directly to Out of Office, Sick, or Leave projects. Time is only recorded there after an approval — or when a Manager logs it directly using log_sick_day or log_leave.


Requesting time off (Owner — direct)

Owners dictate their own schedule. No approval flow, no confirmation prompt.

"I'm off next Monday" "pto April 13" "sick day tomorrow"

VERA logs the time entry immediately and confirms:

"✅ PTO logged for April 13 (8h)."

No pending request is created, and no manager DMs are sent.


Requesting time off (Manager or User)

Managers and Users submit a request for approval:

"I want to take March 20 off" "Can I book PTO for next Friday?" "I need sick time on Tuesday"

VERA creates a pending request and sends a Slack DM to all Managers and Owners. Time is not logged yet.

VERA confirms:

"Your PTO request for March 20 has been submitted. Your manager has been notified and will confirm."


Approving a request (Manager/Owner)

Managers receive a DM. To approve:

"Approve time off request #8" "Approve Alice's PTO"

VERA:

  1. Logs the time entry to the Out of Office project
  2. Updates the pending request to "approved"
  3. Notifies the user via DM

Rejecting a request

"Reject request #8" "Reject Alice's PTO — we're understaffed that week"

VERA updates the request to "rejected" and (optionally) passes the reason to the user.


Viewing pending requests (Manager/Owner)

"Show pending time off requests" "What PTO is waiting for approval?"

list_pending_pto shows all unresolved requests. Managers see requests for their team; Owners see all.


Viewing own time off history (User)

"How much PTO have I taken this year?" "Show my sick days" "What leave do I have?"

get_my_time_off returns the user's own history, filtered by type and date range if needed.


Manager direct logging (sick day)

For unexpected absences, Managers can log a sick day directly — no approval flow:

"Mark Sarah as sick today" "Log a sick day for @bob on March 15"

This creates the time entry immediately and creates an Unresolved Item if the person has active project envelopes (flagging the commitment conflict for the Manager to address).

Managers cannot use this tool for themselves — only Owners can log sick time for a Manager.


Manager direct logging (leave)

For extended absences, Managers use log_leave with a date range:

"Put Alex on leave from March 3 to April 11" "Log parental leave for @carol — April through July"

VERA automatically skips weekends and company holidays within the date range.


Unresolved items from time off

When sick time or leave is logged for someone who has active project envelopes, VERA automatically creates an Unresolved Item flagging the commitment conflict. The Manager sees this in the morning summary as a 🔴 block.

To handle the conflict:

"What should I do about item #3?"

get_resolution_options returns ranked options (e.g. reassign the work, cancel the envelope, dismiss the conflict). The Manager chooses and VERA executes.


Company holidays

Add holidays to exclude them from leave date calculations:

"Add Christmas as a company holiday on December 25" "What holidays do we have?" "Remove the summer offsite holiday"

Only Owners can manage the company calendar.


Summary

Owner (own time off): request_time_off → Time entry logged immediately — no approval needed

Manager/User: request_time_off → Pending_PTO row created, Managers DM'd

     Manager: approve_time_off → Time entry logged + Pending_PTO updated + User DM'd

          (if envelope conflicts exist) → Unresolved_Item created → resolve or dismiss

VERA by talktalkmake