Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Deegan4/iScrapper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Lead Scraper Pro

Native macOS lead-gen for freelance web designers who pitch local businesses

Scrapes local businesses, ranks them by website weakness Γ— traction, crawls each site for emails, drafts personalized cold-email sequences with on-device Apple Intelligence, sends through your own Mail.app, auto-pauses on reply, tracks A/B performance per copywriting framework.

100% local. No SaaS subscription. No API keys for sending. Your domain reputation, your data.


macOS 26+ Swift SwiftUI + Liquid Glass Apple Intelligence License

Buy Me a Coffee


Main window β€” 25 leads, Liquid Glass UI, AI-generated pain signals + hooks visible in the Inspector


Why this exists

Most lead-gen tools are $400/month SaaS. They leak your data to their servers. Their AI writes cold emails that sound like ChatGPT. Their sender pools share IP reputation with thousands of strangers, so your deliverability tanks the first time someone else gets reported.

This is a native Mac app. Runs locally. Costs nothing to operate. Uses Apple Intelligence on-device so the AI never leaves your machine. Sends through your own Mail.app so DKIM/SPF align to your domain, not a shared pool.

Built by an ex-HVAC tech who switched to coding β€” so the AI knows how to talk to the small-business operators you're actually pitching.

Quick start

# 1. Generate the .xcodeproj
cd LeadScraperMac && xcodegen generate

# 2. Open in Xcode 26+ and run (⌘R)
open LeadScraperMac.xcodeproj

For the full setup (Apple Intelligence, Mail.app, Python backend), see dist/SETUP-GUIDE.md.

To cut a notarized release: see dist/README.md. To populate the app with mock data for demos:

python3 dist/generate-mock-data.py

Features

πŸ”Ž Scraping

  • 50+ industries pre-configured across 7 categories (Health, Home Services, Professional, Auto, Personal Care, Food, Retail)
  • Categorized industry picker β€” pick from a structured menu or type any free-form industry; the scraper resolves it via OSM tags + fuzzy matching
  • County-based bounding boxes for fast OpenStreetMap queries (Florida counties pre-mapped, easy to add more)
  • Free by default β€” no API tokens required for OSM; optional Apify API token for Google Maps fallback if you want richer data

🎯 Lead ranking

  • Trust-weighted scoring algorithm combines website weakness with business traction (rating Γ— log(reviews)) plus bonuses for phone / pain signal / outreach hook
  • Color-coded scores in the table β€” red β‰₯80, orange β‰₯50, yellow β‰₯20 β€” so the buy-today leads surface at the top automatically
  • Five filter chips (All / No site / Bad / Okay / Good) + sortable columns + search

πŸ“§ Email crawler

  • Tries 9 common contact paths per site (/, /contact, /about, /get-in-touch, /team, etc.) in parallel with short timeouts
  • Decodes Cloudflare email-protection (XOR cipher) so addresses hidden behind data-cfemail= blobs are extracted
  • De-obfuscates common evasions (info [at] foo [dot] com, info(at)foo(dot)com, info AT foo DOT com)
  • Scoring system: mailto: +50, CF-protected +30, apex-domain match +20, role-prefix +10, spam-trap βˆ’100 β€” best score wins
  • MX-validated role-address inference as final fallback β€” [email protected] if the domain has working MX

πŸ€– AI email drafting

  • On-device Apple Intelligence via Foundation Models (zero API cost, no data leaves your Mac)
  • Five copywriting frameworks the model rotates through for A/B testing: PAS, Question Hook, Pattern Interrupt, Numbers Hook, 3Cs
  • @Generable-constrained schema with five fields: subject, specific observation, body, ask, P.S. β€” each with strict word limits enforced at the decode layer
  • Personal style guide (EmailStyleGuide.swift) β€” five lines you write that shape every email's voice. The 5-min edit that 10x's reply rates.

AI-drafted email streaming live β€” subject, specific observation, body, ask, and P.S. all on screen

πŸ“€ 3-step sequences with auto-send

  • Drip campaigns (Day 0 cold + Day 3 nudge + Day 7 final) drafted in one batch per lead
  • Sent through your Mail.app via AppleScript β€” your account, your IP, your domain. No SMTP setup. No API keys.
  • Auto-pause on reply β€” ReplyDetector polls Mail.app inbox every 60s, intersects sender addresses with active recipients, pauses matching sequence and posts a macOS notification
  • Bulk drafting: select N leads β†’ βŒ₯⌘S β†’ AI drafts all sequences in parallel with auto-rotated hook frameworks (true A/B)
  • A/B stats: reply rate per hook framework, real data after ~30 sends so you know which voice works for your niche

