Recipe catalog / maintenance-hazard-wording
Flag a maintenance request that describes a safety hazard
Does request describe a safety hazard such as a gas smell, active water intrusion, exposed wiring, structural damage, no heat in cold weather, or a blocked exit?
You need to pull tenant maintenance requests that describe a hazard out of the routine queue for immediate dispatch, based on what the request says before anyone inspects.
Explore this recipe interactively ยท Source and implementation guide
Use maintenance-hazard-wording in TypeScript
Install with npm install jev-recipes. Requires Node.js 22.9 or newer and ES modules. Set TYPESAFE_API_KEY in your server environment for live calls, which send input to TypeSafe and use API quota. See the installation guide.
import { maintenanceHazardWording } from 'jev-recipes/maintenance-hazard-wording';
const result = await maintenanceHazardWording({
"request": "Unit 4B. Since this morning there's a strong gas smell in the kitchen, strongest near the stove even with all the burners off. I opened the windows. Can someone come take a look when they get a chance? Thanks.",
"minConfidence": 0.8
});
console.log(result);
Input contract
| Field | Type | Needed |
|---|---|---|
| request | string | Required |
| minConfidence | number | Optional |
Full input and result schemas
{
"input": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"request": {
"type": "string"
},
"minConfidence": {
"type": "number",
"minimum": 0,
"maximum": 1
}
},
"required": [
"request"
]
},
"result": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"model": {
"type": "string"
},
"usage": {
"type": "object",
"properties": {
"input_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"output_tokens": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"input_tokens",
"output_tokens"
],
"additionalProperties": false
},
"status": {
"type": "string",
"enum": [
"ready",
"review"
]
},
"probability": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"confidence": {
"type": "number",
"minimum": 0,
"maximum": 1
},
"verdict": {
"type": "string",
"enum": [
"hazard",
"routine"
]
}
},
"required": [
"model",
"usage",
"status",
"probability",
"confidence",
"verdict"
],
"additionalProperties": false
}
}Saved example result
This hand-authored response demonstrates the contract. It is not a model accuracy measurement. Run it without an API key: npx jev-recipes demo maintenance-hazard-wording.
{
"model": "demo-fixture",
"usage": {
"input_tokens": 0,
"output_tokens": 0
},
"status": "ready",
"probability": 0.96,
"confidence": 0.96,
"verdict": "hazard"
}
Evaluation evidence
No verified live accuracy measurement is available. Evaluate representative cases before using this decision in your workflow.
Use the evaluation guide to measure this decision on your own labeled cases.
Limitations
- Judges the wording of the request, not the actual condition of the property. Only an inspection establishes whether a hazard exists.
- Applies a fixed set of hazard types drawn from common habitability standards; local codes and lease obligations belong in application rules.
- Does not rank hazards against each other or decide dispatch timing.
Related recipes
- urgency-signal: Use urgency-signal to detect whether the tenant explicitly asks for urgent attention, rather than whether the described problem is a hazard regardless of how it is asked.
- issue-impact: Use issue-impact to grade how badly a reported problem affects the reporter, rather than whether it is a safety hazard.