What they were stuck on, and what we built
The problem
Payroll inputs for a large multi-site team came from timesheets, adjustment emails and a separate contractor workflow, all compiled by hand into the payroll platform each cycle: slow, stressful, and one typo away from paying someone wrongly.
What we did
We built a controlled payroll-entry workflow: inputs normalized into one row per employee, matched to payroll records on stable identifiers, validated and flagged into a review table, and only after the administrator approves are hours and earnings written to unprocessed checks through the official payroll API, then read back and verified entry by entry. The workflow can prepare payroll; it can never submit it.