People check their own attendance and leave, download their own pay slips and file their own self-review — instead of emailing HR to ask.
The point of self-service is not how many features it has. It is that each person sees only their own.
Employees use the same entry point as HR, and land in Console on the /my self-service pages.
The signed-in identity is resolved to exactly one employee, and every query afterwards is confined to that person's rows.
Check balances, submit leave, review attendance, download past pay slips, file a self-review and acknowledge a closed cycle.
Every screen an ordinary employee can reach.
The dashboard and profile an employee lands on after logging in.
Employees check their balance, submit a request and cancel one that has not taken effect.
Employees review their own clock records and hours.
Employees download their own pay slip PDFs for past periods.
Weighted criteria templates and review cycles; self-review, manager scoring and acknowledgement are separate stages.
The full lifecycle — hiring, changes, termination, position assignment — with bulk Excel import that records where each row came from.
The hr.self_service slug only decides whether these pages open; it cannot express "only your own data". The actual scoping happens in dedicated middleware and ownership checks in the controller — not in the template, because hiding something in a template does not stop it being read.
In performance reviews, what another reviewer wrote stays invisible until HR closes the cycle. That is enforced in the service layer, not by the front end declining to render it.
Tell us how you run payroll today, which time clock you use and how many departments you have. We will tell you straight whether it fits.