Case Study · Operations · 2022 — 2024
Scheduled payroll lifecycle from employee data to payout, with an auditable history of every run.
HR teams were running payroll from spreadsheets — prone to manual errors, with no audit trail and no way to reproduce a past run. A miscalculation meant an employee underpaid, often discovered only weeks later. The cost was not just financial but trust.
A multi-company HR platform used across organizations with different salary structures, allowances, and deduction rules. Each payroll run had to be fully deterministic — the same inputs must always produce the same output — and every step had to be reversible and explainable.
Request path
HR admin
trigger run
Validation
employee data
Rules engine
salary calc
Approval
sign-off
Payout
bank transfer
Audit log
immutable
Failure recovery & consistency
Failed run
detected
Rollback
to draft
Fix input
HR corrects
Re-run
idempotent
Frontend
Backend
Data
Chose
·Snapshot-based run records for reproducibility
·Async job queue for payout resilience
·Strict approval gate before disbursement
Gave up
·Simpler live-query payroll (would lose history)
·Synchronous payouts (would block on bank latency)
·One-click pay without approval (too risky)
0
payroll runs lost or unrecoverable after errors
100%
runs reproducible from stored snapshot + rules
hours → min
from run trigger to approval-ready