Pando Cleaning Solutions had a website that could not be found. We rebuilt it as forty-four pages, one for every service, every city and every question a customer types before booking, on the technical SEO foundation the old site never had.
The old Pando site was not broken. Nothing on it was visibly wrong. It simply could not be found, and it gave the business no way to change that, which for a cleaning company in a market this crowded amounts to the same problem.
Jacksonville cleaning is not an empty search market. There are established local companies with years of history, and franchise operators with budgets to bid and content teams to publish. That is the context this work was built for, and it is why the structure mattered more than the polish.
What wasn't there
The clearest way to describe the old site is by what was missing. The whole business lived on one page. Services, pricing, why us, service area and contact were sections you scrolled past on a single long document, so every search the business could serve pointed at the same URL.
There was no SEO layer of any kind. No meta descriptions. No Open Graph tags, so a link shared anywhere showed up bare. No canonical tags, no robots.txt, no sitemap. The page title was the only piece of SEO on the entire site. There was also no way to publish anything new, no blog and no mechanism to add one, so there was nothing that would build search traffic over months instead of paying for attention every week.
And there was a bug in the first thing every visitor saw. The homepage headline read “Better placesstart here.” The space was missing.
Forty-four pages, each answering one thing
A homepage, a services overview and four dedicated service pages: standard and maintenance cleaning, deep cleaning, move-in and move-out, commercial. A pricing page. A service areas overview with ten individual city pages. A blog with ten posts. About and contact.
Underneath that sits the technical SEO the old site had none of: meta titles and descriptions on every page, Open Graph tags with generated images, canonical tags, structured data, a sitemap and a robots.txt. We also added llms.txt, a machine-readable summary aimed at AI answer engines, which most small business sites still do not have. A growing share of “who cleans houses in Jacksonville” questions now get answered inside an assistant rather than on a results page.
The ten city pages
Every local service business wants a page for each city it serves, and the obvious way to build them is to write one page and swap the city name. Google penalises exactly that. The pattern has a name, doorway pages, and the risk is not theoretical.
So each of the ten was written as a real page. What the housing is like there. What those customers actually book. What the jobs tend to involve. All of it in the client's own voice, drawn from how they talk about the work rather than from a map. The test we used was simple: take the city name out, and if the page still reads like it could be about anywhere, rewrite it. Several were rewritten.
Putting the price in plain view
Early drafts had pricing tucked inside expandable cards, which linked to another page, which took another click to show a number. Three interactions to answer the one question every visitor arrives with.
We flattened all of it. The pricing page now shows full price tables, every checklist and every add-on, visible the moment it loads. Cleaning is a price-sensitive purchase, and making someone work for a number reads as having something to hide. The people who bounce at that point are the ones who were closest to booking.
A blog built to catch the question before the booking
The ten posts run 800 to 1,200 words each and are written for Jacksonville rather than for cleaning in general: move-out checklists, how often a deep clean is actually needed, Florida humidity and mold, what to ask before hiring a cleaner. They exist to catch the questions people type before they are ready to book.
Around all of it sits a design system built for this brand: a sage green, deep pine and navy palette, real photography throughout, each of the ten blog covers matched to its content rather than dropped in as stock, and a custom logo mark cleaned up from their existing brand asset.
Where it stands
The site is live and indexing. Pages are being crawled and it has started to rank, but it launched recently enough that traffic figures are something the next few months will measure, not this one.
The blog and the city pages are the part that compounds. They were built to gain ground over months, and early indexing tells us the city pages are being read as distinct content rather than near-duplicates, which was the entire point of writing them one at a time.
Content and pricing run through a CMS, so the client can change a price or publish a post without touching code or waiting on us. The old site was not broken, it just could not be found. The new one gives every service, every city and every question a customer might type a page of its own. In a market this competitive, that is the part that keeps working after launch day.