What Is a Schedule of Rates? SOR Coding Explained for Maintenance Contractors
by Sandlabs Team, Founder, Sandlabs
If you run maintenance work for social housing, government, or large property portfolios, you already live inside a Schedule of Rates whether you call it that or not. It is the price book that decides what every job is worth. This guide explains what a Schedule of Rates is in plain terms, how it differs from the other pricing models you will have heard of, and why the humble act of coding a job to the right line is where a lot of contractors lose money without noticing.
We build AI systems for trades and maintenance businesses, so our interest in the SOR is specific: it is the point where a technician's work becomes billable revenue, and it is the point most likely to be done by hand. But you do not need to care about AI to get value from the explainer below.
What is a Schedule of Rates?
A Schedule of Rates (SOR) is a pre-agreed list of individual work items, each with its own code and a fixed price, used to value work as it is carried out rather than pricing a whole project up front.
Instead of quoting a single lump sum for a defined job, the client and contractor agree a rate for each unit of work - clear one blockage, replace one tap, make good one square metre of plaster - and the final bill is built by counting up the items actually done and multiplying by the agreed rates. The schedule itself can run to hundreds or thousands of lines, covering every task the contract is likely to involve.
You will see SORs used most where the exact work is not known in advance but the types of work are highly predictable. Responsive repairs and maintenance are the classic case: nobody knows on Monday which taps will fail this week, but everyone knows a failed tap is a known task with a known price.
Where Schedules of Rates are used
The model turns up wherever an organisation buys a high volume of small, varied jobs from a contractor over time:
- Social and community housing maintenance - responsive repairs across large tenanted portfolios.
- Government and council property maintenance - schools, public buildings, and civic facilities.
- Facilities management - reactive and planned maintenance across commercial estates.
- Large private property portfolios - where a managing agent standardises pricing across many buildings.
In each case the SOR does the same job: it lets the client keep thousands of individual jobs priced consistently, across many contractors and many months, without negotiating each one.
Schedule of Rates vs bill of quantities vs lump sum
Three pricing models come up constantly and get muddled. The difference matters because it changes where the risk sits and how you get paid.
Lump sum. You agree one fixed price for a fully defined scope of work. Good when the job is known and stable. The contractor carries the risk if the work turns out to be bigger than expected.
Bill of quantities (BoQ). The work is broken into measured quantities - so many cubic metres of concrete, so many linear metres of pipe - priced before the job, usually for a single defined project. A BoQ is measured up front for one project; quantities are known in advance.
Schedule of Rates (SOR). Only the rates are agreed up front, not the quantities. The quantities are whatever the job turns out to need, counted as the work is done. An SOR is built for a stream of unknown-but-predictable jobs over time, not a single project.
The short version: a bill of quantities prices a known project in advance; a Schedule of Rates prices an unknown flow of jobs as they happen. Maintenance contracts almost always use an SOR, because the whole point is that you cannot predict which jobs will come in.
What an SOR line actually looks like
An SOR line typically carries a few things: a code, a description, a unit, and a rate. The description is where the difficulty hides. Lines are written to be precise and unambiguous for pricing purposes, which makes them dense and often cryptic to read quickly. Two lines can sit next to each other describing near-identical work at different rates, distinguished by a detail like access difficulty, material, or whether it is the first item or an additional one on the same visit.
That precision is a feature for the client and a burden for whoever has to pick the right line. Choosing correctly means reading a terse field note and knowing the specific library well enough to land on the exact line - including the billable items a technician mentioned in passing but did not flag as separate charges.
Why coding to the right SOR line is where revenue leaks
Here is the part that gets underestimated. On an SOR contract, the contractor's revenue is not decided in the field. It is decided at the moment someone assigns codes to the completed job. The work can be done perfectly and still be under-billed, because billing is a function of coding, not of effort.
Three failure modes cost real money:
- Missed items. A single visit often contains more than one billable item. If the note only makes one obvious and a second gets overlooked, that work was paid for in wages but never invoiced.
- Wrong codes. Pick the line next to the right one and you either get the claim rejected or get paid and clawed back later when the client's checks catch it.
- Coding backlog. When coding cannot keep up with the volume of completed jobs, invoicing slips and cash arrives weeks after the work.
At a handful of jobs a day, an experienced coder absorbs all of this. At several hundred jobs a day across a large technician crew, coding becomes a structural bottleneck - and a quiet, permanent drag on margin. We wrote about this pattern more broadly in the hidden cost of manual work.
Can SOR coding be automated?
Partly, and the interesting part is which part. The step that resists old-style automation is the mapping from free-form field language to the exact code. You cannot write a fixed lookup table for it, because technicians describe the same job in endless different ways, and every client has a differently worded library. Keyword rules break on the first note that phrases things a new way.
What has changed is that language models can now reason about what a note means rather than matching keywords, and can hold a specific client's Schedule of Rates in context while doing it. That makes it possible to take a plain note - "cleared blocked gully trap, replaced the grate" - and propose the correct client-specific codes with a confidence score, leaving a person to confirm only the uncertain ones. It is worth being clear that this is not the same as voice-to-text transcription, which produces a cleaner note but does not make the billable decision.
We walk through exactly how that works, including the AroFlo write-back and the human-confirm step, in our main guide on automating Schedule of Rates coding for social housing maintenance. For the broader trades framing - job notes to the right rate across field service generally - see AI job costing for field service.
A note on scope: Sandlabs is an enabling-technology provider. This article explains how the SOR model works so you can reason about your own operation. It is not contract, legal, or commercial advice, and how you price or administer a contract is a decision for you and your client.
FAQ
What does SOR stand for?
SOR stands for Schedule of Rates - a pre-agreed list of work items, each with a code and a fixed unit price, used to value work as it is carried out.
What is the difference between a Schedule of Rates and a bill of quantities?
A bill of quantities measures and prices the work for a single defined project before it starts, so the quantities are known in advance. A Schedule of Rates fixes the price per item but not the quantities, which are counted as jobs are actually completed. Maintenance contracts use an SOR because the flow of jobs is unpredictable.
Why is SOR coding important for getting paid?
On an SOR contract, revenue is determined by the codes assigned to a completed job, not by the time or effort spent. If a job is coded to the wrong line or a billable item is missed, the work goes under-billed even though it was done correctly. Accurate coding is what turns completed work into collected revenue.
Is a Schedule of Rates the same as a price list?
It is a specialised kind of price list. A general price list quotes products or standard services; a Schedule of Rates is a contractually agreed set of coded work items and rates used to value ongoing work under a specific contract, often with rules about when each line applies.
Can AI code jobs to a Schedule of Rates automatically?
AI can interpret a plain-language job note and propose the correct client-specific SOR codes with a confidence score, so that clear matches flow through and only uncertain ones need a human check. It works because language models can reason about meaning and hold a specific client's rate library in context, rather than relying on fixed keyword rules.
Want the practical version?
If coding against a client Schedule of Rates is slowing your invoicing or quietly costing you margin, we can help. Read how we automate SOR coding for social housing maintenance, book a free 30-minute intro call at sandlabs.com.au/book-a-call, or email [email protected].