Page one in six months, with no ad budget behind it.
WordPress build, local SEO, Core Web Vitals.

- To page one
- 6 months
- PageSpeed score
- 41 to 94
- Zip codes in the local pack
- 12
- Spent on ads
- 0
The problem
Riley Roof was buying shared leads from Angi and Thumbtack. Every lead they paid for went to two or three competitors at the same time, so the job was won on who called back fastest rather than who was best.
The website behind it was a stock template on a slow host, with no local SEO structure and barely a mention of the townships they actually served. For a business whose customers search by neighborhood, that is close to being invisible.
What I did
I rebuilt the site on WordPress with a page architecture that matched the way roofing is actually searched: a page for every township and zip code in the service area, each carrying real detail about that area rather than a swapped town name.
The Google Business Profile was rebuilt with correct categories, service boundaries and photographs from real jobs in each area. LocalBusiness and Service schema went on every page.
A small blog targeted the queries that convert rather than the ones that get traffic, starting with emergency roof repair near me. Core Web Vitals work took PageSpeed from 41 to 94, which on a site where most visitors arrive on a phone is a conversion fix as much as a ranking one.
What happened
Page one within six months, first position organically for the main service term, and local three pack presence across twelve zip codes.
The shared lead platforms were dropped entirely. Organic quote requests grew month on month from launch, and the cost per lead went from a monthly invoice to zero.
Delivered
- WordPress development
- Local SEO architecture
- Google Business Profile
- Core Web Vitals
- Schema markup
- On page SEO