How it works
1. Source
Five sources, pulled weekly.
- Permits. Tenant improvement and fit-out permits from the city or county portal.
- Leases. New commercial leases from LoopNet, Crexi, and business journal lease roundups.
- Bid invitations. GC bid invitations from BuildingConnected and PlanHub.
- Renovation programs. Multifamily renovation programs from apartment renovation permits and REIT filings.
- Inventory. Property manager inventory from Google Maps.
2. Qualify
Filters drop:
- Residential permits. R-3 occupancy, single family, and townhome.
- Undersized work. Build-outs under 5,000 sq ft or $150,000 in valuation, and apartment communities under 100 units.
- Formal procurement. Government and public school projects.
- Out of range. Anything beyond 60 km.
- Already known. Current clients, and GCs already in the CRM.
A permit that fails these checks never reaches Hunter, so the $49 contact budget goes only to projects with a real flooring scope.
3. Enrich
For each qualified record the system finds the GC project manager, the tenant rep, the property manager, or the regional maintenance director.
- Find the email. Hunter pulls it from the company domain.
- Verify it. The BetterContact waterfall confirms the address.
4. Outreach
Four emails land on days 0, 3, 7, and 14, all before the GC picks a flooring sub.
The opener quotes the record the scraper stored:
- Permit rows. The permit number and address.
- Lease rows. The leased suite.
- Bid board rows. The bid invitation.
- Renovation rows. The renovation program and unit count.
5. Measure, quote, and track
Claude reads every reply and sorts it as positive, question, not-now, wrong-person, or unsubscribe.
- Positive reply. The GC or property manager receives a booking link plus 4 prep questions: slab type, existing flooring, occupied or vacant, and target dates.
- Estimator alert. A Slack message carrying the address, the permit or lease link, the square footage, and the contact’s role.
- CRM deal. Opens at stage site_measure with the trigger record attached.
- The measure form. After the measure the estimator fills one form: sq ft per area, product per area, demolition, prep and leveling, moisture test reading, base and transitions, and phasing.
- The quote. SourceToDocs returns a branded quote PDF, n8n emails it to the contact within the hour, and the deal moves to stage quoted with the amount.
SourceToDocs is built by 2V Automation, the team behind this library.
Lead sources for commercial flooring
Ranked by signal quality:
1. Tenant improvement and fit-out permits
A tenant improvement permit means a finish schedule exists and flooring is the last trade on it, usually 8 to 14 weeks after the issue date.
- Where it comes from. The city or county permit portal (Accela, Tyler EnerGov, or the county’s own search page), pulled weekly by an Apify scraper.
- What the filter keeps. Commercial occupancy codes, and work descriptions containing “tenant improvement”, “interior alteration”, “build-out”, or “fit-out”.
- What the record carries. The address, the contractor of record, the valuation, the square footage where the portal publishes it, and the issue date.
Highest intent and lowest competition, because most flooring subs wait for the GC’s bid invitation and meet 5 to 10 competitors there.
2. New commercial leases
A signed lease on 5,000 sq ft or more means a build-out starts within 30 to 90 days, and every build-out ends with new flooring.
- Where it comes from. LoopNet and Crexi listings that flip to “leased”, plus the weekly lease roundups in the local business journal, scraped through Apify.
- What the record names. The building, the suite size, the tenant, and usually the tenant rep broker and the landlord’s property manager.
That gives the outreach two contacts per lease.
3. GC bid invitations
BuildingConnected and PlanHub post commercial projects with a flooring scope and a bid due date. The GC is actively looking for a flooring sub, so the signal is direct, and the competition is 5 to 10 other bidders.
- Where it comes from. Your BuildingConnected and PlanHub notification emails.
- What the system logs. The GC estimator and the bid date.
- What it sends. A site measure offer before the deadline, in place of a number priced from plans alone.
4. Multifamily renovation programs
An apartment owner running a value-add program replaces flooring in every renovated unit, typically 20 to 60 units a year per community.
Two feeds:
| Feed | What it gives |
|---|---|
| Apartment renovation permits from the same permit portal | R-2 occupancy, work descriptions containing “unit renovation”, “interior renovation”, or “unit upgrades”, with unit counts |
| REIT 10-K and 10-Q filings from the SEC EDGAR full-text search API (free) | The submarkets and the unit counts in each renovation program |
The contact is the community’s property manager or the regional maintenance director.
The purchase is recurring, which makes this the best source for repeat revenue.
5. Property manager inventory (Google Maps, volume filler)
Commercial and multifamily property management firms with 10 or more managed buildings in radius.
- Where it comes from. SerpAPI Google Maps queries and the firm’s own portfolio page.
- What it is for. Holding volume steady in the weeks when permits and leases are scarce, because common area carpet turns over on a 7 to 10 year cycle.
Lowest intent of the five.
ICP definition
Filter logic the workflow applies:
| Filter | Rule |
|---|---|
| Project type | Tenant improvements, interior alterations, build-outs, new commercial shells, unit renovations, common area renovations |
| Occupancy | Office, retail, medical, private education, hospitality, industrial, multifamily R-2 |
| Size | $150,000+ permit valuation, or 5,000+ sq ft leased, or 100+ units, or a 10+ building portfolio |
| Radius | Within 60 km of base |
| Contact | Project manager, estimator, tenant rep, property manager, regional maintenance director, facility manager |
| Trigger window | Permits issued in the last 60 days; bid invitations due 5 or more days out |
| Excluded | Residential permits (R-3, single family, townhome), government and public school projects (formal procurement), current clients (CRM match), competitors, GCs on the do-not-contact list |
Outreach sequence
The four steps
| Step | Day | Channel | Goal |
|---|---|---|---|
| 1 | 0 | Quote the permit, lease, or bid record and ask for a site measure before the flooring sub is chosen | |
| 2 | 3 | Short bump with the permit date, lease date, or bid date | |
| 3 | 7 | Value angle: one specific pain (slab moisture failures, schedule compression, occupied-space phasing) | |
| 4 | 14 | Breakup, door open, measured quote in 48 hours |
Example step 1 (permit trigger)
Subject: flooring for [address]
Hi [Name], the tenant improvement permit for [address] (permit [permit number]) was issued on [permit date] with [GC name] as contractor of record. Flooring is usually the last finish trade on a build-out that size, and the slab needs a moisture test before the schedule gets tight.
We install LVT, carpet tile, and polished concrete for [N] GCs in [city]. We can measure the space, test the slab, and price it in 48 hours.
Worth a 20-minute site measure in [week]?
Expected reply rates
| Row type | Expected reply rate |
|---|---|
| Trigger sources (permits, leases, bid invitations, renovation programs) | 3 to 6% |
| Property manager inventory | 1 to 3% |
Both ranges are estimates for a warmed domain.
The calendar moves the rate:
- GC estimators. They reply in bursts around bid deadlines, and go quiet in the last 2 weeks of a quarter when projects close out.
- Multifamily turn work. It peaks from May to September.
Expect swings of 1 to 2 points month to month.
Stack and running costs
| Tool | Purpose | Monthly |
|---|---|---|
| n8n Cloud | Orchestration | $24 |
| Apify | Permit portal, LoopNet, Crexi, and business journal scraping | $30 |
| SerpAPI | Property manager inventory (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 quote PDF generation | $19 |
| Sending domain | Deliverability | $1 |
| Supabase (free tier) | Prospect database | $0 |
| Total | ~$195 |
BuildingConnected and PlanHub basic subcontractor accounts are free and are used for invitations only.
The SEC EDGAR full-text search API is free. Costs are current public starter tiers.