πŸ“ž AI call scripts

  • For prospects with no email, generate a phone pitch with five sections: opener, pain mention, value prop, ask, and an "if-they-say-email-me" fallback line
  • One-tap Call Now button opens tel: directly

⏰ Operations

  • Recurring scheduled scraping β€” auto-scrape dentists every Monday at 8am, wake up to fresh pipeline
  • Follow-up reminders via UserNotifications β€” set 1d / 3d / 1w / 2w follow-ups with action buttons on the notification (Snooze / Mark Won / Mark Lost)
  • MenuBarExtra HUD β€” pulsing bolt icon showing hot-lead count + upcoming reminders + next scheduled scrape, even with main window closed

🎨 Native macOS feel

  • Liquid Glass material system throughout (iOS 26 / macOS Tahoe) with proper Regular variant adherence β€” no glass-on-glass nesting, hierarchical SF Symbol rendering, scroll edge effects on the Table
  • NavigationSplitView with sidebar (runs) + Table + Inspector
  • Hierarchical SF Symbols with .symbolEffect(.pulse) and .variableColor.iterative during long-running ops
  • @Observable macro throughout for fine-grained state updates

Architecture

Two pieces talking via JSON:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   spawns        β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  LeadScraperMac (SwiftUI)    β”‚ ──────────────▢ β”‚  run.py (Python)       β”‚
β”‚                              β”‚                 β”‚  β€’ OSM Overpass query  β”‚
β”‚  β€’ NavigationSplitView UI    β”‚                 β”‚  β€’ Apify fallback      β”‚
β”‚  β€’ @Observable state stores  β”‚                 β”‚  β€’ Site-quality check  β”‚
β”‚  β€’ AppleScript β†’ Mail.app    β”‚                 β”‚  β€’ Anthropic for hooks β”‚
β”‚  β€’ Foundation Models AI      β”‚                 β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                             β”‚
               β”‚                                             β”‚
               β–Ό polls every 3s                              β–Ό writes
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  dashboard/public/runs/ β€” latest.json, index.json,    β”‚
       β”‚  <run_id>.json β€” the source of truth                  β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • LeadScraperMac/ β€” SwiftUI macOS app (the UI you use)
  • Python scraper backend in the sibling repo at Deegan4/agentic-workflows β€” spawned as a subprocess, writes JSON to dashboard/public/runs/

The Mac app polls the runs folder every 3 seconds and reflects new scrapes immediately. No FSEvents, no IPC, no headache.

New Scrape sheet β€” categorized industry picker with 50+ options + county selector + min results stepper


How it compares

Lead Scraper Pro Apollo / Hunter / Snov Smartlead / Instantly
Cost One-time $79 $99–$400 / mo $49–$200 / mo
Data lives Your Mac Their servers Their servers
AI drafting On-device (free) OpenAI behind a wrapper Cloud LLM
Sender Your Mail.app (your IP, your DKIM) Their shared pool Their shared pool
Source code Open + forkable Closed SaaS Closed SaaS
Works offline βœ… (except scrape itself) ❌ ❌
Privacy Nothing leaves device All your leads on their DB All your leads on their DB
Customizable voice 5-line edit, recompile Limited template fields Limited template fields

The trade-off: this app only runs on macOS 26+ with Apple Silicon. The SaaS tools run anywhere. If you're on a non-Mac team, the SaaS options are your only choice.


Requirements

  • Apple Silicon Mac (M1, M2, M3, M4, or newer) β€” Apple Intelligence is Apple Silicon only. Intel Macs can launch the app for the scrape/sequence features but AI drafting is gated.
  • macOS 26 (Tahoe) or later
  • 8 GB RAM minimum (Apple Intelligence requirement)
  • Python 3.10+ β€” usually pre-installed on modern Macs
  • Mail.app set as default mail client (System Settings β†’ General)
  • Anthropic API key (free $5 credit on signup) β€” used by the Python scraper to generate pain signals + outreach hooks per lead

FAQ

Do I need any paid API subscriptions?

Only one: a one-time Anthropic API key (used by the scraper backend to write pain signals per lead). They give you $5 free on signup β€” enough for ~2,500 leads. After that, ~$0.002/lead.

No OpenAI bill. No Apify required (free OpenStreetMap by default). No Mail-send API (your Mail.app handles delivery).

