Why AI Engines Struggle to Recommend Service Businesses
When someone asks ChatGPT "who are the best accountants in Manchester" or "which law firms specialise in employment law in Bristol," the AI has a problem. Unlike a product search where structured data from marketplaces floods its training data, professional service businesses are notoriously undermarked. Most service pages are just walls of text, maybe a contact form and a few testimonials. No machine-readable signals. No structured context for an AI to confidently surface and cite your business.
That is where ProfessionalService schema comes in. It is a specific type drawn from Schema.org that tells AI crawlers, search engines, and the large language models trained on web data exactly what your business does, who it serves, where it operates, and why it should be trusted. When implemented properly, it gives AI systems the structured confidence they need to recommend you by name.
This guide walks through the exact implementation, the properties that matter most for AI referrals, and the common mistakes that waste your effort.
What ProfessionalService Schema Actually Is
ProfessionalService is a Schema.org type that sits within the LocalBusiness hierarchy. The inheritance chain looks like this: Thing > Organization > LocalBusiness > ProfessionalService. That hierarchy matters because when you declare a type of ProfessionalService, you inherit all the properties of LocalBusiness and Organization too, which means you have access to a wide range of descriptive fields.
Schema.org also defines more specific subtypes under ProfessionalService, including:
- AccountingService
- LegalService (and further subtypes like Attorney, Notary)
- FinancialService
- EmploymentAgency
- GovernmentOffice
- InsuranceAgency
If your business fits one of these subtypes, use the more specific one. AI systems respond well to specificity. A schema type of "Attorney" tells an LLM far more than a generic "ProfessionalService." Use the most precise type that accurately describes what you do.
For businesses that span multiple categories, say a firm offering both accounting and financial planning, you can declare multiple types in JSON-LD using an array.
The Properties That Drive AI Referrals
Not all schema properties carry equal weight when it comes to AI visibility. Here are the ones that genuinely move the needle.
name, url, and description
These three are foundational. Your name should match exactly how your business appears everywhere else online. Consistency across your schema, Google Business Profile, and directory listings builds entity confidence in AI systems. The description field is particularly important for AI: write two to three sentences that clearly state what you do, who you serve, and what makes your firm distinctive. Avoid vague marketing language. Be specific about specialisms, industries, or client types.
areaServed
AI engines answering location-based queries need to know your geographic scope. Use areaServed to define the cities, regions, or countries you serve. You can pass a string ("Greater Manchester") or a more structured GeoShape or Place object. If you serve clients nationally but are based in one city, say so explicitly.
hasOfferCatalog and makesOffer
This is where most professional service sites leave value on the table. The hasOfferCatalog and makesOffer properties let you describe your individual services in structured form. Each service can have its own name, description, and even price range. When an AI is asked "who offers trademark registration services in Edinburgh," a firm with those services explicitly marked up in schema has a measurable advantage over one that only mentions them in paragraph copy.
aggregateRating and review
Reviews are social proof for humans. For AI, they are trust signals. Structured review data, especially with a populated aggregateRating block including ratingValue, reviewCount, and bestRating, tells an AI system that your business is verified and valued by real clients. AI referral engines are increasingly weighting reputation signals when deciding which businesses to surface.
sameAs
The sameAs property is one of the most underused in professional services schema. It takes an array of URLs pointing to your verified profiles on other platforms: LinkedIn, Trustpilot, Yelp, Companies House, professional directories, industry associations. This web of connections helps AI systems confirm your entity identity. The more confidently an AI can verify that you are who you say you are, the more likely it is to recommend you.
knowsAbout and keywords
These properties help AI systems understand your areas of expertise. knowsAbout can reference specific topics, subtopics, or even other Schema.org entities. A financial adviser might list "pension drawdown," "ISA planning," and "inheritance tax mitigation." This contextual depth is exactly what an LLM draws on when generating a recommendation in response to a specific, nuanced query.
A Full JSON-LD Example for a Professional Services Firm
Here is a worked example for a fictional employment law firm. You would place this inside a <script type="application/ld+json"> tag, ideally in the <head> of your homepage and key service pages.
{
"@context": "https://schema.org",
"@type": ["LegalService", "ProfessionalService"],
"name": "Harper & Cole Employment Law",
"url": "https://www.harpercole.co.uk",
"description": "Harper & Cole is a specialist employment law firm advising employees and employers across the UK on unfair dismissal, discrimination claims, TUPE, and settlement agreements.",
"telephone": "+44-161-000-0000",
"email": "hello@harpercole.co.uk",
"address": {
"@type": "PostalAddress",
"streetAddress": "14 Exchange Square",
"addressLocality": "Manchester",
"addressRegion": "Greater Manchester",
"postalCode": "M2 7EE",
"addressCountry": "GB"
},
"areaServed": ["United Kingdom", "Manchester", "London", "Birmingham"],
"knowsAbout": ["unfair dismissal", "employment tribunal", "TUPE regulations", "workplace discrimination", "settlement agreements"],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "87",
"bestRating": "5"
},
"makesOffer": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Unfair Dismissal Claims",
"description": "Legal advice and representation for employees facing unfair dismissal in the UK employment tribunal system."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Settlement Agreement Review",
"description": "Independent legal review and negotiation of settlement agreements for employees."
}
}
],
"sameAs": [
"https://www.linkedin.com/company/harpercole",
"https://www.trustpilot.com/review/harpercole.co.uk",
"https://www.lawsociety.org.uk/find-a-solicitor/harpercole"
]
}
Notice the dual @type array. This is valid JSON-LD and tells crawlers the business is both a LegalService and a ProfessionalService. You get the specificity of the subtype and the broader classification simultaneously.
Where to Place Your Schema Markup
Homepage implementation is important but not sufficient. Place ProfessionalService schema on every page where a potential referral query might land:
- Homepage: Covers your overall business identity, review rating, service catalogue, and geographic scope.
- Individual service pages: Add a Service schema block specific to that page's topic, nested within or alongside your ProfessionalService block.
- About page: Reinforce entity signals here. This is a good place to also add Person schema for your key team members.
- Contact page: Restate your address, phone, opening hours, and areaServed. Consistency across pages strengthens entity confidence.
If you are working on a WordPress site, you can add JSON-LD directly to page templates or use a plugin carefully. We have a detailed walkthrough on adding LocalBusiness schema to a WordPress site that covers the technical implementation step by step.
Common Mistakes That Kill Your AI Visibility
Using generic types when a specific subtype exists
If you are a solicitor, using ProfessionalService alone when Attorney or LegalService exists is a missed opportunity. Specificity is free. Use it.
Leaving description vague
A description like "We are a leading professional services firm" is nearly worthless. AI systems need to parse what you actually do. Write as if you are briefing someone who has never heard of your business. What type of clients? What problems do you solve? What geography do you cover?
Ignoring sameAs
This is one of the biggest gaps we see. Without sameAs links, your schema entity sits in isolation. AI systems cross-reference known platforms to validate business identity. A firm with schema markup linked to their Law Society profile, LinkedIn page, and Trustpilot listing is significantly more trustworthy to an LLM than one without.
Only implementing on the homepage
AI search queries are often specific. Someone asking Perplexity "who does employment tribunal representation in Leeds" might land on your employment law service page, not your homepage. If that page has no schema, the opportunity is lost.
Conflicting data across pages
If your phone number appears differently on three pages, or your business name is inconsistent, that introduces entity confusion. Audit your markup for consistency before publishing.
Measuring Whether It Is Working
Tracking AI referrals is genuinely harder than tracking organic search traffic. A few practical approaches:
- Run regular test queries in ChatGPT, Perplexity, and Gemini for the kinds of questions your ideal clients would ask. Monitor whether your firm starts appearing in responses.
- Check Google Search Console for improvements in rich result appearances. While this is traditional search, it often correlates with better-structured data overall.
- Use UTM parameters on your key landing pages and monitor referral traffic sources. Some AI tools, like Perplexity, do pass referral traffic that appears in analytics.
- Ask new enquiries how they found you. AI-referred clients often mention "I asked ChatGPT" or "I searched on Perplexity."
If you want a more thorough baseline assessment before you start, our free AI visibility audit analyses your current schema coverage and flags the specific gaps holding you back from AI referrals.
How ProfessionalService Schema Fits Into a Broader AI Visibility Strategy
Schema markup is one piece of a larger puzzle. AI engines also look at the quality and structure of your content, your presence on trusted third-party platforms, the authority signals around your team members, and the overall topical depth of your site.
ProfessionalService schema does something specific and valuable: it gives AI systems a machine-readable declaration of who you are, what you do, and why you can be trusted. That declaration becomes part of the structured data layer that LLMs use when generating recommendations.
But it works best when your content actually supports the claims you make in schema. If your schema says you specialise in commercial property law and your site has one thin paragraph on the topic, the schema alone will not carry you far. The markup and the content need to align.
At FlinnSchema, the work we do for professional services clients always starts with schema implementation but quickly extends into content structure, entity building, and the kind of off-site presence that makes AI systems comfortable citing your business by name. If you are curious what that looks like in practice, the client results page has some concrete examples.
The professional services firms that will dominate AI referrals over the next two to three years are the ones implementing this infrastructure now, not after their competitors have already captured the recommendations.
Frequently Asked Questions
Is ProfessionalService schema different from LocalBusiness schema?
ProfessionalService is a subtype of LocalBusiness in the Schema.org hierarchy. When you use ProfessionalService (or one of its subtypes like LegalService or AccountingService), you inherit all the properties of LocalBusiness automatically. For professional service firms, using the more specific type is almost always better than using a plain LocalBusiness type, as it gives AI systems more precise context about what your business does.
Do I need a physical address to use ProfessionalService schema?
No. Many professional services firms operate remotely or serve clients nationally without a public-facing office address. You can omit the address property and instead focus on areaServed to define your geographic scope. If you do have a physical address, including it strengthens your local entity signals, which helps with location-based AI queries.
How long does it take for schema markup to affect AI referrals?
There is no fixed timeline. AI search tools like ChatGPT and Perplexity update their indexes and training data at different intervals. For Perplexity, which crawls the live web, you may see changes within weeks. For LLM models trained on periodic web snapshots, it can take longer. Consistency matters more than speed: keeping your schema accurate, complete, and consistent across pages compounds over time.
Can I use ProfessionalService schema alongside other schema types on the same page?
Yes, and in many cases you should. It is common and valid to have a ProfessionalService block alongside a FAQPage block, a Person block for a key team member, or a Review block for individual testimonials. Multiple schema types on a page do not conflict as long as each is correctly structured. Just avoid duplicating the same type in conflicting ways on the same page, as that can create confusion for crawlers.

