In production

Inspection violations to rep outreach, daily

Regional elevator services company. HubSpot, state inspection records.

Situation

Every failed elevator inspection is a public record with a correction deadline: a door interlock, a dead emergency phone, a missing maintenance log. For a service company that is the most timely sales lead there is. The records sat on a state website. An earlier scraper exported them to spreadsheets, but nothing matched them to the CRM, routed them to a rep, or ran again the next day.

What we built

Every weekday an agent pulls the new inspection reports, reads each cited violation, and matches the building to a company in the CRM. Matched buildings get a note. When a report carries a violation the company sells the fix for, the territory's rep gets a task with the email already written around that defect and its deadline. The rep sends it from their own inbox; the agent never sends.

How it works

  • Cited codes map onto the sales team's own templates, ranked by severity, so the email leads with the most serious defect on the report: door interlocks before emergency phones before paperwork.

  • One decision per report, logged. Reports waiting on configuration, like a zip with no rep, are re-decided once it is filled; a tie between two CRM records goes to a person.

  • The scrape is incremental, re-reading only elevators whose inspection date changed, so the daily run takes one to three minutes.

Impact

2,143

violation lines parsed across 838 inspection reports and 1,162 elevators, with 95.9% of reports matching the state's own violation count.

86%

of cited violation lines map to a ready-to-send outreach template the sales team wrote.

~15

inspection reports with violations a week in the pilot territory, each checked against the CRM the morning it appears.

Live to reps in one territory since mid-October. Most reports name buildings the CRM has never seen; that list is the next phase. No pipeline or wins claimed yet.

Have a function like this one?

Tell us where you would start and we will tell you what it would take.

patrick@boguelabs.ai