People analytics
Decision-grade signal from the data you already capture — no extra setup.
What you see
- Headcount — active employees right now.
- Joined / exited (30d, 90d, 12mo) — flow in and out.
- Attrition — both 12-month rolling and a 90-day annualised projection (faster signal).
- Headcount trend — 12 monthly snapshots (net of joiners/leavers).
- Gender mix — uses
Employee.gender; surfaces unspecified bucket so you know data quality. - Tenure distribution — buckets <1, 1-2, 2-5, 5-10, 10+ years.
- By department — headcount + average tenure.
- Span of control — direct reports per active manager. Flag >10 for review.
- Pay distribution per department — median, min, max, spread (max/min). Spread > 5× highlighted (equity risk).
Methodology notes
- An employee is "active" when
employmentBeginDate ≤ today ≤ employmentEndDateANDemploymentStatus = ACTIVE. - Attrition uses the average-of-current-and-half-the-leavers approximation (sufficient for SMB sizes).
- Pay distribution pulls the most recent finalized payslip per employee — capped to 5,000 rows per fetch.
- No client-side aggregation; numbers are server-computed each load. Add a nightly snapshot if your tenant blows past ~10k employees.
Access
Roles: HR_ADMIN, PAYROLL_ADMIN, BOARD_MEMBER. Other roles get 403.