Engineering: operations systems
Municipal sanitation operations
Payroll for a sanitation fleet, where one worker can be paid three different ways in the same week
The problem
Municipal sanitation is a physical operation measured in tonnes, trips and shifts, run by contractors and casual labour across zones of a city. The payroll is not a monthly salary run. It is a calculation over attendance, vehicle movements and tonnage, under rates that change by date.
What we built
- One operations platform across the whole service: garbage collection, manual sweeping, park sweeping, mechanical sweeping, mechanical washing, dustbin cleaning and maintenance, vehicle departure, maintenance and washing, fuel and fuel stations, zones, contractors and complaint handling.
- A payroll engine that computes several pay models at once: per shift, per tonne and per trip, for both drivers and labourers.
- Effective-dated rate standards, so a rate change applies from the day it took effect and historical payroll does not retroactively rewrite itself. This is the part that is easy to get wrong and expensive to discover late.
- Attendance with hours, extra hours and overtime feeding the same engine rather than a parallel spreadsheet.
- Vehicle weight capture tied to dustbin and departure records, so tonnage-based pay traces back to a weighed movement rather than a claim.
- Role-based permissions, bulk import for the records that arrive as spreadsheets from the field, and a reporting layer over vehicle status and driver activity.
Where the automation sits, and where it does not
The point of the system is that pay is derived from recorded operational events rather than assembled by hand at month end. Fuel, attendance, trips and weights are captured where they happen, and payroll is computed from them.
What we would not claim
No commercial terms, no headcount and no results. This page is written from the codebase, which describes what the system does, not how well it performed.
System description taken from the codebase, September 2026.
Your turn
We set the baseline before the work starts.
That is the part that makes a number mean something a year later.