← All Case Studies
Case Study

BroomShine — Bilingual Site, Local SEO & AEO

Bilingual Marketing Site · Local SEO & AEO Visit live site — BroomShineServices.com →

A cleaning company that was hard to find online now has a bilingual site built to be found — on Google and in AI search. I designed and built BroomShine’s English/Spanish marketing site: eleven service pages, online quote requests, a full local-SEO and answer-engine foundation, and a Google rating that updates itself instead of going stale in the markup.

Bilingual Site

A fast English/Spanish marketing site — eleven service pages, service-area pages, pricing, FAQ and reviews, each with its own Spanish counterpart

Quote Requests

An online quote form that routes straight to the owner’s inbox, so an enquiry arrives as a lead instead of a missed call

SEO & AEO

Geo-targeted content, business and service structured data, sitemap, robots and an llms.txt — so both search engines and answer engines can read the business accurately

Live Google Rating

The star rating and review count are fetched from Google’s Places API through a serverless proxy, so the number on the page is always the real one

Found on Google & in AI Search

A clean website isn’t enough — it has to be found. I gave the site a full local-SEO foundation (geo-targeted content, rich business and service structured data, sitemap, and social cards) plus proper English/Spanish bilingual SEO so it reaches both audiences. I also made it AI-search ready with an llms.txt, so when someone asks ChatGPT or Google’s AI for a cleaner in the area, the business can be surfaced and cited accurately.

A Rating That Can’t Go Stale

Star ratings typed into a page are wrong the moment the next review lands, and every page carrying one has to be edited by hand. I replaced that with a single serverless function that proxies Google’s Places API — the API key stays server-side, every rating slot on the site reads from one live source, and each page ships a neutral placeholder so nothing breaks or misreports if the call fails.

Also Built — and Later Retired

An earlier phase of this engagement added a custom scheduling stack: owner and crew portals, a booking and services catalog, and a photo-to-schedule importer that read a paper roster with Claude’s vision model. It shipped, and it was not adopted — the production data showed the last schedule written in May 2026 and the last sign-in in June. In September 2026 I removed the whole subsystem, roughly 32,000 lines, and moved the business onto a shared calendar instead. Keeping it would have meant maintaining, securing and paying for software nobody opened. None of it is part of the live site today, and the decommissioning included exporting and verifying the data, then shutting the database down.

JavaScript Netlify Functions Google Places API Online Quote Requests Local SEO AEO / llms.txt Bilingual SEO (EN/ES) Schema.org / JSON-LD Content Security Policy Playwright

Have a business that needs to be found — on Google and in AI search?

Get in Touch →