NaughtyScrape
A lead-generation CRM that scrapes Google Maps and enriches from the web.
Selling software to coffee shops means finding coffee shops. NaughtyScrape is our lead-generation CRM: each workspace is an isolated pipeline for one product, filled by manual entry, CSV import, or scraping Google Maps through the Places API. Scraped leads are enriched by visiting the business’s website to pull e-mail addresses and social links, because Google never returns e-mail.
From there it is a normal pipeline: statuses, a timeline of calls, e-mails and notes, follow-up tasks, ownership, tags, filters and CSV export. Background jobs stream a live progress log and automatically expand searches past Google’s sixty-result cap, deduplicated by Place ID.
It is an internal tool and is not hardened for public use. It is on the register as an example of the small, sharp data tools we build in a few weeks.
- One workspace per product being sold; leads never bleed between pipelines.
- Google Maps scraping by search phrase and area, deduplicated by Place ID.
- Automatic expansion of searches past Google’s sixty-result cap.
- Website enrichment for e-mail addresses and social links, because Google never returns e-mail.
- Manual add and CSV import with a duplicate preview.
- Pipeline statuses, a timeline of calls, e-mails and notes, follow-up tasks, ownership, tags and filters.
- CSV export for mail-merge or hand-off.
| Item | Layer | Component |
|---|---|---|
| 01 | Framework | Django 6, Python 3.14 |
| 02 | Database | PostgreSQL via psycopg 3 |
| 03 | Front end | HTMX, Alpine.js, Tailwind CSS |
| 04 | Scraping | Google Places API (New) text search, background jobs with a live progress log |
| 05 | Enrichment | Fetches each business website to extract e-mail addresses and social links |
| 06 | Auth | E-mail and password with Admin and Viewer roles |
Integrations
Tell us what to build.
A web app, a mobile app, a platform, an integration nobody else wants to touch. Send the brief, we reply with questions, a scope and a price.