LOCAL SEARCH / WEBSITE REVIEW / ATLANTA
H&C Contracting
SEO + AEO audit
A practical plan to make the right services easier to find, understand, and choose.
The biggest near-term risk is mixed business identity and location information.
Verify the market before adding more city pages.
The website lists Duluth, the Google profile description refers to Norcross, and public directories show a Norcross address and an Auburn P.O. box. Confirm which details represent the current business, then align the website, profile, and directory listings.
WORKSTREAM 01
Technical SEO and site structure
Resolve core technical and page-structure gaps first. Confirm the real market before expanding location targeting.
- 01P1 · FOUNDATION
Confirm the primary market before targeting city searches.
Decide which locations are current business locations and which are service areas; the site says Duluth, the Google description says Norcross, and directories also show an Auburn mailing address.
- 02P1 · FOUNDATION✓ IMPLEMENTED
Rewrite each page title around its page topic and verified market.
The home page title is just “HC Contracting Services”; use distinct titles for the home, About, Services, and Contact pages.
- 03P1 · FOUNDATION✓ IMPLEMENTED
Add a unique meta description to all four main pages.
None of the audited pages currently has one. Summarize the page’s actual offer and next step rather than repeating a generic slogan.
- 04P1 · FOUNDATION✓ IMPLEMENTED
Add one clear H1 to About, Services, and Contact.
The home page has an H1; those three pages do not.
- 05P1 · FOUNDATION✓ IMPLEMENTED
Fix the heading sequence.
On the home page, an H3 appears before an H2. Use headings in order so both visitors and screen readers can follow the page structure.
- 06P1 · FOUNDATION✓ IMPLEMENTED
Build a dedicated landing page for each core service:
roofing, water mitigation, storm damage restoration, and concrete. They currently share one Services page, which limits how specifically each page can answer a searcher’s needs.
- 07P1 · FOUNDATION
Make each service page specific.
Describe the actual work offered, who it is for, the process, service limits, estimate process, and relevant local coverage. The existing Services page provides a starting outline.
Implementation progress: Four service pages now include project-request guidance, related services, and service-specific estimate links. Owner review of the exact scope, process, limits, and coverage is still needed.
- 08P1 · FOUNDATION✓ IMPLEMENTED
Link each home-page service card to its own service page.
Add a clear estimate or call action on each page so visitors don’t have to return to the general Contact page.
- 09P1 · FOUNDATION
Add LocalBusiness structured data using the verified business details.
The audited pages contain no JSON-LD structured data. Include the business name, phone, website, hours, and location details that accurately apply. Google’s LocalBusiness documentation explains the supported fields and notes that markup does not guarantee a search feature.
Implementation progress: GeneralContractor and Service markup uses the site-stated name, phone, website, shared business identifier, and verified BBB sameAs profile. Hours and location details remain pending.
- 10P2 · BUILD NEXT✓ IMPLEMENTED
Connect the business entity across the site and public profiles.
Add accurate
sameAslinks to official profiles in the structured data and use the same real-world business name throughout the site.Implementation progress: The verified BBB profile is linked in business sameAs, About, and the footer. The profile matches this website and phone. Further official profile URLs remain to be confirmed.
- 11P2 · BUILD NEXT✓ IMPLEMENTED
Add visible breadcrumbs and matching BreadcrumbList markup
to service and location pages as those pages are created.
- 12P1 · FOUNDATION✓ IMPLEMENTED
Add meaningful alt text to informative images.
All images on the audited pages had empty alt text, including service images. Use concise descriptions of the image; leave purely decorative images with empty alt text.
- 13P2 · BUILD NEXT✓ IMPLEMENTED
Add explicit width and height to lazy-loaded images.
The browser flagged two images without dimensions.
- 14P2 · BUILD NEXT✓ IMPLEMENTED
Compress large images and serve modern formats
such as WebP or AVIF where supported. Preserve sharp, genuine job photos while reducing page weight.
- 15P1 · FOUNDATION✓ IMPLEMENTED
Replace insecure HTTP asset references with HTTPS.
Lighthouse found five insecure requests, including one script that the browser blocked.
- 16P2 · BUILD NEXT✓ IMPLEMENTED
Find and repair the resource returning a 404
in the homepage browser console; confirm that the intended file loads successfully or remove the stale reference.
Implementation progress: All 12 content pages and 12 referenced assets, including CSS backgrounds, passed HTTP checks on the Cloudflare preview. Homepage browser inspection confirmed all images load with no site-origin console error. Chromium CI also passes resource checks across desktop, tablet, and 320px mobile. Recheck at production cutover.
- 17P2 · BUILD NEXT✓ IMPLEMENTED
Remove or noindex the `/author/admin/` archive.
It is in the sitemap but displays a generic “Author: admin” page with no useful author information.
Implementation progress: A custom noindex 404 page replaces the unsupported 410 redirect. Local Cloudflare Pages tests confirm /author/admin/ returns 404; verify again after production cutover.
- 18P1 · FOUNDATION
Submit the working sitemap in Google Search Console.
The robots file points to
/wp-sitemap.xml, which loads. Avoid submitting/sitemap_index.xml, which currently returns a 404. - 19P2 · BUILD NEXT
Confirm one consistent canonical URL version.
Check that HTTP, HTTPS,
www, non-www, and trailing-slash variants resolve to the preferred version without creating duplicate indexable pages.Implementation progress: Live-domain checks found HTTP pages returning 200 with HTTP canonical tags. HTTPS pages use HTTPS canonicals and most www checks redirect to the apex; two www requests timed out. Configure HTTP-to-HTTPS at the edge and verify all hostname/path variants after cutover. This item remains open.
- 20P2 · BUILD NEXT✓ IMPLEMENTED
Add a semantic main-content landmark and make the skip link keyboard-accessible.
Lighthouse reported that the page has no main landmark and that its skip link is not focusable.
- 21P2 · BUILD NEXT✓ IMPLEMENTED
Fix the contrast issues flagged by Lighthouse.
Check the affected text/background combinations and make body text and calls to action easy to read.
- 22P2 · BUILD NEXT✓ IMPLEMENTED
Repair links that have no destination or accessible name.
The Facebook and Instagram icons have no
href; add the official profile URLs or remove the icons. Give image-only links an accessible name.
WORKSTREAM 02
Google Business Profile and local SEO
Make the business name, location, hours, services, and reputation details consistent wherever customers compare the company.
- 23P1 · FOUNDATION
Reconcile the business’s location and service-area information across profiles.
The website lists 2180 Satellite Blvd, Duluth; the BBB profile also lists a P.O. Box in Auburn; and HomeAdvisor lists a Norcross address. Confirm which are current and correct every directory.
Implementation progress: A source-linked directory correction register is prepared in docs/directory-corrections.md. BBB lists Duluth plus an Auburn mailing address; HomeAdvisor lists Norcross. Confirm each address's role and account ownership before submitting changes.
- 24P1 · FOUNDATION✓ IMPLEMENTED
Use one consistent real-world business name.
The Google listing says “H&C Contracting, LLC”; the site title says “HC Contracting Services.” Settle on the name customers will recognize and use it consistently in the site header, title, footer, citations, and profile. Follow Google’s business representation guidelines.
Implementation progress: The Astro site now consistently uses the verified BBB business name H&C Contracting, LLC in page copy, titles, logo labels, footer, and schema. Shared layout identity comes from src/data/business.js. External-profile consistency still needs the remaining directory work.
- 25P1 · FOUNDATION
Rewrite the Google profile description.
Its current wording calls the business “number one” and refers to Norcross, while the site centers on Duluth. Replace it with a factual description of the verified services and service area.
Implementation progress: A factual Google profile description draft is prepared in the directory correction register. It covers the four site-listed services without a superiority claim or unverified city. Confirm current services and territory, then publish through the profile account.
- 26P1 · FOUNDATION
Confirm whether the Google profile should show a street address.
The DataForSEO profile snapshot returned no street address, while the site publishes one. If customers are not served at that location, confirm that the profile is set up as a service-area business with the address hidden; follow Google’s address and service-area rules.
- 27P1 · FOUNDATION
Align business hours across the profile, site, and directories.
The Google snapshot showed Monday–Thursday 9 a.m.–6 p.m. and Saturday 9 a.m.–3 p.m., with Friday and Sunday not returned. BBB and HomeAdvisor show differing schedules. Confirm actual hours and update all sources.
Implementation progress: Current public listings disagree: BBB shows Friday closed and Saturday 9–6; HomeAdvisor shows Friday 9–6 and Saturday 10–2. Owner-confirmed hours are needed before site, schema, or profile updates.
- 28P1 · FOUNDATION
Review the profile’s categories.
The snapshot shows Roofing contractor as primary, with concrete and water/fire-damage categories also present. Keep only categories that accurately describe current core services; Google recommends using a small, specific set of categories.
- 29P1 · FOUNDATION
Reconcile the profile’s service list with the website.
The profile lists services such as gutters, skylights, attic venting, and remodeling, while the site emphasizes roofing, water mitigation, storm restoration, and concrete. Add accurate pages for active offerings or remove outdated profile entries.
- 30P1 · FOUNDATION
Set accurate service areas in the profile and show them on the site.
Confirm the cities and counties the business actually serves before publishing a list.
- 31P2 · BUILD NEXT
Link the profile to the most relevant landing page.
Use the home page or a service-specific page that matches the profile’s primary focus; track the link with UTM parameters.
- 32P2 · BUILD NEXT
Add a direct estimate or contact URL to the profile
if the current website link does not take customers straight to a useful next step.
- 33P1 · FOUNDATION
Build a consistent review-request process after completed projects.
The Google profile has 8 ratings; the first three listings returned for the Duluth roofing query had 45, 72, and 87. Ask every eligible customer at the same natural point in the job cycle.
Implementation progress: A consistent job-closeout review-request workflow is documented in docs/review-request-process.md in the draft PR. Manager adoption, the verified Google review link, and customer use remain pending.
- 34P1 · FOUNDATION
Keep review requests neutral and incentive-free.
Google prohibits rewards or discounts in exchange for reviews; see its Maps review policy.
Implementation progress: Neutral, incentive-free request and reminder templates are documented. They ask for honest feedback without rating selection. Manager adoption and actual use remain pending.
- 35P2 · BUILD NEXT
Respond to every review with a specific, professional reply.
Reference the type of work when appropriate, without inserting repetitive keywords or private customer details.
- 36P2 · BUILD NEXT
Add genuine project photos to the profile on an ongoing basis.
The profile snapshot returned 33 photos. Review the current set and prioritize recent completed work, before-and-after views, and real crew or job-site photos.
- 37P2 · BUILD NEXT
Publish occasional profile updates
for completed projects, seasonal service information, and changes in availability; keep every claim current and accurate.
- 38P1 · FOUNDATION
Track map visibility for multiple service searches and locations.
The roofing search result is one location-and-query snapshot, not a universal rank. Track a local grid for roofing, water mitigation, storm restoration, and concrete around verified service areas.
- 39P1 · FOUNDATION
Correct the public directory records that conflict.
Confirm whether the Auburn P.O. Box and Norcross address represent current locations, and remove or update any obsolete or duplicate entries.
Implementation progress: Exact address and hours discrepancies are documented with source URLs and correction steps. No directory correction has been submitted because current owner facts and account access are still required.
- 40P2 · BUILD NEXT
Audit major directory profiles for consistent details.
Review BBB, HomeAdvisor, Houzz, Angi, Facebook, Yelp, Bing Places, and Apple Business Connect; correct the business name, phone, website, address, hours, and services wherever needed.
Implementation progress: BBB, HomeAdvisor, and a potentially older Houzz listing were inspected. Houzz lists a different phone and website; ownership needs confirmation. Google current details and exact owned Angi, Facebook, Yelp, Bing, and Apple records remain unresolved or access-dependent. The register separates observations from verified company facts.
- 41P2 · BUILD NEXT
Build local links through real business relationships.
Ask suppliers, trade groups, local business associations, and project partners about relevant member or project listings; avoid bulk link purchases.
- 42P2 · BUILD NEXT
Review the backlink sources before taking action.
DataForSEO returned 50 referring domains and a backlink spam score of 56. Manually inspect the linking sites; do not remove or disavow links based on that score alone.
WORKSTREAM 03
Content, trust, and answer-engine readiness
Build useful answers from verified work, clear policies, first-hand expertise, and original project proof.
- 43P1 · FOUNDATION
Create a project portfolio with real completed work.
Organize it by service, and include the location, customer problem, scope, materials, and finished result where the customer permits.
Implementation progress: Public Houzz project galleries were found as evidence leads. Account ownership, original photos, first-hand project details, and reuse permission must be confirmed before building the portfolio.
- 44P2 · BUILD NEXT
Publish at least one detailed case study for each major service.
Explain the situation, assessment, work completed, timeline, and outcome using first-hand details and original photos.
- 45P2 · BUILD NEXT
Identify the people behind the company.
Add an owner or team section with relevant experience and real project responsibilities; the current About page is mostly general claims.
Implementation progress: About identifies Harley Blakely as the manager listed on the matching BBB profile. A verified experience and project-responsibility biography remains pending.
- 46P1 · FOUNDATION✓ IMPLEMENTED
Document credentials that can be verified.
If applicable, publish current license, insurance, certifications, manufacturer affiliations, or trade qualifications. Do not add an accreditation unless it is current and confirmed.
Implementation progress: About documents BBB accreditation since August 13, 2024, with a link to the matching profile, checked October 2, 2026. License, insurance, and other qualifications still need evidence.
- 47P2 · BUILD NEXT
Explain warranties, estimates, payment options, and project expectations
using the company’s actual policies. These details help customers judge fit and help answer common pre-hire questions.
- 48P2 · BUILD NEXT
Expand the roofing page
to cover the confirmed roof types, repair and replacement options, inspections, leak work, and any commercial systems the company handles.
Implementation progress: The roofing page includes the listed repair/replacement work, FAQs, and roof-project request details. Confirm roof types and commercial systems before expanding those claims.
- 49P2 · BUILD NEXT
Expand the water-mitigation page
to explain the actual response process, water removal, drying, moisture inspection, and what customers should do before the team arrives.
Implementation progress: The water-mitigation page includes the listed work, FAQs, and water-damage request details. Confirm the actual response process and availability with the owner.
- 50P2 · BUILD NEXT
Expand the storm-restoration page
to clarify the work offered after wind or storm damage, from assessment through repair, and whether the company assists with insurance documentation.
Implementation progress: The storm page includes the listed assessment/repair work, FAQs, and storm-project request details. Insurance assistance remains unconfirmed.
- 51P2 · BUILD NEXT
Expand the concrete page
with the actual services offered—such as driveways, patios, slabs, foundations, or commercial work—and include preparation, project constraints, and maintenance guidance.
Implementation progress: The concrete page includes the listed project types, FAQs, and size/access/removal questions for an estimate. Confirm preparation, constraints, and maintenance guidance before publication.
- 52P2 · BUILD NEXT✓ IMPLEMENTED
Add a concise FAQ to each service page.
Answer questions customers actually ask about service areas, estimates, timing, project scope, and next steps.
- 53P2 · BUILD NEXT✓ IMPLEMENTED
Put a direct answer near the top of each page.
State what the service includes, who it is for, and where it is offered before the longer details.
- 54P3 · WHEN READY✓ IMPLEMENTED
Publish a practical cost guide for each service
if the company can provide accurate ranges or explain the main cost factors. Avoid invented prices or guarantees.
Implementation progress: Four separate cost guides explain roofing, water mitigation, storm restoration, and concrete cost factors, proposal comparisons, and estimate preparation. Each links primary-source reading; no numerical prices or guarantees are invented. Service links, sitemap entries, and all generated routes pass validation.
- 55P2 · BUILD NEXT
Create location pages only for places the company truly serves.
Give each page original local project evidence and useful area-specific information; don’t publish thin copies with only the city name changed.
- 56P1 · FOUNDATION✓ IMPLEMENTED
State emergency availability precisely.
The site uses “immediate” and “anytime” language, but the profile lists business hours rather than 24/7 availability. Publish an after-hours process only if the team can support it.
- 57P2 · BUILD NEXT
Add customer testimonials with permission and a link to the original review.
Use them to build trust on service pages; don’t add self-serving review markup to try to obtain review stars in search.
Implementation progress: Public HomeAdvisor and Houzz review sources were identified. Company identity and reuse permission still need confirmation; no testimonials were republished.
- 58P2 · BUILD NEXT
Make project evidence easy for search and answer systems to interpret.
Use descriptive headings, captions, locations, service names, and plain explanations alongside each photo.
- 59P3 · WHEN READY✓ IMPLEMENTED
Focus AEO work on useful, original answers rather than special markup tricks.
Google says its AI search features use foundational SEO and helpful, distinctive content; see the Google AI optimization guide.
WORKSTREAM 04
Measurement and lead flow
Connect search visibility to real inquiries, then use actual user and lead data to set the next priorities.
- 60P1 · FOUNDATION
Verify Google Search Console ownership
and inspect indexing for the four current pages, the sitemap, and any new service pages.
- 61P1 · FOUNDATION
Confirm analytics is installed and working.
No Google Analytics or Tag Manager request was visible in the homepage browser sample, so verify whether measurement is present behind a consent or tag setup.
Implementation progress: Optional GA4 code is ready and stays disabled without a valid production measurement ID. Supply the ID, rebuild, and verify reporting.
- 62P1 · FOUNDATION
Track phone clicks, estimate-form submissions, and profile website clicks
as separate conversion events.
Implementation progress: Separate phone_click, successful generate_lead, and UTM-attributed gbp_visit events pass automated tests without sending customer form fields. Production event verification and profile link updates remain pending.
- 63P2 · BUILD NEXT✓ IMPLEMENTED
Add the customer’s city or ZIP code to the estimate form
so the team can quickly confirm service coverage.
- 64P2 · BUILD NEXT✓ IMPLEMENTED
Test that the contact form delivers submissions to the right inbox.
Add appropriate spam protection and a clear confirmation message; the form was present but was not submitted during this audit.
Implementation progress: Formspark-to-Gmail test HC-FORM-20261002-01 was accepted October 2 and the owner confirmed receipt. Deployed browser test HC-PAGES-20261002-02 then passed through the rebuilt form, Pages Function, and Formspark and showed the success message with cleared fields. Receipt of this newer test has not been separately confirmed. Recheck after production cutover; inbound domain-email routing is separate.
- 65P2 · BUILD NEXT✓ IMPLEMENTED
Make phone and estimate actions easy to reach on mobile.
Use a valid tap-to-call link such as
tel:+16789520230and keep the quote action visible on service pages. - 66P3 · WHEN READY
Review rankings, leads, and field performance monthly.
Lighthouse’s lab results were good for LCP and CLS, but no field Core Web Vitals data was available. Use Search Console and analytics to prioritize real user issues.
SCOPE + EVIDENCE
A point-in-time review, built from public signals.
The ranking and profile figures are search snapshots, not promises of a permanent position. Map results vary by query and location. Verify business details with the owner before making profile or directory changes.
THE NEXT STEP
Turn the first findings into a clear work plan.
Start with verified business details, then agree on the highest-value fixes, owners, and timing.
Prepared from publicly available website, Google Business Profile, directory, and search-result information. Snapshot dated September 22, 2026. Rankings, traffic, and leads are not guaranteed.