feat(skills): add marketing skills collection
This commit is contained in:
1 parent
b3a19860b4
commit
71daa05071
280 files changed
+54006
No files matched your search
@@ -0,0 +1,165 @@
|
||||
# Local SMB Prospecting Reference
|
||||
|
||||
For when the user sells to local small businesses — shops, gyms, restaurants, salons, clinics, professional services, contractors, real estate, fitness studios, dental practices.
|
||||
|
||||
Adapted from and generalized beyond the local-client-prospector pattern (browser-assisted discovery + website status classification + proximity scoring).
|
||||
|
||||
---
|
||||
|
||||
## ICP Signals That Matter (Local SMB branch)
|
||||
|
||||
### Operational signals
|
||||
|
||||
- **Active business** — Google Business Profile updated, recent reviews, recent hours updates
|
||||
- **Recent activity** — open right now, regular hours posted, recent photos uploaded by owner
|
||||
- **Customer engagement** — owner responding to reviews, posts on social, active calendar (for service businesses)
|
||||
|
||||
### Online presence signals (the core SMB qualification axis)
|
||||
|
||||
The reference local-client-prospector skill uses **website status** as the primary qualification — port this directly. Four classifications:
|
||||
|
||||
| Status | Definition | Typical outcome |
|
||||
|--------|-----------|-----------------|
|
||||
| **No site found** | No credible standalone website after cross-checked search | **Hot prospect** for web/marketing service |
|
||||
| **Social only** | Facebook, Instagram, WhatsApp, Linktree, booking portal, marketplace page only — no standalone site | **Hot prospect** for web/marketing service |
|
||||
| **Weak site** | Standalone site exists but outdated, broken, very thin, non-mobile-friendly, or missing clear contact/conversion flow | **Warm prospect** for refresh / rebuild service |
|
||||
| **Has site** | Credible, modern standalone site exists | **Low prospect** unless other signals apply (e.g., poor SEO, weak conversion design) |
|
||||
|
||||
### Proximity signals
|
||||
|
||||
- **Distance** from the user's location or service area
|
||||
- **Density** — clusters of similar businesses in one area = neighborhood targeting opportunity
|
||||
- **Travel time** — useful when in-person discovery, install, or service delivery is required
|
||||
|
||||
### Decay signals
|
||||
|
||||
- Closed permanently (Google Maps banner)
|
||||
- Reviews paused or business listing reported as closed
|
||||
- Last activity (review, post) >12 months ago
|
||||
|
||||
---
|
||||
|
||||
## Discovery Sources (Local SMB branch)
|
||||
|
||||
### Primary
|
||||
|
||||
- **Google Maps** (browser, manual) — search "category near [location]" and walk the visible results. Cross-check details. Don't bulk-extract.
|
||||
- **Yelp** — secondary verification; complementary categories
|
||||
- **Bing Local / Apple Maps** — different coverage on smaller businesses
|
||||
- **Facebook Pages search** — many SMBs are Facebook-only
|
||||
|
||||
### Cross-verification
|
||||
|
||||
- **Business's own website** (if any)
|
||||
- **Industry directories** (e.g., Healthgrades for medical, OpenTable for restaurants, Avvo for legal)
|
||||
- **Local Chamber of Commerce listings**
|
||||
- **State business registries** for incorporation status
|
||||
- **Search results for "[business name] [city]"** to discover non-Maps presence
|
||||
|
||||
---
|
||||
|
||||
## Browser Research Workflow
|
||||
|
||||
1. Open a browser and search Google Maps for the category near `base_location`
|
||||
2. Build a candidate list from visible local results, search results, and public directories
|
||||
3. For each candidate, inspect public sources to fill required fields
|
||||
4. Search the exact business name plus city/town to check whether a standalone website exists
|
||||
5. Classify website status per the table above
|
||||
6. Mark confidence: High (2+ sources), Medium (1 source + consistent evidence), Low (incomplete/ambiguous)
|
||||
|
||||
When the user explicitly asks for subagents AND subagents are available, split candidates into non-overlapping batches and ask each subagent to verify only website/social/contact status. Don't use subagents for the primary search if it slows progress.
|
||||
|
||||
### Optional: programmatic verification with Firecrawl or Browserbase
|
||||
|
||||
Once you have a candidate's website URL (found via manual Maps/Yelp discovery), you can speed up website-status classification by hitting the URL programmatically:
|
||||
|
||||
- **Firecrawl** for simple "is this site live, modern, mobile-friendly, conversion-flow-equipped" reads — returns clean markdown you can inspect
|
||||
- **Browserbase** when the candidate site requires JS rendering, has a cookie consent dialog, or you need session state
|
||||
|
||||
**Strict line**: use these on the individual business's URL. **Don't** point them at Google Maps, Yelp, or any platform whose ToS prohibits bulk extraction — discovery stays manual.
|
||||
|
||||
See [data-sources.md](data-sources.md) for setup details.
|
||||
|
||||
---
|
||||
|
||||
## Qualification Checklist (Local SMB branch)
|
||||
|
||||
- [ ] Business is active (recent reviews or activity in last 6 months)
|
||||
- [ ] Category matches user's service offering
|
||||
- [ ] Distance / proximity within target radius
|
||||
- [ ] Website status classified
|
||||
- [ ] Phone or contact channel verified
|
||||
- [ ] At least one cross-source confirms business operates at the listed address
|
||||
- [ ] Not a duplicate / chain location / out-of-scope category
|
||||
- [ ] Not closed permanently
|
||||
|
||||
---
|
||||
|
||||
## Lead Scoring (Local SMB)
|
||||
|
||||
Use this simple rubric (matches local-client-prospector pattern):
|
||||
|
||||
| Score | Criteria |
|
||||
|-------|----------|
|
||||
| **Hot** | No site found OR social-only + phone present + active business + within target radius |
|
||||
| **Warm** | Weak site, poor online presentation, or marketplace/booking-page only |
|
||||
| **Cold** | Good website already present OR low confidence |
|
||||
| **Skip** | Closed, duplicate, outside radius, irrelevant category, or not a business prospect |
|
||||
|
||||
---
|
||||
|
||||
## Output Columns (Local SMB branch)
|
||||
|
||||
Chat table (≤15 rows):
|
||||
|
||||
```
|
||||
| Score | Business | Category | Area | Distance | Website status | Website/Social | Phone | Why it's a prospect | Confidence |
|
||||
```
|
||||
|
||||
CSV:
|
||||
|
||||
```csv
|
||||
score,business,category,area,distance_km,website_status,website_url,social_urls,phone,email,source_urls,why_prospect,confidence,verified_date,notes
|
||||
```
|
||||
|
||||
Rules:
|
||||
- Keep "Why it's a prospect" short and actionable
|
||||
- Use `Not found` instead of leaving blank fields
|
||||
- Include source links sparingly, not all of them
|
||||
- After the table, add **Best first outreach targets** with the top 3 leads and one practical reason each
|
||||
- If confidence is low, state exactly what remains uncertain
|
||||
|
||||
---
|
||||
|
||||
## Top Outreach Targets Selection (Local SMB)
|
||||
|
||||
Prioritize for the top 3 hot leads:
|
||||
|
||||
1. **No site / social only + phone present** = clearest service opportunity
|
||||
2. **High review count** = active, established business with real customers
|
||||
3. **Owner-responded reviews** = engaged owner = more likely to evaluate a vendor
|
||||
4. **Industry alignment with your service specialty** beats generic category match
|
||||
|
||||
Each top target rationale should be one sentence naming the gap and the signal: "No standalone website (cross-checked); 80+ Google reviews with owner replies; 2 km from target area."
|
||||
|
||||
---
|
||||
|
||||
## Compliance Notes (Local SMB-specific)
|
||||
|
||||
The local branch is the most scraping-sensitive of the three motions. Specifically:
|
||||
|
||||
- **Google Maps Terms of Service** prohibit bulk extraction. Treat browser visits as research, not as data acquisition.
|
||||
- **Don't store full Google Maps Place IDs in your CRM** — the ToS limits storage of Maps data.
|
||||
- **Public business contact channels only**: published phone, contact form, info@ email. Don't reach individual employees through their personal channels.
|
||||
- **Owner/operator name when published on the business's own site** is OK to use. If you only got it from LinkedIn, mark the source.
|
||||
|
||||
---
|
||||
|
||||
## Common Mistakes (Local SMB)
|
||||
|
||||
1. **Bulk-scraping Google Maps** — fastest way to violate ToS and lose the research channel.
|
||||
2. **Treating Google Maps data as truth** — listings go stale. Cross-check hours, status, and reviews.
|
||||
3. **Skipping the website status cross-check** — finding "no site" on Maps doesn't mean no site exists; do an exact-name web search before classifying.
|
||||
4. **Targeting only the largest businesses** — they're already covered by other providers. The 2–5 employee SMBs are the under-served opportunity.
|
||||
5. **Generic outreach to all hot leads** — local SMBs respond better to outreach that names their specific gap ("I noticed your menu isn't visible on mobile") than generic pitches.
|
||||
6. **Ignoring chains and franchises** as Skip — sometimes the franchisee is the buyer and they have local marketing authority. Verify before skipping.
|
||||
Reference in new issue
Block a user