Problem
What it solves
Freelancers, web designers, agencies, and local marketers all need the same prospect: a business with no website. Finding them by hand on Google Maps is slow and easy to lose track of. NoSite scans a niche-and-location search, flags the businesses without a website, and turns them into a managed list of leads.
Main features
Feature set
- One-click Google Maps scanning that auto-scrolls the results and captures ~120 businesses per search.
- Configurable scan targets from 20 to 1000 businesses, stackable across map areas, with duplicate protection.
- Detects “no website” from Maps result data rather than fragile screen scraping.
- Mini lead manager with search, filtering, sorting, editable notes, outreach statuses, CSV export, and JSON backup/restore.
Build
Extension engineering
- Content scripts orchestrate the scan flow on Google Maps pages.
- A MAIN-world injected sniffer intercepts and parses Google Maps result data.
- A service worker uses
chrome.webRequest to observe Maps result traffic at the network level, staying reliable when Google changes how results load. - Leads stay private in
chrome.storage.local; anonymous licensing/device state lives in chrome.storage.sync.
Backend
Licensing & billing
- Serverless API endpoints handle plan checks, scan counting, checkout sessions, billing-portal redirects, and verified Stripe webhooks.
- Stripe Checkout runs Premium subscriptions; the Stripe customer portal handles invoices, cards, and cancellation.
- Supabase stores anonymous device records, free-scan usage, Stripe customer IDs, and subscription status.
- The extension holds no Stripe secrets — it only sends an anonymous device token for plan checks.
Reliability
Built to survive change
Google Maps markup and response structures shift constantly, so parsing is defensive by design with layered fallbacks. Live progress indicators, scan-state persistence, error handling, and recovery paths for cached or stale results keep a long scan trustworthy from start to CSV.
Tech used
Stack
JavaScript, HTML, and CSS on Chrome Manifest V3 — content scripts, a MAIN-world sniffer, a chrome.webRequest service worker, and chrome.storage. Billing runs on serverless API endpoints with Stripe Checkout, the Stripe customer portal, verified webhooks, and Supabase.