NEXSUM_LABS
  1. Home
  2. Work
  3. A warehouse-staffing agency cut shift check-in to a phone tap and stopped losing hours to paper timesheets
Book a call

[ Case study ]

StaffingKotlinGeofencing APIFirebase AuthCloud Firestore

A warehouse-staffing agency cut shift check-in to a phone tap and stopped losing hours to paper timesheets

Hourly workers queued at a clipboard at every shift start; transcribers retyped timesheets into payroll, disputes were unresolvable, and no-shows were discovered an hour after the shift was supposed to begin.

CLIENT a regional warehouse-staffing agency — FOCUS Make check-in a geofenced tap

Android DevelopmentMobile AppsAndroid DevelopmentStaffingRepresentative example
Client
a regional warehouse-staffing agency
Industry
Staffing
Engagement
6 weeks — systems pod — engineer
Service
Mobile Apps / Android Development
Headline outcome
All active sites check in through the app, with timesheets flowing to payroll on the fixed weekly window: Clipboard → geofenced check-in, read from Payroll exception report

Representative examplesEvery case study in this library is an illustrative composite of the kind of engagement we deliver — written to show our method and standards, not to name clients.

Where they started

This staffing agency fills warehouse shifts across a dozen distribution sites, supplying anywhere from ten to two hundred workers a day. Coordinators publish rosters from the office, workers arrive at depots and dock doors, and every shift historically began at a clipboard that a supervisor guarded while the line backed up. Payroll runs weekly through a provider with an unforgiving import window, and the agency's margins live and die on hours accurately captured and billed.

What it was costing

Hourly workers queued at a clipboard at every shift start; transcribers retyped timesheets into payroll, disputes were unresolvable, and no-shows were discovered an hour after the shift was supposed to begin.

What they could see

  • Workers queued at the clipboard for up to twenty minutes at shift start, and supervisors started shifts short-staffed and irritated.
  • Timesheets were retyped into the payroll template by office staff, and every week produced at least one disputed-hours argument settled by seniority rather than evidence.
  • No-shows surfaced an hour into the shift, when the client site called asking where its people were.
  • Coordinators could not adjust sites or shifts themselves; every change became a request to the office's spreadsheet owner.

The constraints we worked inside

  • Workers' phones skew toward low-end Android devices with small storage — the app must be lightweight and work on Android Go-class hardware.
  • Payroll runs weekly through a provider with a fixed import window and format.
  • Agency coordinators, not developers, must be able to publish shifts and adjust sites without support tickets.

What had been tried before

The agency trialed a scheduling SaaS that promised shift publishing and time capture in one product.
Its timesheet export did not match the payroll provider's fixed template, coordinators needed vendor support for routine site changes, and workers on low-end phones could not reliably open it.
For one season, supervisors photographed the completed clipboard and texted the images to the office nightly.
A photo of a clipboard is still a clipboard: transcription, disputes, and slow no-show discovery all survived intact, and half the photos arrived out of focus or not at all.

What we proposed

We proposed a small, fast Android app built for the phones workers actually carry — Android Go-class hardware with modest storage — where check-in is a geofenced tap that stamps time, site, and identity in one action. Coordinators get their own console for publishing shifts, adjusting sites, and flagging no-shows, sized for a coordinator's morning rather than a support queue. Timesheets emit directly in the payroll provider's template, so the weekly import runs on schedule and disputes resolve against recorded stamps.

Just as important is what we ruled out, and why:

  • Time-clock kiosks mounted at each siteHardware, installation, and power across a dozen client-run sites was capital the agency would never recover, and kiosks recreate the very queue they were meant to remove.
  • A worker-facing web appDock doors are coverage dead zones and Go-class devices choke on heavy web views; the check-in moment had to be native, offline-tolerant, and under a second to open.
  • Extending the scheduling SaaS trial with custom developmentThe vendor's export could not be bent to the payroll template without fragile scraping, and the agency would remain dependent on their roadmap for its payroll integrity.

How the work ran

