Time & Leave Module

The Time & Leave module covers PTO requests, leave balances, timesheets, team availability, and company / Sparko-managed holiday calendars.

Overview

The Time & Leave module provides:

  • PTO request submission, approval, and cancellation
  • Per-policy leave balances + accruals + carryover
  • Custom leave types (with curated icon picker)
  • Team Calendar with privacy-by-default gating
  • Country holiday calendars (Sparko-curated, auto-imported) + custom company holidays
  • Timesheets with clock-in / clock-out + break tracking
  • Per-policy HR Admin manage mode with audit trail

PTO Dashboard

The PTO Dashboard is the employee landing surface for Time & Leave. It opens at Time & Leave > PTO Dashboard.

Layout

My Time Off

12.5 days available · 4 days pending

+ Request time off Upcoming requests 2 Next: May 27 · Vacation Pending approval 1 Submitted May 12 Used this year 7.5 d Across 4 leave types Carryover expiring 2.0 d Use by Jun 30
<div style="background: white; border: 1px solid #e5e7eb; border-radius: 8px; padding: 16px;">
  <div style="font-weight: 600; color: #111827; margin-bottom: 8px;">My balances</div>
  <div style="display: flex; justify-content: space-between; padding: 6px 0;"><span>Vacation</span><span style="font-weight: 500;">12.5 d</span></div>
  <div style="display: flex; justify-content: space-between; padding: 6px 0;"><span>Sick</span><span style="font-weight: 500;">5.0 d</span></div>
  <div style="display: flex; justify-content: space-between; padding: 6px 0;"><span>Personal</span><span style="font-weight: 500;">2.0 d</span></div>
  <div style="display: flex; justify-content: space-between; padding: 6px 0;"><span>Volunteer</span><span style="font-weight: 500;">1.0 d</span></div>
</div>

The page uses a 2×2 grid for activity tiles and a stretched right-column balance card.

Requesting time off

Click + Request time off to open the request modal:

  1. Pick the leave type — the request form shows a fixed set of built-in types (Vacation, Sick, Personal, and similar); custom leave types your HR Admin has created aren't shown here yet, since listing them requires a permission most employees don't hold.
  2. Pick the date range (or a single day).
  3. Add a note.
  4. Submit — your manager is notified and the request appears under "Pending approval" until they decide.

You can cancel a pending or future-approved request at any time from the same dashboard.

Coverage signals (managers & HR)

If you approve time off, the dashboard adds a Coverage signals card. It scans the next 30 days and flags date ranges where two or more people on the same team are out at once — the moments when coverage is actually at risk. Each signal shows the department, the dates, how many of the team are out (with a severity of Watch / At risk / High risk based on the share of the team affected), and whether any of the overlap is still awaiting your approval. A manager sees only their own reporting line; HR sees every department. Selecting a signal opens the Team Calendar for a closer look.


Team Calendar

Open Time & Leave > Team Calendar to see who's out across your team or company.

Two view modes

  • Month — calendar grid with a chip per person per day they're out.
  • Timeline — employees down the rows, days across the columns, blocks spanning leave periods.

Use the toggle in the page header to switch.

Privacy by default

When you look at someone else's leave on the Team Calendar:

  • Your direct manager and HR Admins see the specific leave type (e.g. "Vacation", "Sick", "Bereavement") and any notes.
  • Other colleagues see only that the person is "Out" on those dates — never the type or notes.

This privacy gate is enforced server-side: the API does not return leave-type details to viewers who shouldn't see them. There is no way to expose it through the frontend alone.

Rules summary:

  • HR Admin / time_leave.requests.view_all → always sees full detail.
  • Manager (time_leave.requests.view_team) → full detail for their direct and indirect reports.
  • Everyone else → "Out" only, except for themselves.

PTO Policies (HR Admin)

HR Admins manage PTO policies + leave types at Time & Leave > PTO Policy.

View mode (overview)

