How it works
1. Source
Four sources, pulled weekly.
- Permit applications. Commercial building and tenant-improvement applications from the city or county portal.
- Site-plan and zoning approvals. From planning commission agendas.
- Commercial land purchases. From the county recorder.
- Franchise expansion announcements. From business journals and franchise disclosure updates.
2. Qualify
Filters drop five kinds of record.
- Residential. Every residential record.
- Too small. Projects under $250,000 in estimated value.
- Already covered. Records that already name a general contractor.
- Out of range. Anything outside the service radius.
- Already known. Owners already in the CRM.
The contractor-of-record check drops every issued permit that already names a GC, which is most of what a plan room sells you.
The CRM check drops owners you bid to in the last 18 months and developers with a standing GC roster.
Both run before the system spends a cent on contact lookup.
3. Enrich
For each qualified project the system identifies the owner entity on the record.
- Resolve the LLC to a person. Through the state business registry and the deed’s mailing address.
- Find the decision maker. The owner, development manager, or franchisee, found with Hunter.
- Validate the address. Through BetterContact’s waterfall.
4. Outreach
The owner receives four emails inside 14 days, all before a GC is named.
The first sentence cites the public record: the permit application number and address, the planning case, the parcel purchase, or the announced franchise location.
5. Book, propose, and track
Claude tags every reply with one label: positive, question, not-now, wrong-person, has-GC, or unsubscribe.
- A positive reply. Triggers a booking link plus a 5-question project intake to the owner.
- The estimator’s Slack alert. Carries the address, the permit or planning case link, the owner entity, and the valuation.
- The CRM deal. Carries the parcel id, the trigger type and date, the valuation, and every email sent.
- After the project meeting. The estimator enters building type, gross square footage, structure, site work scope, finish level, and target dates into a form.
- The proposal. SourceToDocs returns a branded budget proposal PDF with a low and high range.
- The send. n8n emails it to the owner within the hour and moves the deal to proposal_sent.
SourceToDocs is built by 2V Automation, the team behind this library.
Lead sources for commercial construction
Ranked by signal quality:
1. Commercial building and tenant-improvement permit applications
A permit application with an owner named and no contractor of record means the owner is 2 to 8 weeks from picking a GC.
| Feed | What it gives | Pulled |
|---|---|---|
| Socrata open data feed, which exposes a public API with no scraping | Address, owner name, estimated valuation, and application date | Weekly, by direct HTTP call |
| Accela Citizen Access or Tyler EnerGov portal | The same record where the city runs no open data feed | Weekly, through an Apify scraper |
Filtered to: commercial occupancy, status “applied” or “in review”, and work descriptions containing “new building”, “shell”, “tenant improvement”, or “addition”.
Highest intent, lowest competition, because most GCs only watch issued permits, which already have a contractor on them.
2. Site-plan and zoning approvals
A planning commission approval for a commercial site plan, conditional use permit, or rezoning means a project is 3 to 9 months from breaking ground and the owner is about to budget it.
| Feed | What it gives | Pulled |
|---|---|---|
| Planning commission agendas and minutes, from the city website PDF or a Legistar feed | Applicant, parcel, use, and square footage, which Claude extracts from the agenda text | Weekly, through an Apify scraper |
The applicant is usually the developer or the developer’s civil engineer, and either one can name the decision maker.
3. Commercial land purchases
A deed transfer on a commercially zoned parcel to an LLC or a known developer means a project is being planned, 6 to 18 months out.
| Feed | What it gives | Pulled |
|---|---|---|
| County recorder document search, or the county assessor’s sales file, which many counties publish as a monthly CSV | The grantee name and mailing address, which lead to the owner | Weekly, filtered by zoning code and sale price above $500,000 |
Longest horizon, but the owner has no GC, no architect in many cases, and no bid list yet.
4. Franchise expansion announcements
A franchisor announcing 10 new locations in your state, or a franchisee signing a multi-unit development agreement, means 10 build-outs at $300,000 to $1.5M each over 2 to 3 years.
| Feed | What it gives | Pulled |
|---|---|---|
| Local business journal openings column, franchisor press releases, and updated franchise disclosure documents | The announced locations and the franchisee behind them | Weekly, scraped through Apify |
The franchisee is the buyer, and most franchisees hire a GC per location with no formal bid process.
ICP definition
Filter logic the workflow applies:
| Filter | Rule |
|---|---|
| Project type | New commercial buildings, shells, tenant improvements, additions, retail build-outs, restaurant build-outs, medical build-outs, light industrial |
| Occupancy | Office, retail, restaurant, medical, industrial, hospitality, multifamily of 5+ units, religious, private education |
| Size | $250,000+ estimated valuation, or 5,000+ sq ft site plan, or a $500,000+ parcel sale, or 2+ franchise units |
| Contractor of record | None listed (permits only) |
| Radius | Within 80 km of base |
| Trigger window | Last 45 days for permits and approvals; last 90 days for deeds and franchise announcements |
| Contact | Owner, principal, development manager, director of construction, franchisee, real estate manager |
| Excluded | Residential occupancy (R-3, single family, townhome, duplex), government and public school projects (formal procurement), national chains with an in-house construction department and a GC roster, current clients (CRM match), competitors, projects over $20M (bonding and prequalification outside the target band) |
Outreach sequence
The four steps
| Step | Day | Channel | Goal |
|---|---|---|---|
| 1 | 0 | Lead with the application, case, or deed and offer a conceptual budget before the bid list forms | |
| 2 | 3 | Short bump with the application or approval date | |
| 3 | 7 | Value angle: one specific pain (budget overruns at bid, permit delays, schedule risk) | |
| 4 | 14 | Breakup, door open, 5-day budget turnaround offer |
Example step 1 (permit application trigger)
Subject: budget for [address]
Hi [Name], the commercial building permit application for [address] (application [application number]) was filed on [application date] under [owner entity] with no contractor listed yet. At [valuation] that is the size of project we build most.
We have delivered [N] owner-direct projects in [city] and can turn a site plan into a conceptual budget in 5 business days, before you commit to a bid list.
Worth a 30-minute project meeting in [week]?
Expected reply rates
Across the trigger sources (permit applications, planning approvals, deeds, franchise announcements), the expected reply rate is 2 to 5%. Treat these as estimates.
Construction signals swing more than most B2B lists.
- A rate hike. Can freeze developer replies for a quarter.
- A December permit list. Replies at half the rate of a March list.
- A single 10-unit franchise program. Can double one month’s meetings.
Your offer, your metro, and the interest rate environment will move them.
Stack and running costs
| Tool | Purpose | Monthly |
|---|---|---|
| n8n Cloud | Orchestration | $24 |
| Apify | Permit portal, planning agenda, recorder, and franchise news scraping | $30 |
| Hunter | Decision-maker email finding | $34 |
| BetterContact | Waterfall enrichment + verification | $15 |
| Instantly | Sending, warmup, reply webhook | $37 |
| Claude API | Agenda extraction, first lines, reply classification | $8 |
| SourceToDocs (Starter) | Branded budget proposal PDF generation | $19 |
| Sending domain | Deliverability | $1 |
| Supabase (free tier) | Prospect database | $0 |
| Total | ~$170 |
Socrata open data APIs, Legistar agenda feeds, state business registry searches, and most county recorder searches are free. Counties that charge for bulk deed data run $25 to $100 a month, which is on top of the total. Costs are current public starter tiers.




