GLVitr'Clean: a local cleaning business, findable town by town
GLVitr'Clean cleans windows, terraces, shutters, façades, solar panels and homes in Essonne and Seine-et-Marne. PRIONATION built its site as a static export in French and English — 224 pages, most of them answering “[service] in [town]” — with a quote form on an edge function, real before-and-after photos of client jobs, and a compliance check that only lets the 50% tax-credit claim appear where it is actually allowed. Lighthouse mobile scores 97–99 for performance and 100 for accessibility, best practices and SEO.
GLVitr'Clean is a multi-service cleaning company based in Linas, in Essonne, working for households and businesses in Essonne and Seine-et-Marne: windows, terraces, shutters and doors, façades, solar panels, bins and home cleaning. The site is live at glvitr-clean.com.
This page covers how the site is structured for local search, how quote requests reach the team, how the tax-credit claim is kept legally safe, and what is still waiting on the client. Lead and traffic figures will be published once they are measured.
The bottleneck: being found in the next town
A local cleaning business is chosen by people searching for a service where they live — “nettoyage de vitres Arpajon”, “nettoyage terrasse Brétigny”. A single homepage cannot answer that for every town and every service, and generic pages with the town name swapped are exactly what search engines learn to ignore.
So the site was built as a grid of real answers: every service, every commune served, and every combination of the two, each with its own local paragraph.
224 pages, none of them invented
The site is a Next.js static export in French and English: 112 pages in each language. That is a homepage, service and zone hubs, seven service pages, twelve commune pages in Essonne, 84 service-by-commune pages, and pages for the tax credit, professional clients, completed jobs, the quote form and the legal notices.
The client also serves Seine-et-Marne, but has not yet named the towns there, so no Seine-et-Marne commune pages exist. Inventing them would have meant thin pages and claims nobody had confirmed. They will be added when the client names them.
A quote form on an edge function
A static export has no server, and the email provider's API key must never reach the browser. The quote form therefore posts to a separate Vercel Edge Function that sends the request through Resend to the team's three addresses, then sends the customer a confirmation — only if the team's copy went out.
The function checks the request origin, rate-limits per IP address and per recipient, rejects bodies over 16 KB and carries a honeypot field. After submitting, the customer can open WhatsApp with a pre-filled message naming the chosen service, so they can send a photo of the job straight away.
The tax credit, behind a compliance check
Household services in France can qualify for a 50% tax credit, which is a strong selling point — and a legal risk when it is claimed for services that do not qualify, since that can amount to a misleading commercial practice. On this site, eligibility is a data field on each service, and the 50% figure renders only on the four eligible services; façades, solar panels, bins and business services never show it.
A compliance-check script fails the build if the claim leaks onto the wrong page, and the official credential stays in pending mode until the client's registration number exists. The marketing claim is only as strong as the paperwork behind it.
Real jobs, labelled stock
The before-and-after section uses three real client jobs — a tiled terrace, a veranda glass roof and a paved terrace on video — with a draggable comparison slider. Where real photos do not exist yet, in the hero, the about section and the contact block, the stock images are labelled on screen as illustrations, and they will be replaced as the client's photo archive arrives.
The “write to us” panel is deliberately not a chat widget. It is a static panel offering a phone call, WhatsApp or the form, because a hosted chat would add cookies, does not fit a static export, and would promise live answers that nobody is there to give.
Fast, valid and readable
Lighthouse on mobile scores 97 to 99 for performance and 100 for accessibility, best practices and SEO on every page type measured. Every page has structured data — a home-services business, services with their area served, FAQ answers and breadcrumbs — plus French, English and default language alternates, an llms.txt file and IndexNow pings.
The domain move showed why checks matter. A stale environment variable had kept every canonical URL on the old domain; after the fix — the site URL is now hard-coded and verified by a host-check script — a live audit on 5 October 2026 counted 224 of 224 pages valid on the new domain, up from zero.
What is still waiting on the client
Review markup stays dormant until verified reviews exist, the professional-insurance details are marked “to be completed”, and no prices are published until the client sets them. The Seine-et-Marne towns and the full photo archive are the other open items.
None of these gaps is papered over. Each one shows as pending or simply does not render, so the site never claims more than the business can back.
The transferable lesson
For a local service business, the site is mostly structure: the right page for every service in every town, fast and valid, with one clear way to ask for a quote. That structure is what turns a small business into a findable one.
And claims that carry legal weight — a tax credit, a certification, a review score — belong in data with a check on them, not in copy. A build that fails when a claim leaks is cheaper than a complaint.
Frequently asked questions
What did PRIONATION build for GLVitr'Clean?
The full bilingual website at glvitr-clean.com: 224 pages for services and communes, the quote form on an edge function with email delivery, the before-and-after gallery, structured data, and the build checks that guard the tax-credit claim and the canonical domain.
Why so many pages for a local business?
Because customers search for a service in their town. Each service-by-commune page answers one such search with its own local content, instead of one generic page trying to rank everywhere.
How is the tax-credit claim handled?
Eligibility is stored per service and the 50% figure appears only on the four eligible services. A compliance script fails the build if it appears anywhere else, and the official credential stays pending until the client's registration number exists.
Are the photos real?
The before-and-after jobs are real client work. Stock images elsewhere are labelled as illustrations on the page and are being replaced as the client's photos arrive.
Where are the results?
Technical results are measured: Lighthouse mobile 97–99 for performance and 100 for accessibility, best practices and SEO, and 224 of 224 pages valid after the domain move. Lead and traffic figures will be published once they are measured.
Start with a Diagnostic
Two weeks. €5,000. A mapped bottleneck and a production-ready plan — with no obligation to proceed to a Build.
Start a Diagnostic →