Service Titan Overdue Maintenance Lead Scanner Agent
Each morning, inside sales reps log into Service Titan and manually scroll through 2,000+ customer records and job histories to find customers overdue for maintenance. They write down names and phone numbers on a notepad or spreadsheet, then start making calls. Reps have no way to see which customers are highest priority, no suggested call scripts, and no way to prevent duplicate outreach if the same customer is flagged multiple times.
Each morning, reps log into the Kanban board and see a prioritized list of customers overdue for OCC, inspections, or cleanings. Each card shows the customer name, company, phone number, why they are overdue, months since last service, and a suggested call script. Reps drag cards from New Leads to Contacted as they make calls, then to Scheduled when a service visit is booked. The system prevents duplicate outreach by hashing each signal, so reps never see the same overdue customer twice.
1,700 dormant customers in Service Titan. Nobody is calling them.
Commercial boiler service companies have 2,000+ contacts in their CRM, but inside sales reps spend their mornings manually scanning job history to find customers overdue for state-mandated inspections, open-clean-close maintenance, or routine cleanings.
Steam boilers require annual OCC (open, clean, close) inspections. Standard boilers require biennial inspections. Customers who miss these windows create liability and lost service revenue.
Reps manually scroll through 2,000+ contacts and job histories each morning to find overdue customers. This is slow, inconsistent, and error-prone.
Maintenance service cycles are predictable and recurring. Without a system to surface them, the company misses high-probability upsell opportunities.
Wake up with a prioritized list of customers who need to be called today.
The agent runs nightly and identifies customers overdue for OCC, inspections, or cleanings based on configurable keyword rules and equipment-type cadence thresholds (steam boilers 365 days, standard boilers 730 days).
Signal hashing prevents duplicate leads from appearing on the board after daily scans. Rejected leads are permanently suppressed and never resurface.
Each lead card includes customer contact info, trigger reason, months overdue, and an AI-generated call script tailored to the equipment type and service interval.
Reps move cards from New Leads through Contacted, Scheduled, and Closed columns. Card positions persist so the team can see the full pipeline at a glance.
The agent scans Service Titan job history nightly, matches keywords and equipment-type cadence rules, and populates a four-column Kanban board with actionable leads. Each card shows the customer name, why they are overdue, months since last service, and a suggested call script. Reps drag leads from New to Contacted to Scheduled to Closed, log call notes, and reject false positives. The system prevents duplicate outreach by hashing each signal, so the same overdue customer is never surfaced twice.
How the agent surfaces overdue maintenance leads
The system runs on a nightly schedule and combines Service Titan job history with configurable signal rules to identify customers overdue for maintenance.
A cron job runs daily at 6 AM EST, connects to Service Titan API, and pulls all customer records and job history. The agent evaluates each customer's most recent job per equipment type.
The agent compares job types and summaries against signal keywords (OCC, Inspection, Cleaning, Tube Cleaning, Fireside Cleaning). If the elapsed time since last matching service exceeds the cadence threshold for that equipment type, the customer is flagged as overdue.
For each overdue customer, the agent creates a lead card with customer name, company, phone, trigger reason, months overdue, and a suggested call script. A signal hash ensures the same lead is never created twice.
New leads appear in the New Leads column. Reps see them when they log in each morning and start making calls.
Reps drag cards across the board (Contacted, Scheduled, Closed) and log call notes. If a lead is not a good fit, reps click Reject to permanently suppress it.
Service Titan customer records +
Customer name, company, phone, email, address, and equipment type (steam boiler, standard boiler, pressure vessel, etc.)
Service Titan job history +
Job type, job summary, completion date, and associated customer ID for each job in the system
Signal configuration rules +
Configurable keywords (OCC, Inspection, Cleaning, Tube Cleaning, Fireside Cleaning) and cadence thresholds per equipment type (steam boilers 365 days, standard boilers 730 days)
Call script templates +
Variable-interpolated templates for each signal type, with placeholders for customer name, months since last service, and equipment type
Nightly Service Titan sync +
Cron job authenticates via OAuth2 and pulls all customer records and job history from Service Titan API v2. Results are upserted into local SQLite database.
Signal matching engine +
For each customer and equipment type, the agent queries jobs matching signal keywords, takes the most recent job, and compares elapsed days against the cadence threshold.
Idempotency check +
Generate signal hash (SHA-256 of job ID plus signal type). Skip if hash already exists and status is active or rejected.
Lead card generation +
For each overdue customer, create a lead card with customer info, trigger reason, months overdue, and interpolated call script. Insert into SQLite leads table.
Board population +
New leads appear in the New Leads column of the Kanban board. Reps see them on login.
Kanban board with four columns +
New Leads, Contacted, Scheduled, Closed/Archive. Cards show customer name, company, phone, trigger reason, equipment type, and months overdue.
Lead detail modal +
Full customer info, trigger reason, suggested call script, Service Titan deep link, notes history, and reject button. Notes are timestamped and attributed to author email.
Call script templates +
Equipment-type-specific scripts interpolated with customer name, rep name, and months since last service. Displayed in the lead detail modal.
Lead movement tracking +
Card positions persist across sessions. Reps drag cards between columns to track pipeline status (New, Contacted, Scheduled, Closed).
Rejection and idempotency log +
Rejected leads are permanently suppressed. Signal hashes prevent duplicate leads from appearing after daily scans.
Is this for you?
- + Inside sales reps at boiler and HVAC service companies - Reps who spend mornings manually identifying overdue customers in their CRM. This agent puts a prioritized call list on their screen each morning.
- + Operations managers overseeing recurring maintenance revenue - Managers who need to see which customers are overdue for state-mandated inspections or routine service. The Kanban board shows the full pipeline at a glance.
- + Companies with Service Titan as their CRM - The agent reads Service Titan API v2 natively. If your job history contains recognizable maintenance keywords (OCC, Inspection, Cleaning), the agent can identify overdue customers.
- + Teams with predictable, recurring service cycles - The agent works best when maintenance intervals are consistent and well-defined (e.g., annual OCC for steam boilers, biennial for standard boilers). Custom cadence rules can be configured.
- - Companies without Service Titan - This agent reads Service Titan API v2. If you use a different CRM (Jobber, Housecall Pro, etc.), the agent would need to be adapted to that system's API.
- - Teams with inconsistent or missing job history data - The agent relies on job types and summaries containing recognizable keywords. If your Service Titan data is sparse, unstructured, or missing completion dates, signal detection will be unreliable.
- - One-off or project-based service models - This agent is designed for recurring maintenance cycles. If your business model is primarily project-based or one-time installations, the cadence-based signal detection will not apply.
- - Organizations requiring bidirectional CRM sync - This build reads from Service Titan only. Writing lead outcomes, notes, or scheduling data back to Service Titan is not included in Phase 1. That is a future phase.
Scoped build plus usage-based runs.
The agent is built as a custom integration for your Service Titan instance. Pricing covers the initial build, deployment to Railway, and setup of the nightly signal scanner. Ongoing costs are usage-based: the agent runs once per day and makes API calls to Service Titan proportional to your customer and job history size.
- Initial build includes Kanban board UI, signal scanner, SQLite persistence, magic link auth, and dummy mode for testing.
- Nightly cron job runs at 6 AM EST. API call volume depends on your Service Titan customer and job counts.
- Magic link emails are sent via Resend. Low volume (5-10 per day) is included.
- Future phases (Service Titan write-back, automated email sequences, LLM-powered script generation) are scoped and priced separately.
How does the agent know which customers are overdue for maintenance?
The agent scans your Service Titan job history nightly and matches keywords like OCC, Inspection, and Cleaning against your job types and summaries. It then compares the elapsed time since the last matching service against equipment-type cadence rules: steam boilers need annual OCC (365 days), standard boilers need biennial OCC (730 days). If a customer exceeds the threshold, they appear on the board as overdue.
Will the board show the same customer twice if they are overdue for multiple service types?
No. The system uses a signal hash (SHA-256 of job ID plus signal type) to prevent duplicates. Each unique signal appears only once on the board. If a customer is overdue for both OCC and an inspection, they will appear as two separate cards with different trigger reasons.
What happens if a rep rejects a lead as a false positive?
Rejected leads are permanently suppressed and will never reappear on the board, even after the agent runs its nightly scan. The system respects rep decisions so you do not see the same bad lead twice.
Can we customize the maintenance keywords and cadence thresholds for our equipment?
Yes. The signal rules are defined in a configurable signals.json file that specifies keywords (OCC, Inspection, Cleaning, etc.) and cadence thresholds per equipment type. You can adjust these rules without code changes. If you need to add new equipment types or service intervals, those changes are straightforward.
Does the agent write anything back to Service Titan, or is it read-only?
Phase 1 is read-only. The agent scans your Service Titan data but does not write back to it. Reps log notes and move cards on the Kanban board, but those changes stay in the board's database. Writing lead outcomes, notes, or scheduling data back to Service Titan is a future phase.
How often does the agent scan Service Titan for new overdue customers?
The agent runs on a nightly schedule at 6 AM EST. Each morning, reps log in and see a fresh list of customers who have become overdue since the previous scan. The scan is idempotent, so running it multiple times does not create duplicate leads.
What information does each lead card show, and can reps customize the call scripts?
Each card displays the customer name, company, phone number, trigger reason (e.g., 'Overdue: 25 months since last OCC'), equipment type, and months since last service. The system generates a suggested call script tailored to the equipment type and service interval. In Phase 1, scripts are template-based with variable interpolation (customer name, months since last service, equipment type). Future phases may include dynamic script generation using LLM models.
Who can access the Kanban board, and how does authentication work?
Access is restricted to team members with @atlantaboiler.com or @getsagan.com email addresses. Login uses magic links: enter your email, click the link sent to your inbox, and you are logged in for 24 hours. No passwords required. This keeps customer data secure while keeping the login process simple.
Similar lead-generation pattern with configurable signal rules and idempotent deduplication across daily scans
Similar pipeline-tracking workflow that monitors an external system, classifies signals, and surfaces actionable leads for reps
Start surfacing overdue maintenance leads tomorrow.
The agent is ready to deploy. Once you connect your Service Titan account and confirm your signal keywords and cadence rules, the board populates with leads overnight.