lead-gen
Lead Generation Skill for Gaudon Silicone
Generate targeted prospect lists of construction industry companies (contractors, distributors, supply stores) with verified contact information. Outputs a formatted Excel spreadsheet ready for sales outreach.
Prerequisites
- Python 3 with
google-genaiandopenpyxlinstalled - Gemini API key stored in
references/credentials.md - Internet access for Google Search grounding
Command Routing
| User Says | Count | Region | Category |
|---|---|---|---|
| "find 50 leads in Texas" | 50 | Texas | all |
| "find glazing companies in CA" | 25 | California | glazing |
| "lead gen distributors nationwide" | 25 | US (all) | distributors |
| "find 100 roofing contractors in Florida" | 100 | Florida | roofing |
| "find leads" (bare) | 25 | US (all) | all |
Defaults: count=25, region="United States", category="all" Max: 100 leads per session
Workflow (4 Phases)
Phase 1: Parse User Request
Extract from the user's message:
- count: Number of leads (default 25, max 100)
- region: US state, city, or "United States" for nationwide
- category: One of the 8 target profiles or "all"
Map common terms to categories:
- "glazing", "glass" -> glazing
- "distributors", "wholesale" -> distributors
- "waterproofing", "sealing" -> waterproofing
- "window", "door" -> window_door
- "roofing", "roof" -> roofing
- "general contractor", "GC" -> general_contractor
- "supply store", "hardware" -> supply_store
- "facade", "cladding", "EIFS" -> facade
Phase 2: Research via Gemini
Run the research script:
python3 ~/.agents/skills/lead-gen/scripts/research_leads.py \
--count <N> \
--region "<region>" \
--category "<category>" \
--output /tmp/gaudon-leads.json
The script:
- Reads target profiles from
references/target-profiles.md - Calls Gemini 2.5 Flash with Google Search grounding
- Sends category-specific prompts requesting structured company data
- Batches requests across categories if "all" is selected
- Returns JSON with leads array and metadata
If the script fails (API error, rate limit), fall back to manual research:
- Use WebSearch to find companies matching the target profiles
- Use WebFetch to extract contact details from company websites
- Manually build the JSON in the same format
Phase 3: Deduplicate & Score
The research script handles this automatically:
- Normalizes company names (strips LLC, Inc, Corp, etc.)
- Deduplicates by company name, domain, and phone
- Scores completeness 0-10:
- Has email: +3
- Has phone: +2
- Has contact person: +2
- Has website: +1
- Has address: +1
- Has category: +1
- Sorts by score descending
Phase 4: Generate Excel
python3 ~/.agents/skills/lead-gen/scripts/generate_leads_xlsx.py /tmp/gaudon-leads.json
Optionally recalculate formulas (requires LibreOffice installed):
python3 ~/.agents/skills/xlsx/recalc.py ~/Desktop/gaudon-leads-<region>-<date>.xlsx
Note: If LibreOffice is not installed, skip recalc. Formulas auto-calculate when opened in Excel or Google Sheets.
Output file: ~/Desktop/gaudon-leads-<region>-<date>.xlsx
Tell the user:
- Total leads found
- Breakdown by category
- Average completeness score
- File location
- Suggest next steps (review, filter by score, start outreach via gmail skill)
Safety Rules
- Public info only: Only collect publicly available business contact information
- No login scraping: Never scrape behind authentication walls
- Cap at 100: Maximum 100 leads per session to avoid API abuse
- No personal data: Focus on business contacts, not personal information
- Respect robots.txt: Do not bypass website access restrictions
Integration with Other Skills
- gmail: Use outreach templates from
references/outreach-templates.mdto draft cold emails - xlsx: Use recalc.py to verify formula integrity in generated spreadsheets
- gcal: Schedule follow-up reminders for outreach campaigns
More from theaayushstha1/agentic-skills
twitter-brief
>
3gmail
>
2notebook
>
2gcal
>
2daily-brief
Morning dashboard that aggregates today's schedule, unread emails, upcoming deadlines, job search status, Twitter bookmarks, and AI news into a fast, structured daily summary. Use when the user says 'daily brief', 'morning brief', 'what\\'s on my plate', 'start my day', 'brief me', 'daily summary', 'morning update', or wants an overview of their day.
2quick-note
>
1