Luca Pastorello

Work / Perrone Pest & Green

Perrone Pest & Green

A one-person business with a paper card and nothing online gets a site built to be found on Google and to be called from in one tap.

In short

Problem
A pest-control and tree-care business in Gaeta had no website, no Google profile, no social page. For its searches, Google’s first page was almost all aggregator portals.
Decision
No WordPress, no forms, no prices. A static site with one page per service and one per town, where every page ends in a phone call or a WhatsApp message.
Result
Live after about five weeks of spare time. Lighthouse 100 / 100 / 100 / 100 on mobile and desktop. The only running cost is the domain names, about €11 a year each.

At a glance

For
A pest-control and tree-care business in Gaeta
What changed
From no online presence to a live site people can call from
My part
Everything: research, brand audit, specification, build with Claude Code, QA
Stack
  • Astro
  • CSS
  • Cloudflare Pages
  • Git

No client-side JavaScript

When
August–September 2026 · about five weeks, in spare time
Links
The home page at 1280 and 390, September 2026. · perronepestgreen.it

Context

A one-person business with two branches, pest control and tree care, run by a graduate in animal production and food safety. The owner wanted one path: Google search, then a call or a WhatsApp message, then a deal. The budget was the minimum possible. I did everything, working with Claude.

  1. Domain and email
  2. Google Business Profile
  3. Business card and offline channels
  4. Gathering materials
  5. Building the site
  6. Going live and technical SEO
  7. Ongoing growth
The seven-phase roadmap, written on day one, before any design. · the project roadmap, 18 August 2026

Contents

Problem

There was nothing to redesign: a paper business card and no website, Google profile or social page. Searching “disinfestazioni” plus Gaeta, Formia, Fondi or Itri returned almost only aggregator portals; the one established local competitor showed no reviews, no prices and no WhatsApp. Fondi, Itri, Sperlonga and Terracina had no strong local business online at all. Whoever arrived first with a real site would take the area.

Open full size: The business card, numbered where the four problems are: 1 on the email address, blurred here, 2 on the phone number, 3 on the line of services, 4 on the empty foot of the card
  1. The email belongs to another business
  2. No website, no WhatsApp
  3. Two services missing: rodent control and sanitising
  4. No call to action
The audit of the only thing the business had: its card. · the research notes, 18 August 2026

Contents

Exploration

Three domain names, written down with reasons. The keyword-first one was the easiest to say on the phone. The owner did not want to be known only for pest control, so we tried an acronym, which nobody could read aloud. The third kept the brand and stayed pronounceable. The domain name barely matters for ranking today, so this was his branding decision, with one rule kept: a single canonical domain, never changed. Two keyword domains were registered as well and redirect to it. The positioning came from the research: the graduate technician from your area, open where competitors show nothing.

  1. perronedisinfestazioni.it

    keyword-first

    for
    The easiest to say on the phone
    against
    Known only for pest control
  2. perronepgs.it

    brand-first, acronym

    for
    Not only pest control
    against
    Nobody can read it aloud
  3. perronepestgreen.it Chosen

    brand-first, spelled out

    for
    Kept the brand and stayed pronounceable

He chose perronepestgreen.it: brand-first, but you can say it on the phone. Keyword-first tied him to one branch; the acronym was unreadable.

Three names, one choice, and why. · the research notes

Contents

Solution

The key decision

Every page ends in a call.

Principle: Don’t make me think — one obvious next step on every page (Steve Krug, Don’t Make Me Think).

No prices and no forms: the people who need this service are between 35 and 70, often in an emergency, and they call. So every page ends in “free inspection and quote”, a phone number and WhatsApp, and on a phone the call bar is always on screen. Real opening hours instead of a “24/7” promise. One page per service and one per town, each written for that town so that no two read alike.

A service page at 390, with the call bar. · perronepestgreen.it/servizi/disinfestazione-blatte

Contents

Build

The palette comes from the business card and was checked against WCAG with a script before any page existed. Gold on white came out at 2.4:1, so gold is decoration only. The usual white text on WhatsApp green came out at 1.98:1, so the button uses dark text at 8.0:1. Type is the system font stack: no font files, no extra requests, no layout shift, and body text never below 17 px because many customers are older. Four documents were written before the code: operating rules, specification, content, deployment. Claude Code built from those. The main branch is production, so every change goes through a branch, a pull request and a preview, and a hook blocks direct pushes.

Tokens with their contrast ratios, from the specification.
Pair Ratio Use
white / cream on forest green 12.2 / 11.3:1 text on dark sections
ink on cream / white 14.7:1 body text
gold on forest green 5.1:1 details and headings on a dark ground
white on mid green 5.05:1 the call button
forest green on WhatsApp green 6.2:1 the WhatsApp button: dark text and icon, not white
white on WhatsApp green 1.98:1 rejected
gold on white / cream 2.4:1 rejected for text: borders and decoration only
Tokens with their contrast ratios, from the specification. · the specification

What the AI did

  • The whole site, from scratch. Static Astro, about twenty pages: home, services, town pages, contacts and privacy. Every page has its own data for Google (title, description, schema.org) and the Call and WhatsApp buttons with the message already written. The town pages have different content for each place, so as not to be penalised as copy-paste pages. In production Lighthouse gives 100 on mobile on all four scores.
  • Going live. The deploy on Cloudflare Pages and the main domain, perronepestgreen.it. The www and the two secondary domains redirect there with a 301. Previews are kept out of Google, and the logo was rebuilt in SVG from the business cards.
  • The safeguards and the documentation. Two independent locks stop a push to main from publishing by mistake: Claude’s hook and git’s pre-push. Then STATO.md and DEPLOY.md, so that every session picks up without having to rebuild the story.

What I decided

  • Nothing goes online until I have seen it. Since 9 September the work is always on a branch, a pull request and a preview, and I do the merge. The safeguards in the AI’s third point turn this rule of mine into code.
  • The rules for photos:
    • two photos side by side always have the same height;
    • a single photo stays whole, like Fulvio pruning;
    • a photo never fills the screen: the full width on a phone, half on a tablet, a third on wide screens.
  • Gaps are designed, not suffered. That is where option B for the grids comes from: the last row widens instead of leaving a card on its own. So does the rule that I am shown a comparison whenever a human eye is needed.

The AI built the site and made it safe. I decided how it goes online and how it should look.

Measured: WhatsApp button 8.0:1 · touch targets 44 px · Lighthouse accessibility 100

Contents

Result

The specification asked for Lighthouse 95 or more on mobile, on all four scores. The live site measures 100 on all four, on mobile and desktop. Before launch, a scripted audit of every page built at the time found 18 of 18 compliant: unique title and description, canonical, one H1, valid structured data, call and WhatsApp links everywhere. No two town pages are more than 75% alike. The only running cost is three domain names on OVH, about €11 a year each; hosting, DNS and analytics are free.

Lighthouse 13.4 on the production site, 21 September 2026. Anyone can run it again.
Measure Target Measured
Performance ≥ 95 100
Accessibility ≥ 95 100
Best practices ≥ 95 100
SEO ≥ 95 100
LCP on mobile — 1.8 s
CLS — 0
blocking time — 0 ms
Lighthouse 13.4 on the production site, 21 September 2026. Anyone can run it again. · Lighthouse report

What comes next

search queries, clicks and the first calls from the site, after the first weeks of Search Console data

What I would do differently

  • Measure the clicks on the Call and WhatsApp buttons.
  • Fewer pages, truer ones.
  • Bet on recurring B2B work.
  • Register perronedisinfestazioni.it too, as a redirect, because “pest green” is hard to spell out over the phone.

Contents