01Make check-in a geofenced tap

Sites get a geofence; a check-in inside it stamps time, site, and worker identity in one action, replacing the clipboard without adding friction.

02Fit the payroll import exactly

Timesheets are emitted in the payroll provider's template, so payroll runs on schedule and disputes resolve against recorded stamps instead of memory.

03Give coordinators real tools

Shift publishing, rosters, and no-show flags live in an admin console sized for a coordinator's morning, not a support queue.

Delivered by the systems pod — engineer over 6 weeks, with working increments reviewed with the client every week.

The stack, and the reasoning

Kotlin
The target hardware is Android Go-class with small storage; a lightweight native app starts fast and leaves room for the phones' other work.
Geofencing API
The OS-level geofence wakes check-in without polling GPS all shift, which matters on devices where battery drain gets an app uninstalled by Friday.
Firebase Auth
A transient workforce cannot manage passwords; phone-number auth with silent re-verification keeps identities stable across handsets and lost phones.
Cloud Firestore
Coordinators need no-show flags the moment check-in fails, and workers need rosters offline at dock doors; Firestore's local cache serves both sides of that fence.
Payroll import bridge
The provider's template and weekly window are immovable; emitting exact-format files removed the transcription layer where every previous dispute had been born.

What went wrong

Obstacle

The first geofences failed at the largest distribution centre: workers clocked from a loading bay far from the pin, and metal racking scattered GPS badly enough that stamps drifted.

Handled: We made fence radius a coordinator setting with a guided placement walk-through per site, plus a supervisor override logged with a reason — practical where the satellite map was not.

Obstacle

Coordinators trusted the clipboard and quietly kept a parallel spreadsheet for the first weeks, double-checking the app instead of using it — the crossover was costing them more time, not less.

Handled: We reshaped the console's morning view to mirror their spreadsheet's exact columns and walked each coordinator through one full payroll cycle in it; the parallel sheet was retired within a month.

How we worked together

Cadence
A Friday payroll-run review with the owner and payroll clerk each week, plus coordinator walkthroughs on Monday mornings when the week's rosters went live.
Client side
The owner made scope calls; the payroll clerk owned the import format; two coordinators ran site pilots, and the supervisors at those sites trained their own crews.
Decisions
Payroll-format questions never left the clerk's desk — her template ruled — and site-level choices were settled by the coordinators running the pilot, then written into the rollout notes.
They provided
The full site list with addresses and layouts, the payroll provider's template and window, coordinator and supervisor time during pilots, and worker phones for device testing.

What changed

The headline: all active sites check in through the app, with timesheets flowing to payroll on the fixed weekly windowClipboard → geofenced check-in, read from Payroll exception report. A second check: timesheet transcription hours per week at −67%.

Shift start became a tap at the door instead of a queue at a table. Coordinators spend their mornings placing people rather than reconciling paper, and the office's transcription hours — a role the agency had quietly built a person around — became an exception-handling task. Disputes now end in a recorded stamp rather than whoever argued longest. The owner also gained visibility he never had: site-level attendance patterns that used to live in one coordinator's memory are queryable when a client asks why a shift ran short.

The result was read from Payroll exception report against the pre-engagement baseline over the stated window, with a guardrail check on timesheet transcription hours per week. Where platform-reported numbers and business outcomes differ, this record says which layer it is quoting.

What they own now

  • Google Play Console access and signing key custody with the agency's office manager
  • The geofence admin console with a per-site placement guide and override policy
  • Payroll bridge configuration documentation mapped to the provider's current template version
  • Short training videos for coordinators, supervisors, and worker onboarding
  • A test device kit of Go-class handsets for verifying future releases

What we would do differently

We would ship the coordinator console before the worker app — the first weeks' paper-to-app crossover was harder on coordinators than on workers, and earlier tooling would have eased it.

Mobile AppsAndroid DevelopmentStaffingKotlin

Next case study

A regional wildlife park moved 22,000 members from plastic cards to iPhone Wallet passes