Businesses with no website.Found, called, online.
marsetto·tool is the console that scans Google Maps for local businesses without a site, puts them on your call list, and generates, publishes and bills their website — in one flow.
Sweep a city for businesses that have no website.
Pick a trade and a place. The tool geocodes it, lays a radial grid around the centre and scans it cell by cell, starting from the middle. It keeps only businesses without a site of their own. A Facebook page doesn't count as one.
- Google Maps data via Outscraper
- radial grid · centre-first
- place_id dedup
- stops when an area runs dry
Every lead lands on a card you can dial.
Rating, category, address and the lead's local clock, so you know they're open before you ring. One tap dials or opens WhatsApp. Owner not in? Schedule a callback and the lead comes back on your list half an hour before.
- open / closed right now
- callbacks
- do-not-call register check
They said “show me”. One click.
Accetta → Genera starts everything: the business's social profiles get scraped, then the site is generated, published and health-checked. The accept is atomic. Two clicks, two tabs or two operators still start exactly one run.
- compare-and-set accept
- scrape → generate → publish
- multi-operator safe
A real site, written from their real data.
One model call returns a site.json with copy, sections, menu and style, based on the Maps record and their Facebook, Instagram and TripAdvisor pages. The output is checked against a schema, and the call is retried once if it comes back broken. Photos come from the place itself, with stock shots to fill the gaps.
- OpenRouter · your model
- 6 template styles
- schema-validated
- cost tracked per site
Online means it answered.
Publishing is a database upsert into a shared runtime: no build, no clone, no npm install. Media goes to R2. The lead only turns ONLINE once a real GET /api/health returns 200, not just because a deploy command exited cleanly.
- Cloudflare Workers · D1 · R2
- seconds, not minutes
- health-checked
Live before the second call.
The site runs on its own subdomain while the owner is still thinking it over. Send the link on WhatsApp with one tap, read them their /admin password so they can edit it themselves, and print a QR menu for their tables.
- own subdomain
- unique /admin login per site
- QR menu sheet
From “yes” to paying customer, with no data entry.
Mark as Customer creates a checkout link on your Stripe account, monthly or annual with free months. The customer enters their own billing details and pays. Then the webhook registers their domain, moves the site onto it and marks them CUSTOMER. If they stop paying, the site suspends itself and comes back once they pay.
- your Stripe · your payouts
- INWX domain on Cloudflare DNS
- auto suspend / reactivate
- contract PDF
One runtime. Every site.
Every site is a set of rows in one D1, served by one Worker pair. A fleet check tests every live site from the outside. Content migrations diff each site first, write with compare-and-set, take a backup, and skip any site whose owner has edited it.
- fleet-check
- fleet-migrate · dry run first
- owner edits never overwritten
- eject to dedicated for custom code