JobOps
Who works where, and when. A scheduling application for businesses that send subcontractors out to client sites.
- Type
- Multi-tenant web app
- Built with
- Node.js, vanilla JS, Leaflet
- Features
- Maps, calendars, live location
- Live at
- jobops.bcltl.com
The brief
Commercial cleaning runs on a moving schedule: dozens of client sites, each with its own scope of work and its own days, worked by subcontractors who need to know exactly where to be and what to do there. That usually lives in a spreadsheet and a group text.
What we built
JobOps makes every site a location that carries its client, scope of work, estimate, quote and dates of work, with a crew assigned per date. Recurring tasks are counted from their own start date and land on the first date of work on or after each time they fall due, so a weekly task still gets done when the job runs Tuesdays and Thursdays.
Owners see a month calendar, a list and a map of every site with one-tap directions. Subcontractors see only the dates they’re on, with that day’s address, notes and tasks, and never the client’s pricing or contacts.
Under the hood
- A single Node process serves the API, the app and the private calendar subscription feeds.
- Addresses become map pins through OpenStreetMap, with lookups rate-limited to the service’s terms.
- Live positions are held in memory only: no history, nothing written to disk, and clocking out forgets the last one.
- An end-to-end smoke test drives the whole API against a throwaway data folder.