Workforce and operations platform

A real-time workforce and operations platform for a service business. Managers see who's working and what's happening as it happens, and staff run their day from their iPhone and Apple Watch.

It started as a private tool for one business and is in daily use there. I'm now turning it into a general product that any service business can use, so I don't show screenshots or details of the original client here.

Role
Sole developer: architecture, apps, backend, AI features
Timeline
2025 to now
Platforms
iPhone, Apple Watch, Live Activities, widgets
Stack
SwiftUI, Firestore, Firebase Auth, Node Cloud Functions, push notifications
Status
In daily use; a general version is in development

The problem

A service business lives or dies on knowing who's working and what's happening right now, not at the end of the day. The owner needed one system the whole team would actually use: quick enough to update from a wrist, live enough for managers to act on, and solid enough to keep working when phones lose signal.

What I built

The platform is about 298,000 lines of Swift across an iPhone app, an Apple Watch app, Live Activities on the Lock Screen and Dynamic Island, and 51 widgets and complications. Staff update their status in a tap from wherever they are, and managers see the whole team change live.

  • 8 Node.js Cloud Functions that send real-time push notifications and Live Activity updates when someone's status changes, when downtime runs too long, and with a daily summary.
  • A manager AI assistant that answers questions about the business in plain English, with per-feature usage metering so costs stay visible.
  • Watch complications and widgets so the most important numbers are visible without opening the app.

Hard parts

Offline-first sync that doesn't lose data

Phones drop signal all the time, and two people can edit the same record at once. I designed an offline-first sync layer on Firestore that saves only the fields that changed, resolves conflicts using version numbers, and records deletions as tombstones. That last part fixed a real bug where deleted records came back after a full-record merge.

An AI assistant that can't get the math wrong

AI models are good at understanding questions and bad at arithmetic. So the assistant never does the math itself. It uses function calling to pick from a set of deterministic Swift calculators I wrote and tested, and those calculators produce the numbers. The model only explains the answer. Managers get plain-English answers built on figures they can trust.

Moving fast without breaking things

I delivered more than 550 user stories through an automated coding-agent loop where every change had to pass the build and the test suite before it counted. That kept a fast pace on a large codebase without regressions slipping into a tool people rely on every day.

Results

  • In daily use by the business it was built for.
  • Live status for the whole team on iPhone, Apple Watch and the Lock Screen.
  • Sync that holds up offline and under conflicting edits.
  • An AI assistant whose numbers come from tested code, not the model.

Where it stands today: in daily use by the business it was built for.

Running your team on texts and spreadsheets?

A free call is the quickest way to see whether a custom app would actually save you time.

Book a free call

See the custom tools service Next: AI and automation Back to all work