Every shift starts with an order. Every employee journey starts the same way — Starters, Leavers, and Movers: one automated pipeline, backed by a real database and API, keeping Core HR, Access, Payroll, and the single source of truth in sync the moment something changes.
A new joiner signs their offer. Core HR record is created and every downstream system provisions automatically.
An internal promotion or market transfer. Access, comp banding, and reporting lines update without a ticket to IT.
Last day confirmed. Access is revoked on schedule and data is retained per GDPR — nothing lingers, nothing breaks early.
POST /api/dev/simulate-hris, which builds a realistic HRIS webhook payload from the name you enter, signs it, and feeds it through the same POST /api/webhooks/hris logic a real HRIS integration would hit — including the duplicate-starter rejection and unknown-employee checks. Nothing advances on its own — head to Manage active users to step each ticket through its pipeline by hand via POST /api/events/<id>/advance. The page polls GET /api/events and GET /api/systems every second to render live state straight from the database — this browser tab and any other tab open to this server see the exact same data.