Engineering: operations systems

Municipal sanitation operations

Payroll for a sanitation fleet, where one worker can be paid three different ways in the same week

3pay models computed at once: per shift, per tonne and per trip.
Datedrate standards, so history does not rewrite itself
Weighedvehicle movements behind every tonnage payment

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

  1. 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.
  2. A payroll engine that computes several pay models at once: per shift, per tonne and per trip, for both drivers and labourers.
  3. 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.
  4. Attendance with hours, extra hours and overtime feeding the same engine rather than a parallel spreadsheet.
  5. Vehicle weight capture tied to dustbin and departure records, so tonnage-based pay traces back to a weighed movement rather than a claim.
  6. 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.