The default view is a flat read-only table showing all active policies with 7 columns: name, scope, accrual rule, carryover, leave types covered, employees on this policy, last updated. An Edit policies button in the top-right opens the Manage interface for HR Admins.

PTO Policies Edit policies
Policy Scope Accrual Carryover Leave types Employees Updated
Full-time US Global 15 d/yr accrued monthly 5 d / 6 mo Vacation, Sick, Personal 142 Apr 14
Contractors Employment-type Unpaid Vacation 14 Mar 21

Manage mode

Clicking Edit policies flips the page into Manage mode: a 2-pane layout with the policy / leave-type sidebar on the left and a per-policy editor on the right.

The sidebar has two accordion sections:

  1. Policies — all PTO policies, each opens an editor with four subsections:
    • Basics — name, description, scope (Global / Locations / Employment types), effective date.
    • Accrual — accrual method (Annual lump, Monthly accrual, Per pay period), rate, max balance.
    • Carryover — carryover allowance, expiration window, blackout periods.
    • Approval — required approver chain (Manager / HR / Custom).
  2. Leave types — all leave types available in your company:
    • Built-in (13 types) — Sparko-curated types (Vacation, Sick, Personal, Bereavement, Jury Duty, Parental, etc.) which can be hidden per company but not edited.
    • Custom — leave types created by your HR Admin (e.g. "Acme Hack Week"), with the curated 24-icon picker for visual identity.

Each save creates an audit-log entry — who changed what, when — preserved for HR review.

Custom leave types

HR Admins can create custom leave types via the Leave types accordion. Pick a name + icon from the 24 curated icons (umbrella, palm tree, medkit, plane, baby, gavel, paw, books, mountain, heart, etc.) + optionally tie it to specific policies.

Known limitations: the employee request modal currently only offers the built-in leave types — a custom type you create here isn't yet selectable from an employee's own request form. Separately, the request modal's "Military" option currently has a mismatched internal code and will fail to submit ("No PTO policy found") until this is fixed — avoid using it for now and log the leave manually via HR if a military-leave request comes up.


Holiday Management (HR Admin)

Open Time & Leave > Holiday Management to manage which holidays your company observes.

Country holiday calendars

Sparko curates public-holiday data for US, UK, Canada, India, Singapore, Australia, and the UAE. To add one, click Subscribe to country, pick a country, review the preview of dates it will add, and apply — this creates a company-owned "{Country} (Auto-imported)" calendar populated with that year's holidays.

Once imported, the calendar is yours to tune: mark an individual holiday not observed (e.g. it falls outside your operating model), edit or delete a date, or Re-import to pull the latest curated dates (already-present dates are skipped, so your edits survive). Unsubscribe removes the whole country calendar.

Automatic: when you add an employee based in — or remote for — a supported country that your company doesn't have yet, that country's calendar is imported for you, so a new hire's region has its holidays from day one.

Country not in the curated list? Ask the AI assistant to generate that country's public holidays and it will build a calendar for you — this is currently the way to cover a country outside the curated set above.

Custom company holidays

The left rail also lists your company's own holiday calendars (e.g. "Acme Company Days") for company-specific observances like founder's day, summer Friday, or an end-of-year shutdown. Every holiday row has an Observe / Not observed toggle plus edit and delete actions.

Employee view

Employees see their final, merged holiday calendar — every observed holiday across their applicable calendars — on their PTO dashboard. They don't see observance overrides or which calendar a date came from, only their effective working calendar.


Timesheets

For hourly employees, the Time & Leave > Timesheet page tracks clock-in / clock-out + breaks.

Clock card

The top of the page is a clock card with:

  • A large Clock in / Clock out button.
  • Live elapsed-time display.
  • A break button (Start break / End break) that subtracts break minutes from the working total on clock-out.

Progress tiles

Four progress stat tiles below the clock summarize the week:

  • Hours worked
  • Hours scheduled
  • Overtime
  • Hours remaining

