Idea / exploring · County government — Public works, fleet & facilities
Dashboard or reportWork order classification for fleet and facilities
Result in one line: Not in service yet: on 12 months of past tickets it agreed with the shops' own coding 84% of the time
A prototype that reads free-text maintenance tickets, assigns a trade and a failure code, and shows the resulting backlog by shop — built to test whether coded tickets would make the backlog legible.
Published August 5, 2026
- Skills needed to set it up
- Power user
- Readiness
- Reference only Needs customization
- Data it touches
- Internal, non-public data
- Who sees the output
- Internal staff
- License
- Not open source — available on request
- Cost to stand up
- Under $25k
- Portable to other platforms
- Partially — with rework
- Use case category
- Operations & logistics
- Reviews it went through
- Not yet reviewed
What do these mean?
- Power user
- Someone comfortable with spreadsheets, forms and low-code tools.
- Reference only
- Documentation and lessons — not something to deploy.
- Needs customization
- Your team will need to adapt it before use.
- Internal, non-public data
- Non-public operational data without personal identifiers.
- Internal staff
- Used only inside the organization.
- Not open source — available on request
- Peer jurisdictions can ask; say how in the access terms below.
- Partially — with rework
- Some pieces are vendor-specific and would need swapping.
- Operations & logistics
- Planning, dispatch, inventory, inspections and field work.
- Not yet reviewed
- Shared honestly — this has not been through a formal review.
Problem
We take about 22,000 maintenance tickets a year across fleet, buildings and grounds. The ticket form has a category dropdown, and the category dropdown is wrong most of the time — not through carelessness, but because the person raising a ticket knows the symptom (“the van pulls to the right”) and not the trade or the failure code.
The consequence is that the backlog is unreadable. We can say how many tickets are open. We cannot say what they are, which shop should have them, or whether the same failure keeps coming back on the same twelve vehicles, which is the question the fleet manager actually asks.
What we built
A prototype, and we are writing it up at the prototype stage on purpose.
A flow picks up new tickets, strips the requester’s name, and asks a model to read the free-text description and propose a trade and a failure code from our own list. The proposals go into a table alongside whatever the shop later coded the ticket as, and a report shows the backlog grouped by shop and trade with a repeat-failure view by asset.
Nothing routes. Nothing is assigned. The proposed code sits next to the ticket and no one is required to look at it.
How it works
The whole thing is a Power Automate flow, an Azure OpenAI call and a Power BI report, built by an analyst without a developer. That is the point of the experiment as much as the classification is: we wanted to know what a non-developer could get to on tooling we already licence.
The failure code list came from the shops. It is 46 codes across five trades, and getting the shops to agree on it was three meetings and the most valuable output of the project so far — several codes existed in two shops under different names.
Results
There are no operational results, because it is not in service.
On a bench test over twelve months of past tickets, the model’s proposed code matched the code the shop eventually assigned 84% of the time. Agreement was much higher on fleet tickets, which use consistent vocabulary, than on buildings tickets, where “it’s leaking” covers four trades. The repeat-failure view found a pattern on a group of light trucks that the fleet manager confirmed and had been describing anecdotally for a year.
What we do not know: whether 84% is good enough, and whether a coded backlog changes anyone’s decisions. Both need a supervised trial in one shop, which is what we are asking for.
Lessons learned
Agreeing the code list is the project. The classifier was a week; the code list was a month and would have been worth doing with no AI involved at all.
Free text quality varies by trade far more than we expected, and an average accuracy number hides that completely. Report it split by whatever your equivalent of a shop is, or you will be surprised in production.
Publish the prototype. We were told to wait until it worked, and we think that is backwards — the code list and the bench test are useful to another county right now, and a catalog of only finished things is a catalog that lies about how this work goes.
How to reuse
Start from the failure code list, which is linked above and is generic across most public works operations. The classifier is a single prompt over a code list; anyone with a low-code platform and a model endpoint can rebuild it in a week. We adapted the prompt and the shadow-testing approach directly from the city’s 311 routing entry in this catalog, which saved us from designing an evaluation from scratch.
About
- Area of work
- IT & operations
- Data & informatics
- Review status
- Not yet reviewed
How it's built
- How AI is involved
- AI is part of the solution
- Types of AI
- Classification & NLP
- Prediction & forecasting
- AI tools & models
- Power Automate
- Power BI
- Azure OpenAI Service
- Where it runs
- Low-code platform
- Microsoft Azure
Sharing & licensing
- Access terms
- A prototype in a low-code environment, so there is no package to hand over. The failure code list and the bench test write-up are linked above and free to reuse; ask us for the flow definition if you want it.
- Portability notes
- The failure code list and the prompt are plain text and portable. The flows and the report are built in the Power Platform, and rebuilding them elsewhere would be a rewrite rather than a port — which is a fair trade for how quickly a non-developer got this working.
- Adapted from
What it took
- Cost to keep running
- Under $10k/yr
- How it was bought
- Existing enterprise licence
- Who it affects
- No resident-facing output and no personal data. The internal question we would have to answer before this went into service is whether a coded backlog gets used to compare shops against each other — the shops raised it in the first demo, and the honest answer is that we have not decided, which is one reason this is still a prototype.
Data & access
- No PII/PHI in the shared material
- Yes
- Data sources
- Maintenance work order tickets (free text)
- Asset and vehicle register
- Trade and failure code list
- Data-governance caveats
- Tickets describe equipment, not people, though a requester's name appears on the ticket and is dropped before the text reaches the model. Everything stays in the county tenant. Nothing in this entry or its screenshot is a real ticket.