marsetto·tool Request access
◢ For web agencies of one

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.

01 / 08 · Discovery

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
02 / 08 · Calls

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
03 / 08 · Accept

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
04 / 08 · Generate

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
05 / 08 · Publish

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
06 / 08 · Online

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
07 / 08 · Customers

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
08 / 08 · Fleet

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
marsetto·tool

Lead discovery & automated website generation

  1. Discovery
  2. 01Calls
  3. 02In Progress
  4. 03Online
  5. 04Customers
Bring your own keys

Your accounts. Your costs. Your margin.

Every operator connects their own providers under Settings → Le mie chiavi. Secrets are stored encrypted (AES-256-GCM), and every euro a site costs shows up on that site's own cost tab.

Discovery

Outscraper

Google Maps records, billed per record. The grid search stops early when an area runs dry, so you don't pay for empty cells.

Generation

OpenRouter

One call per site, with any model your key allows. The cost comes from the provider's own usage report, not an estimate.

Photos

Pexels · Google Places

The place's own photos first, then stock shots picked from a query written for that business.

Hosting

Cloudflare

Workers, D1, R2 and DNS. The whole fleet shares one runtime, and a site can move to its own dedicated setup when it needs custom code.

Billing

Stripe

Subscriptions paid straight into your account, with a personal webhook. Suspend and reactivate follow the payment status.

Domains

INWX

Real domains registered to the customer, with prices shown for the first year and for renewals. Try the whole flow for free in the sandbox first.

Also in the console

The parts you only notice when they're missing.

Autopilot

Suggests the next city × trade to scan, spaced out so searches don't overlap. You confirm, and it works through the queue.

Registro Opposizioni

Checks lead numbers against Italy's do-not-call register, and keeps a record of every check as your legal defence.

Multi-operator

Passwordless login with passkeys or an authenticator app. Leads are shared out round-robin, and nobody calls the same business twice.

Live transcripts

Every scrape, model call, upload and DNS change streams live while it runs and stays saved afterwards.

Owner reports

A public link with visits and top pages to send the customer. Handy when it's time to renew.

Phone launcher

On a phone the console turns into a home screen with live badges, so you can work the list between appointments.

◢ Request access

Run a web agency
from one console.

marsetto·tool is invite-only while it's in use with a small group of operators. Tell us where you work and what you sell, and we'll get back to you.

Request access →