Daily entries

Below the tiles is a per-day breakdown with clock-in, clock-out, break minutes, and total. Break minutes are correctly captured: previously a broken flow lost break time on clock-out. That's been fixed — break minutes now persist on the entry as they should.

Sparko doesn't run payroll. Approved timesheet hours, overtime, and PTO days are logged and reportable (see Manager Analytics below) so they're ready to hand to whatever payroll process or provider you use — there's no automatic payroll feed today.


Calendar Subscription

From your profile, mint a personal calendar-subscription link (webcal URL) that feeds your approved leave into Google Calendar, Outlook, or Apple Calendar automatically. You can list your active subscription links and revoke one at any time.


Approval Delegation (Manager)

Managers can delegate approval authority for a date range — useful when you're on leave yourself. Set a start/end date and scope the delegation to PTO only, timesheets only, or everything. Sparko can also auto-delegate for you: if your own PTO request is approved, your delegate is activated automatically for those dates.


Timesheet Rules: Work Week & Overtime (HR Admin)

Under Admin Settings > Time & Leave > Timesheet rules you can configure:

  • Work week — which days of the week count as working days, and which day the timesheet week starts on. The default is Monday–Friday with weeks starting Monday. Setting this matters everywhere business days are counted: PTO requests only deduct configured working days (a Friday–Saturday weekend never burns leave for a Sunday–Thursday team), timesheet weeks anchor on your chosen start day, and utilization reports use your working days for expected hours.
  • Overtime thresholds — daily/weekly hours before overtime kicks in.

Both can be set company-wide (edit the Default rule) or overridden for specific combinations of country, employment type, and department — useful where local rules differ (e.g. a Sunday–Thursday work week for a Gulf office, or a different daily threshold in one country). The most specific matching rule wins per employee.


Manager Analytics

Five reports under Time & Leave > Reports (manager/HR Admin):

  • PTO liability — each employee's accrued, unused leave valued in money (accrued days × daily rate from salary).
  • Utilization — hours worked vs. available capacity, capacity already netting out approved PTO.
  • Absence trends — total and average PTO days per department over a date range, with a breakdown of the most common leave types taken.
  • Approval speed — average time between a request being submitted and decided, plus approval/rejection rates and how many requests are still pending.
  • Overtime summary — total overtime hours with an estimated cost.

Known limitation: the overtime summary's cost estimate uses a flat $45/hr rate for every employee regardless of their actual salary or country — treat it as a rough order-of-magnitude figure, not an accurate cost, until it's tied to real pay data.


Approvals (Manager / HR Admin)

Managers see PTO requests from their direct reports under Time & Leave > Approvals (and also on the Approvals home page).

For each request, you can:

  • Approve — request becomes a confirmed booking; the employee's balance is deducted.
  • Reject — request is closed; balance is untouched. You can add a note explaining the rejection.
  • View context — the request modal shows the requester's current balance, any overlapping team leave during the same window, and the impact on team coverage.

HR Admins see all company-wide pending requests with the same controls.


Permissions reference

Permission What it grants
time_leave.requests.submit Submit own PTO requests
time_leave.requests.view_own See own requests on dashboard
time_leave.requests.view_team See team's requests + full leave-type detail on Team Calendar
time_leave.requests.view_all See all company PTO requests + full leave-type detail anywhere
time_leave.requests.approve Approve / reject team requests
time_leave.policies.view_all View PTO policies (overview table)
time_leave.policies.edit Edit PTO policies
time_leave.leave_types.manage Manage leave types
time_leave.holidays.view View company holiday calendar
time_leave.holidays.manage Subscribe to Sparko calendars + manage custom holidays
time_leave.timesheets.submit Clock in / out + submit timesheets
time_leave.timesheets.approve Approve direct reports' timesheets

System roles already include these by default — see your HR Admin if access is missing.


Related guides