How it works
1. Source
The system pulls records from five sources weekly.
- Commercial construction permits. Over $2M, from the city or county permit portal.
- New certificates of occupancy. For warehouses, data centers, multifamily buildings, and hospitals.
- Security guard RFPs. From SAM.gov and city procurement portals.
- Special event permits. From the city events office.
- Repeat-incident retail addresses. From the police open data portal.
2. Qualify
Filters drop residential permits, projects under $2M valuation, events under 500 attendees, RFPs whose license or insurance lines you cannot meet, anything outside the service radius, and every company already in the CRM.
A record that fails here costs nothing, because contact lookup runs only on survivors.
3. Enrich
For each qualified record the system finds the person named on the trigger: the GC superintendent or project manager, the facility or property manager, the event organizer, or the procurement officer on the solicitation.
Hunter runs the email search and BetterContact runs the verification.
4. Outreach
Four emails on days 0, 3, 7, and 14, aimed at landing before the post is staffed.
The opening sentence names the record behind the send: the permit number and address, the certificate of occupancy date, the solicitation number, or the event name and date.
5. Book, propose, and track
Claude reads every reply and sorts it into positive, question, not-now, wrong-person, or unsubscribe.
- Positive reply. It triggers a booking link, a Slack message carrying the address, the trigger record, and the reply text, and a new CRM deal at stage site_assessment.
- After the assessment. The operations manager enters post count, hours per post, coverage days, patrol frequency, and equipment into a form.
- The proposal. SourceToDocs produces a branded proposal PDF with a staffing schedule, and n8n emails it within the hour.
- The record. The CRM stores every email, reply, assessment date, and proposal amount against the deal.
SourceToDocs is built by 2V Automation, the team behind this library.
Lead sources for security guard companies
Ranked by signal quality:
1. Commercial construction permits
A new commercial build with a valuation over $2M means an open site with materials, equipment, and copper on it for 9 to 24 months, and the GC’s insurance carrier usually requires site security once framing starts.
- The Monday query. An Apify actor queries your county’s permit search for building permits issued in the previous 7 days. Accela and Tyler EnerGov both expose one, and smaller counties publish a CSV.
- The filter. Keep only commercial occupancy codes with work type “new construction” or “addition”, and discard anything valued under $2M.
- What each surviving permit gives. Four fields: the site address, the GC of record, the valuation, and the issue date.
Highest intent, lowest competition, because most guard companies wait for the GC to call.
2. New certificates of occupancy
A certificate of occupancy on a warehouse, distribution center, data center, multifamily building with 100 or more units, or hospital means a facility opens within 30 to 60 days and the operator hires a guard or patrol vendor in the first month.
- Where it comes from. The same permit portal through a second Apify run. Most Accela and EnerGov instances publish CO records as a separate record type.
- The filter. Occupancy class S-1, B with a data center use, R-2, and I-2.
The CO record names the owner or tenant and the address, which feeds the facility manager lookup.
3. Security guard RFPs
A city, county, school district, transit agency, or property manager that posts a solicitation for guard services has budget approved and a contract start date.
- Federal and many state solicitations. From the SAM.gov public API, free, keyword “security guard services”, NAICS 561612.
- City and county portals. Bonfire, BidNet, PlanetBids, and each city’s own procurement page, pulled weekly through Apify.
- What the solicitation lists. The procurement officer, the due date, the insurance limits, and the license requirement.
Competition runs 5 to 15 bidders, so the system emails the officer with a site visit request before the question deadline.
4. Special event permits
A permitted event with 500 or more attendees in a public park, street, or venue needs licensed crowd management, and most cities require a security plan as a permit condition.
- Where it comes from. The city special events office portal or its published event calendar, through Apify, 30 to 90 days before the event date.
- What the permit names. The organizer and the expected attendance.
Shorter contracts, fast decisions, and a good path into the organizer’s next 3 to 5 events a year.
5. Repeat-incident retail addresses (police open data)
A retail address with 3 or more theft or trespass reports in 90 days has a loss problem the store or property manager is already counting.
- Where it comes from. The city police department’s open data portal. Most publish incident data through a Socrata or ArcGIS API at no cost.
- How it is built. Aggregated by address, then matched to the business at that address through SerpAPI Google Maps.
Lower intent than the four sources above, because the manager may already have a guard, so the email leads with the incident count rather than an open position.
ICP definition
Filter logic the workflow applies:
| Filter | Rule |
|---|---|
| Record type | Construction permits, certificates of occupancy, RFPs, special event permits, incident clusters |
| Occupancy | Warehouses, distribution, data centers, multifamily of 100+ units, hospitals, office towers, retail centers, public venues, construction sites |
| Size | $2,000,000+ permit valuation, or a 50,000+ sq ft certificate of occupancy, or a posted RFP, or a 500+ attendee event, or 3+ incidents in 90 days |
| Radius | Within 60 km of base |
| Contact | Superintendent, project manager, facility manager, property manager, event organizer, procurement officer, loss prevention manager |
| Trigger window | Permits and certificates of occupancy in the last 60 days; RFPs due 10 or more days out; events 21 or more days out |
| RFP fit | License requirement matched to held licenses and insurance limit within the policy limit |
| Excluded | Residential permits (R-3, single family, townhome), events under 500 attendees, federal facilities requiring a clearance you do not hold, current clients (CRM match), competitors, national REITs with a master security vendor |
Outreach sequence
The four steps
| Step | Day | Channel | Goal |
|---|---|---|---|
| 1 | 0 | Name the permit, CO, solicitation, or event and ask for a site assessment before the post is staffed | |
| 2 | 3 | Short bump with the permit or CO date and a booking link | |
| 3 | 7 | Value angle: one specific pain (no-show officers, no patrol logs, turnover on the post) | |
| 4 | 14 | Breakup, door open, 48-hour proposal offer |
Example step 1 (construction permit trigger)
Subject: site security for [address]
Hi [Name], [GC name] is listed as GC on permit [permit number] at [address], a [valuation] build issued [permit date]. Sites that size post a guard once framing starts, and copper or tool theft costs an estimated $5,000 to $20,000 per incident.
We staff [N] construction sites in [city] with licensed officers, a site supervisor, and hourly patrol logs you can pull any time.
Worth a 20-minute site assessment in [week]?
Expected reply rates
| Row type | Expected reply rate |
|---|---|
| Trigger sources: permits, certificates of occupancy, RFPs, event permits | 3 to 6% |
| Incident-cluster retail addresses | 1 to 3% |
These are estimates based on B2B campaigns run from warmed domains, and your territory, your license status, and the season will change them.
Stack and running costs
| Tool | Purpose | Monthly |
|---|---|---|
| n8n Cloud | Orchestration | $24 |
| Apify | Permit, CO, procurement portal, and event calendar scraping | $30 |
| SerpAPI | Business match at incident addresses (Google Maps) | $25 |
| Hunter | Decision-maker email finding | $34 |
| BetterContact | Waterfall enrichment + verification | $15 |
| Instantly | Sending, warmup, reply webhook | $37 |
| Claude API | First lines and reply classification | $8 |
| SourceToDocs (Starter) | Branded proposal PDF generation | $19 |
| Sending domain | Deliverability | $1 |
| Supabase (free tier) | Prospect database | $0 |
| Total | ~$195 |
The SAM.gov Opportunities API and police open data portals are free. Costs are current public starter tiers.




