Start a project

Case study

Workforce platform

A staffing company places workers across many client sites, and each one has to be hired, scheduled, clocked, paid and kept compliant. This platform does all of it in one place, so nothing is re-typed between hiring, time and payroll.

Client
A staffing company (name withheld)
Year
2025
Platforms
Web, iOS, Android
Our role
Design and engineering
Stack
React, Ant Design, Node.js, PostgreSQL with Prisma, Socket.IO, Twilio
See it
Behind the client’s login
Weekly payroll grid listing workers with their client, department, regular, overtime and total hours and export status (sample data)
Weekly hours are worked out per worker across every client site, with export tracking before payroll closes. Sample data; client name withheld.

The problem

Staffing runs on more than a timeclock. Every worker is recruited, onboarded, scheduled, clocked in at a client site, paid weekly and kept compliant, and each step usually lives in a different tool.

When those tools don’t talk to each other, the same hours get re-typed into payroll, and one late edit can change a payroll that has already gone out.

What we built

One platform from job posting to paycheck: a job board and applicant tracking, onboarding with I-9 and background checks, shift scheduling and time off, kiosk and phone timeclocks, and weekly payroll with QuickBooks export.

Payroll runs are frozen as snapshots once finalized, and every change to a worker’s record is logged. Screens on this page use sample data, and the client’s name is withheld.

Standout features

  • A finalized payroll run for one client: totals for employees, hours and gross pay above a per-employee breakdown of regular, overtime and total pay (sample data)

    Payroll runs that don’t move

    A finalized run is stored as a snapshot of hours and pay per employee, so a later timeclock edit can never change a payroll that has already been paid.

  • Worker profile with assignment summary, personal details with a masked Social Security number, internal notes and an activity feed (sample person)

    One profile per worker

    Identity, assignment, documents, pay, leave and housing sit on one profile, with sensitive IDs masked by default and every change in an activity log.

  • Hiring to first shift

    A job board, applications, an applicant pipeline and interview booking feed straight into onboarding checklists, I-9 tracking and background checks.

  • Time, scheduling and the field

    Shift scheduling, time off, kiosk and phone punches, a live timeclock map, transportation for crews and a food-voucher wallet workers spend at the client’s cafeteria.

How it is built

A React admin over a Node.js API and PostgreSQL, with real-time updates and text messaging built in.

Admin
React with Ant Design, built with Vite
API
Node.js and Express over PostgreSQL with Prisma, background jobs on BullMQ and Redis
Real time
Socket.IO for live timeclock and dashboard updates
Integrations
QuickBooks export for payroll, Twilio for text messages, Stripe for payments

Results

In daily use by the staffing company’s office and its workers.

Building something like this?