Why Mac-only? Why not a SaaS / web app?

Three reasons:

  1. Privacy β€” local processing means your leads, your contacts, and your email drafts never leave your machine. SaaS tools store everything on their servers.
  2. Sender reputation β€” sending through your own Mail.app uses your domain's DKIM/SPF. SaaS sender pools share IPs with thousands of strangers; one bad actor tanks deliverability for everyone.
  3. Cost β€” Apple Intelligence is free on-device. Running the same AI through OpenAI/Anthropic at scale would be $100+/mo per user.

If you're on Windows or Linux, this app won't help β€” the SaaS alternatives are your only path.

How do reply rates compare to generic cold-email tools?

Generic AI templates from Hunter/Apollo's drafting features land 1–3% reply rates because every prospect gets variations of the same "I noticed your business…" opening.

After personalizing EmailStyleGuide.swift with your voice + a specific credibility hook, expect 5–10%. The @Generable schema forces a specific observation about each lead (not generic flattery) and a P.S. line (the most-read line in any cold email).

The A/B stats panel shows reply rate per hook framework so you can double down on what's working for your niche.

Can I scrape outside Florida?

Yes β€” edit workflows/lead-scraper/run.py in the sibling repo and add your county / city to the COUNTIES and CITY_BBOX dicts. Bounding boxes from boundingbox.klokantech.com. Takes ~30 seconds per new region.

What if Apple Intelligence isn't enabled yet?

The app detects the exact reason (not-enabled / model-not-ready / device-not-eligible / region-not-supported) and shows a purple Liquid Glass card with a deep-link button straight to the right System Settings pane. One click + ~5-min model download and you're done.

If Apple Intelligence isn't available at all (Intel Mac), the AI features show a graceful banner and the rest of the app (scraping, sequences via mailto: fallback, call scripts via copy-paste) still works.

How does the email crawler handle Cloudflare protection?

Cloudflare's "email protection" XOR-encodes addresses behind data-cfemail= blobs. The crawler decodes the cipher (first byte is the XOR key) and treats hits with +30 score because the site deliberately hid the address β€” strong signal it's a real, current inbox.

Cloudflare has used the same cipher since 2014. Decoding it is seven lines of Swift.


Project layout

iScrapper/
β”œβ”€β”€ LeadScraperMac/          ← SwiftUI macOS app (main project)
β”‚   β”œβ”€β”€ project.yml          ← xcodegen config
β”‚   └── LeadScraperMac/      ← Swift source files (~30 files)
β”œβ”€β”€ dashboard/               ← legacy Tauri/React dashboard (deprecated,
β”‚                              kept for reference β€” the Mac app replaces it)
β”œβ”€β”€ dist/                    ← release pipeline + setup guide + mock data
β”‚   β”œβ”€β”€ package-and-notarize.sh
β”‚   β”œβ”€β”€ SETUP-GUIDE.md
β”‚   β”œβ”€β”€ generate-mock-data.py
β”‚   └── capture-screenshots.sh
└── docs/
    └── screenshots/         ← README images

Sibling repo (Python scraper backend): Deegan4/agentic-workflows


Selling vs forking

The source is open β€” clone, build, customize, fork. Forever free if you're willing to:

  • Pay $99/year for an Apple Developer ID to sign + notarize your own builds
  • Spend an afternoon following dist/SETUP-GUIDE.md
  • Edit EmailStyleGuide.swift with your own voice
  • Maintain the Python scraper backend separately

The polished bundle is paid at buymeacoffee.com/Deegan4:

  • Pre-notarized .app (Gatekeeper-accepted, no warnings on first launch)
  • Python backend + one-shot installer
  • 12-section setup PDF with screenshots
  • EmailStyleGuide template with worked examples
  • 30 days of direct founder support

One closed $1500 web-design client pays back the bundle 19 times over.


License

Source available. Personal and educational use is free. Commercial redistribution of the binary requires a license β€” buy the bundle at buymeacoffee.com/Deegan4 or contact for terms.

See LICENSE for the full text (TBD; treat as "all rights reserved, ask for commercial use" until then).


Project guidance for Claude Code

Architecture notes for AI assistants working in this repo: see CLAUDE.md.

About

Native macOS lead-scraper for freelance web designers. Scrapes local businesses, drafts cold emails with on-device Apple Intelligence, sends through your own Mail.app, auto-pauses on reply, tracks A/B per copywriting framework.

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors