Lead generation system for Nomad Internet - a multi-source scraping and qualification platform designed to identify high-converting leads in rural and remote markets.
This system implements a tiered lead generation approach:
- Tier 1: High-Intent Harvesting - Reddit, Twitter real-time signals from people actively seeking help
- Tier 2: Structured Data - Property sales, job changes, business listings
- Tier 3: Monitoring - Continuous monitoring for new mentions and signals
- Multi-source scraping: Reddit, Twitter/X, real estate platforms, county records
- Signal stacking: Combines signals from multiple sources to qualify leads
- Lead scoring: BANT-style scoring (Budget, Authority, Need, Timeline)
- Deduplication: Intelligent merging of leads found across platforms
- CLI interface: Easy-to-use commands for scraping and lead management
# Clone the repository
git clone https://github.com/itsablabla/Nomad-customer-leads.git
cd Nomad-customer-leads
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -e .Copy the example environment file and configure your API credentials:
cp .env.example .envEdit .env with your settings:
# Database
DATABASE_URL=sqlite+aiosqlite:///./nomad_leads.db
# Reddit API (https://www.reddit.com/prefs/apps)
REDDIT_CLIENT_ID=your_client_id
REDDIT_CLIENT_SECRET=your_client_secret
# Twitter API (https://developer.twitter.com/)
TWITTER_BEARER_TOKEN=your_bearer_token
# Coverage Areas (comma-separated)
COVERAGE_ZIPS=80301,80302,80303
COVERAGE_COUNTIES=08013,08031nomad-leads init# Full scrape of all sources
nomad-leads scrape
# Tier 1 only (high-intent, fastest results)
nomad-leads scrape --tier 1
# Tier 2 only (structured data)
nomad-leads scrape --tier 2
# Specific source
nomad-leads scrape --source reddit# Start continuous monitoring
nomad-leads monitor
# Monitor specific sources
nomad-leads monitor --sources reddit,twitter# Show leads requiring immediate action
nomad-leads hot# Search leads
nomad-leads search "colorado"
nomad-leads search "starlink" --min-score 60
# View lead details
nomad-leads show <lead-id># Export to JSON
nomad-leads export --output leads.json
# Export hot leads to CSV
nomad-leads export --tier hot --format csv --output hot_leads.csvnomad-leads statsLeads are scored 0-100 based on:
| Category | Points | Examples |
|---|---|---|
| Budget | +20 each (max 60) | Property >$500K, Director+ title, expensive RV |
| Need | +20 each (max 60) | Active complaint, remote work dependency |
| Urgency | +30 each (max 60) | Post <48hrs, "ASAP" language, recent move |
| Authority | +15 each (max 30) | Property owner, business owner |
| Geographic | +10 each (max 20) | In coverage zone, no fiber competition |
- 2 signals: +10 points
- 3 signals: +25 points
- 4+ signals: +40 points (whale alert!)
- Hot (81-100): Call immediately
- Priority (61-80): Outreach within 24 hours
- Standard (31-60): Standard follow-up sequence
- Nurture (0-30): Add to nurture campaign
nomad-customer-leads/
├── src/
│ ├── cli/ # Command-line interface
│ ├── database/ # SQLAlchemy models and repository
│ ├── enrichment/ # Signal stacking and lead processing
│ ├── models/ # Pydantic data models
│ ├── scrapers/ # Platform-specific scrapers
│ │ ├── reddit.py
│ │ ├── twitter.py
│ │ └── realestate.py
│ ├── scoring/ # Lead scoring engine
│ └── config.py # Configuration management
├── main.py # Entry point
├── requirements.txt
└── pyproject.toml
- Monitors 20+ subreddits (Starlink, rural_internet, RVLiving, etc.)
- Uses targeted search queries for high-intent posts
- Extracts: username, location hints, provider complaints, urgency signals
- Real-time search for crisis signals
- Tracks competitor mentions and complaints
- Identifies remote workers with connectivity issues
- Template for property sale data integration
- Supports Zillow, county records, MLS data
- Identifies recent buyers in coverage areas
- Start with Tier 1 - Focus on high-intent signals first
- Layer signals - A lead with 3+ signals converts at 10x the rate
- Act fast - Leads decay 50% per week after initial signal
- Track sources - Monitor which sources produce conversions
- Deduplicate - The same person appears on multiple platforms
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black src/
ruff check src/
# Type checking
mypy src/MIT License - See LICENSE file for details.