Koldheim · Amethyst

Leave

Human resources

A balance that is a ledger, not a number.

A leave balance that two approvals landing together cannot break.

Grants and days taken are movements with dates, so approving leave adds a row instead of editing a total and two approvals cannot lose one another. Your leave year is your own record: its anchor, its length and its days.

The problem

“Leave balances are a spreadsheet nobody trusts, and I cannot tell you what somebody has left without working it out by hand.”

What it runs

What happens, in order

Every one of these is a step the service takes itself. Nothing in this list is somebody remembering to do it.

8 steps
  1. The request is captured: the dates, the kind of leave and the reason.
  2. A rule checks the dates make sense.
  3. Your active policy is read, and the cycle those dates fall in is computed from your own anchor date.
  4. The ledger is read for that cycle, and for the next one too when your policy splits leave that runs over the turn of a cycle.
  5. Days are split into paid and unpaid, and recorded as movements.
  6. If the balance does not cover it, the shortfall is offered as unpaid rather than the request being refused.
  7. Who decides is worked out: the person’s manager, falling back to anyone else holding line manager, then to your administrators.
  8. They decide. If approved, the days come off the ledger, one movement per cycle where it was split, and the person is told.
It opens on these
  • Awaiting a decision, scoped to you

Every figure opens what it counts and offers the next action. Nothing here is compiled at month end.

Try the rule

Pick the dates. Watch the days.

Working days, Monday to Friday, against the balance of the cycle they fall in. Run the leave over the turn of a cycle and switch the policy to see where the days are charged.

The request
Kind of leave
Only used when leave over the turn is split.
Days already taken, less any granted, in the cycle the leave starts in and the one after.
Leave over the turn of a cycle
Your policy, like the cycle and days above. The example runs a 12-month cycle from 1 March with 15 days.
Offered a shortfall unpaid, they
The decision
The days
10 daysApproved: 3 paid, 7 unpaid

Working days asked for
10
Balance, cycle from Sun 1 Mar 2026
3
Paid from it
3
Unpaid
7
  1. Leave asked forMon 22 Feb 2027 to Fri 5 Mar 2027: 10 working days, Monday to Friday.
  2. Cycle worked outIt starts in the cycle Sun 1 Mar 2026 to Sun 28 Feb 2027, from your own anchor date.
  3. Over the turn: charged to the cycle it starts inAll 10 working days are checked against this cycle's balance of 3, though some fall after Mon 1 Mar 2027.
  4. Paid and unpaid3 days paid, 7 days unpaid.
  5. Shortfall offered as unpaidThe balance covers 3 of 10. They accept the 7 unpaid, so it goes on.
  6. Their manager decidesTheir own manager, else someone else holding line manager. Never themselves: if they are the only one who could, your administrators decide.
  7. Taken off this cycleA movement of −3, dated Mon 22 Feb 2027.
  8. They are toldApproved, 3 paid and 7 unpaid. Unpaid days are on the record, not on the balance.
Who sets what

Yours to change, and ours

Most vendors are vague about this line. Yours is everything about how your organisation works. Ours is the shape of the process itself.

Your administrators change these

  • When a cycle starts, how long it runs, and how many days it carries
  • Whether leave over the turn of a cycle is charged to the cycle it starts in, or split between the two
  • The kinds of leave you recognise
  • Who holds line manager, and who each person reports to

Authored with the service

  • That a balance is a ledger of movements rather than a stored total

A change here is a draft, checked and published. Work already under way stays on the version it started on.

Where it stops

The part most pages leave out

A service that only ever says yes is not evidence. This is the place it deliberately refuses, and the suite that proves it still does.

Refuses, on purpose

Nobody approves their own leave

An approval refuses its own requester. If the only person who could decide is the person who asked, it goes to your workspace’s administrators instead, and the approval says why.

Proof

Every claim here runs on each build

Not a policy, a suite. This one is npm run leave, and it fails the build rather than a report nobody reads.

The rest of the collection

One stone, many cuts

Keep exploring

Where to next

See it with your own process.

Book a demo