Mitasys x Right Choice Painting
Technical SEO · 173 pages reviewed · Structured data (schema)Every page on the site carries the same business markup and, on 172 of 173 pages, nothing else. Correcting this is a high-impact, low-effort win we can complete within the first three months.
What we found
We reviewed the structured data on all 173 URLs. The entire website contains only two distinct schema blocks. One business tag is copied, byte for byte, onto all 173 pages, and on 172 of them it is the only structured data present. The single exception is the FAQ page, which also has valid FAQ markup.
// Found byte-for-byte identical on all 173 pages,
// including on this blog post - and it is the only markup present:
{
"@context": "https://schema.org",
"@type": "ProfessionalService",
"@id": "https://rightchoicepaintingaz.com/#business",
"name": "Right Choice Painting, LLC",
"url": "https://rightchoicepaintingaz.com/",
"mainEntityOfPage": "https://rightchoicepaintingaz.com/", // always the homepage
"aggregateRating": { "ratingValue": "4.5", "reviewCount": "19" },
... // same address, hours and service list repeated on every URL
} What this means
Search engines see the same homepage business, over and over, and never learn what any individual service, location or blog page is actually about. The site is leaving its clearest ranking and AI-visibility signals switched off.
Why it matters
The copied block is itself well formed. The problem is how it is used: the same tag on every page, with no page-specific markup and a signal that always points home.
Service pages have no Service markup, location pages have no localized markup, and all 130 blog posts have no article markup. Search engines and AI answer engines are given nothing page-specific to understand, so pages cannot qualify for the richer results and citations their content deserves.
The copied tag hardcodes mainEntityOfPage and url to the homepage. A blog post about how long interior paint lasts therefore declares its main entity to be the homepage business. That is a false signal repeated on 172 pages.
The markup uses ProfessionalService. Schema.org has a specific type for painting contractors, HousePainter, which sits under LocalBusiness and communicates the business category far more precisely.
The markup reports a 4.5 rating from 19 reviews while the site displays 27 reviews. Google does not show star rich results for a business's own self-serving rating in any case, so this earns nothing today. Real review visibility comes from Google Business Profile and third-party review platforms.
The fix
Define the business once as the specific HousePainter type, reference it everywhere by a single identifier, and add the page-specific markup each template is missing. Below is the recommended structured data by page type.
| Page type | Pages | Recommended structured data |
|---|---|---|
| Homepage | 1 | HousePainter defined once as the business entity, plus WebSite and BreadcrumbList |
| Service pages | 12 | Service (service type, provider linked to the business, area served) plus BreadcrumbList |
| Location pages | 15 | Localized HousePainter or Service scoped to each city, plus BreadcrumbList |
| Blog posts | 130 | BlogPosting (headline, dates, image, author and publisher linked to the business) plus BreadcrumbList |
| Contact, About, FAQ | 3 | ContactPage, AboutPage and FAQPage (the FAQ markup already exists) plus BreadcrumbList |
| Hubs, gallery, other | 12 | CollectionPage or WebPage plus BreadcrumbList as appropriate |
{
"@context": "https://schema.org",
"@type": "HousePainter",
"@id": "https://rightchoicepaintingaz.com/#business",
"name": "Right Choice Painting, LLC",
"url": "https://rightchoicepaintingaz.com/",
"telephone": "+1-602-350-2202",
"priceRange": "$$",
"image": "https://rightchoicepaintingaz.com/wp-content/uploads/right-choice-painting-hero.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "1811 W Tanya Trl",
"addressLocality": "Phoenix",
"addressRegion": "AZ",
"postalCode": "85086",
"addressCountry": "US"
},
"geo": { "@type": "GeoCoordinates", "latitude": 33.7408, "longitude": -112.1165 },
"areaServed": ["Phoenix", "Scottsdale", "Paradise Valley", "Cave Creek",
"Anthem", "Peoria", "Glendale"],
"openingHoursSpecification": [
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"],
"opens": "07:00", "closes": "17:00" },
{ "@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday", "opens": "07:00", "closes": "14:00" }
],
"sameAs": [
"https://www.yelp.com/biz/right-choice-painting-phoenix-2",
"https://www.bbb.org/us/az/phoenix/profile/painting-contractors/right-choice-painting"
]
} {
"@context": "https://schema.org",
"@type": "Service",
"@id": "https://rightchoicepaintingaz.com/residential/interior-residential-painting/#service",
"name": "Interior Residential Painting",
"serviceType": "Interior painting",
"provider": { "@id": "https://rightchoicepaintingaz.com/#business" },
"areaServed": { "@type": "State", "name": "Arizona" },
"url": "https://rightchoicepaintingaz.com/residential/interior-residential-painting/"
} {
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How Long Does Interior Paint Last?",
"mainEntityOfPage": "https://rightchoicepaintingaz.com/how-long-does-interior-paint-last/",
"datePublished": "2025-08-14",
"dateModified": "2026-02-19",
"author": { "@id": "https://rightchoicepaintingaz.com/#business" },
"publisher": { "@id": "https://rightchoicepaintingaz.com/#business" },
"image": "https://rightchoicepaintingaz.com/wp-content/uploads/interior-paint.jpg"
} Illustrative markup. The address, hours and service areas are the live business details; per-post fields such as dates, images and headlines are populated automatically for each page. Reference: schema.org/HousePainter and Google's Local Business guidance.
Rollout
The work is well defined and template-driven, so it ships in three focused phases with results visible from the first month.
| When | Focus | Scope |
|---|---|---|
| Month 1 | Fix the foundation: define the business once as HousePainter with a single stable identifier, add BreadcrumbList and WebSite site-wide, and correct the per-page main-entity signal so each page describes itself. | Site-wide |
| Month 2 | Add page-specific markup to the money pages: Service on the 12 service pages, localized markup on the 15 location pages and hubs, and ContactPage, AboutPage and FAQPage on the key pages. | 30 key pages |
| Month 3 | Roll BlogPosting across the blog library, then validate every template in Google's Rich Results Test and monitor eligibility in Search Console. | 130 posts + validation |
Important context
01
The live structured data on all 173 URLs (43 pages and 130 posts), confirmed directly against the pages themselves.
02
The business block itself is well formed. The plan keeps it, defines it once, links to it everywhere by identifier, and adds the page-specific markup that is missing.
03
A business's own rating is not shown as stars by Google. Star visibility is earned through Google Business Profile and third-party review platforms, which we address separately.
04
Every template is checked in Google's Rich Results Test, and eligibility is tracked in Search Console once connected.
Next steps
It is a clear, self-contained fix with measurable outcomes: correct markup on every page, more pages eligible for rich results, and a stronger foundation for local and AI search.
Define the business once, correct the site-wide signals, and add breadcrumbs. The rest builds cleanly on top.
See the three-month planSchema is the fast win. It sits alongside the broader search and content work in the full proposal.
Back to deliverables