Professional Services AI Visibility: Proof Engines Can Check
Professional services AI visibility rests on checkable expertise. On 121 firm sites, 9% of team pages had Person markup, 15% linked case studies. What to add.
Kazi Khalid Hasan Tamim · BugViso Team
12 min read
Professional services AI visibility depends on proof an engine can check: named experts with stated credentials, a page per service, and case studies with outcomes. Law firms, accountants, architects and advisers are recommended on trust, and an AI answer can only repeat the trust signals it can find and attribute. On 121 firm websites we checked, most named their people, but only 9% of team pages described them in structured data and 15% linked to case studies or results.
So the expertise exists and stays invisible. By the end of this post you'll know which signals a firm's site exposes and which it hides, a page standard for "who, what, proof", and a script that checks a firm's site in seconds.
Data used: 160 professional services firms with a website listed in OpenStreetMap (law firms, accountants, architects, consultants, insurance brokers, financial and tax advisers), sampled at random (seed
20261029) from London, Manchester, Chicago, Austin and Sydney. Homepages and one team or about page per firm were fetched as plain HTML on 2026-10-29; 121 homepages were readable. Firms aren't named.
Why Professional Services Answers Need Proof
When a buyer asks an engine for "an employment lawyer in Manchester for a small business" or "an accountant who handles R&D tax credits", the answer has to justify each recommendation. Engines justify with what they can quote: a named partner's specialism, a service page that matches the question, a result from a case study, a credential, a review.
That's the same ground Google's guidance on helpful, reliable, people-first content covers under E-E-A-T: who created the content, what experience they have, and why someone should trust it. The difference in AI answers is compression. A results page lets the reader judge ten firms; an AI answer names three and gives a reason for each. A firm with no quotable reason is easy to leave out.
What 121 Firm Websites Expose
Here's what the readable homepages, and the team or about page they linked, contained:
| Signal | Firms | Share |
|---|---|---|
| Team, people or about page linked from the homepage | 82 | 68% |
| — team page names a credential (chartered, solicitor, CPA, licensed…) | 40 of 81 fetched | 49% |
| — team page describes people in Person markup | 7 of 81 fetched | 9% |
| Services or practice-areas page linked | 42 | 35% |
| Case studies, results or client-work page linked | 18 | 15% |
| Reviews or testimonials page linked | 18 | 15% |
| Fees or pricing page linked | 11 | 9% |
| Business markup (ProfessionalService, LegalService, AccountingService or other local type) | 35 | 29% |
| Organization markup with sameAs profile links | 18 | 15% |
| Phone number as text | 95 | 79% |
| Link to the firm's LinkedIn | 57 | 47% |
| Link to a Google Maps listing | 26 | 21% |
Another 39 of the 160 firms (24%) had no readable homepage: the listed domain didn't resolve, returned an error or refused the request. Only 3 of the 121 readable sites blocked any AI crawler in robots.txt, and none of them the search crawlers.
The picture: firms say who they are (a team page, a phone number) far more often than what they've done (case studies) or what they charge (fees). And when they name their people, they almost never describe them in a form a machine can attribute.
💡 Rule of thumb: for every service you want to be recommended for, an engine should be able to find three things on your site: the page that describes it, the person who leads it, and an outcome you achieved with it.
The Three Proof Gaps
Experts without machine-readable identity
Half the team pages named credentials in text: "chartered accountant", "solicitor", "member of". Only 9% described their people with Person markup. Markup isn't required for an engine to read a bio, but it removes ambiguity: this name, this job title, at this firm, with this profile elsewhere. A partner with a common name gains the most from sameAs links to a professional register or profile.
Individual bio pages matter more than markup. A single team page with twenty names and photos gives an engine little to cite. A page per senior person, with qualifications, admissions, sectors and the matters they lead, is something an answer can point to.
Services described as a list, not as pages
Only 35% of firms linked a services or practice-areas page from the homepage. Many list services in a homepage paragraph. A buyer's question is specific ("lease extension solicitor", "Xero bookkeeping for contractors"), and the page that answers it should be specific too: one page per service, and for firms with sector focus, per service and sector.
Outcomes nobody can quote
Case studies were the rarest signal: 15% of firms linked one. Confidentiality limits what law and accounting firms can publish, but anonymised outcomes still work: the type of client, the problem, what was done, and the measurable result. An outcome written as "recovered £[amount] in overpaid business rates for a 40-site retailer" is a sentence an engine can quote. "Trusted advisers to businesses of all sizes" isn't.
Law, Accounting and Architecture Firms Hide Different Things
Each profession's gap is another profession's habit. Split by firm type, the readable sites looked like this:
| Firm type | Sites | Team or about page | Services page | Case studies or work | Fees page | Business markup |
|---|---|---|---|---|---|---|
| Law | 53 | 40 (75%) | 25 (47%) | 3 (6%) | 6 (11%) | 17 (32%) |
| Accounting and tax | 30 | 18 (60%) | 11 (37%) | 0 (0%) | 3 (10%) | 11 (37%) |
| Architecture | 19 | 10 (53%) | 2 (11%) | 11 (58%) | 2 (11%) | 5 (26%) |
| Other advisers (consulting, insurance, financial) | 17 | 13 (76%) | 4 (24%) | 4 (24%) | 0 (0%) | 2 (12%) |
Architects show their work (a portfolio is the norm) but rarely describe what they do as services a buyer could ask for. Law firms describe practice areas but almost never show outcomes. Not one accounting firm in the sample linked a case study. The fix for each is the habit of the next: lawyers and accountants can borrow the architect's portfolio, as anonymised outcomes, and architects can borrow the lawyer's practice-area pages. The sub-samples are small, so read the pattern, not the exact percentages.
The Firm Page Standard
Build three kinds of page, connected to each other.
| Page | What it must state | Markup |
|---|---|---|
| Expert bio (one per senior person) | Name, role, qualifications and admissions with dates, sectors, services led, selected matters, contact | Person with jobTitle, worksFor, hasCredential where useful, sameAs |
| Service page (one per service, optionally per sector) | Who it's for, what's included, typical timeline, fee basis or "from" price, the experts who lead it | Service or a ProfessionalService subtype on the firm |
| Case study or outcome | Client type (anonymised if needed), problem, approach, measurable result, the people involved | Linked from the service and bio pages |
Then connect them: each service page links to its experts and outcomes, each bio links to its services, and the firm's Organization markup lists its profiles in sameAs. Our guide to E-E-A-T for AI search covers the trust-signal side in more depth, and the hasCredential property can carry formal qualifications.
Fees deserve their own line. Only 9% of firms linked a fees page. Many professional services can't be priced in advance, but fee basis ("fixed fee for X", "hourly from Y", "free initial call") answers the questions buyers ask engines about cost.
Check a Firm's Site Yourself
This script finds the team (or about), services and case-study pages from a firm's homepage, checks for business markup, then reads the team page for Person markup, named credentials and links to individual bio pages. Standard library only.
#!/usr/bin/env python3
"""Does a professional services site give AI engines checkable proof of expertise?
Finds the team, services and case-study pages from the homepage, then checks the team page
for Person markup, named credentials and per-person bio links.
Usage: python3 expertise_check.py https://example-law.co.uk
"""
import re, sys, urllib.request
from html import unescape
from urllib.parse import urljoin, urlsplit
UA = "Mozilla/5.0 (compatible; expertise-check/1.0)"
PAGES = {"team": r"team|our-team|people|our-people|staff|attorneys|lawyers|partners|meet-the-team",
"services": r"services?|practice-areas|expertise|what-we-do", "case studies": r"case-studies|case-study|results|success-stories|our-work"}
CRED = re.compile(r"\b(CPA|ACCA|ACA|FCA|CFP|CFA|Esq\.?|J\.?D\.?|LL\.?[BM]|solicitor|barrister|RIBA|AIA|chartered|licensed|"
r"certified|admitted to|bar of|member of)\b", re.I)
def get(url):
req = urllib.request.Request(url, headers={"User-Agent": UA})
with urllib.request.urlopen(req, timeout=20) as r:
return r.geturl(), r.read(2_500_000).decode("utf-8", "replace")
def text(html):
return re.sub(r"\s+", " ", unescape(re.sub(r"(?s)<[^>]+>", " ", re.sub(r"(?is)<(script|style|svg)[^>]*>.*?</\1>", " ", html))))
def internal(base, html):
host = urlsplit(base).netloc
return sorted({urljoin(base, h).split("?")[0].rstrip("/") for h in re.findall(r"""<a\b[^>]*href=["']([^"'#]+)""", html, re.I)
if urlsplit(urljoin(base, h)).netloc == host}, key=len)
def main(url):
final, home = get(url)
links = internal(final, home)
find = lambda p: next((u for u in links if re.search(rf"/({p})(/|$)", urlsplit(u).path.lower())), None)
found = {k: find(p) for k, p in PAGES.items()}
found["team"] = found["team"] or find("about|about-us|who-we-are") # many small firms list people on the about page
for k, u in found.items():
print(f"{'✓' if u else '✗'} {k} page: {u or 'not linked from the homepage'}")
ptype = re.findall(r'"@type"\s*:\s*"(ProfessionalService|LegalService|Attorney|AccountingService|FinancialService|Organization)"', home)
print(f"{'✓' if ptype else '✗'} business markup on the homepage: {', '.join(sorted(set(ptype))) or 'none'}")
if not found["team"]:
return
tfinal, team = get(found["team"])
people = len(re.findall(r'"@type"\s*:\s*"Person"', team))
creds = sorted({m.group(0).strip(".").lower() for m in CRED.finditer(text(team))})
bios = [u for u in internal(tfinal, team) if u.startswith(found["team"] + "/")]
print(f"Team page: {people} Person entries in markup; credentials named: {', '.join(creds) or 'none'}; "
f"{len(bios)} individual bio pages linked")
if not people:
print(" -> add Person markup (name, jobTitle, worksFor, sameAs to a professional profile) for each expert")
if not bios:
print(" -> give each expert a bio page with qualifications, admissions and the work they lead")
if __name__ == "__main__":
main(sys.argv[1]) if len(sys.argv) == 2 else sys.exit(__doc__)On an accountancy firm from the sample:
✓ team page: https://<firm>/about-us
✓ services page: https://<firm>/services
✗ case studies page: not linked from the homepage
✓ business markup on the homepage: Organization
Team page: 0 Person entries in markup; credentials named: chartered, member of; 0 individual bio pages linked
-> add Person markup (name, jobTitle, worksFor, sameAs to a professional profile) for each expert
-> give each expert a bio page with qualifications, admissions and the work they leadThe credential list is a short, English-language set; extend CRED with your profession's designations. Pages are found from homepage links only, so a firm that hides its team behind a menu script may show false negatives.
How BugViso Plans Professional Services AI Visibility
BugViso's AI Visibility Tracker recognises a professional services firm from its site and builds the "what to do" plan for that type. Its expert-proof item covers case studies with outcomes, expert bio pages, original research and a page that names your method, and it can draft a case-study outline from your site's facts. It points to ProfessionalService, Person and FAQPage markup, to service-by-industry pages and credentials, and to the B2B review directories, Google reviews and "best firms" lists that answers in your field cite.
Each item is grounded in your own report: the buyer questions where other firms were named instead of you, and the sources those answers cited. The fact check compares what engines say about the firm with your own site, so a wrong fee basis or a misattributed specialism shows up as an inaccurate claim. The professional services plan is part of the AI visibility tracker.
Professional Services Mistakes
A team page of names and headshots. Engines can't cite a photo grid. Give senior people bio pages with what they actually do.
Services in one paragraph. A buyer's question is specific; one page per service gives the engine something specific to cite.
"Confidential, so no case studies". Anonymised outcomes with client type, problem and result protect clients and still give engines a quotable result.
No fee information at all. A fee basis or a "from" figure answers cost questions without committing to a quote.
Listings pointing to a dead site. A quarter of the firms we sampled had no readable homepage at the URL their listing gave. Check yours. The same problem hit 35% of the businesses in our local business AI visibility sample.
Frequently Asked Questions
How do law firms and accountants get recommended by AI?
By making expertise checkable on their own sites: a bio page per senior expert with qualifications and specialisms, a page per service, and anonymised case studies with measurable outcomes, plus consistent listings and reviews on the directories engines cite for their profession.
Does Person schema help professional services in AI search?
It removes ambiguity about who an expert is, where they work and which profiles are theirs. It's a clarity signal, not a ranking switch. In our sample only 9% of firm team pages used it, while 49% named credentials in plain text.
What content should a professional services firm publish for AI visibility?
Expert bios, one page per service (and per sector if you specialise), case studies with outcomes, a fee basis, and answers to the questions clients ask before hiring. Only 15% of the firms we checked linked to case studies.
Do AI engines trust reviews for professional services?
Engines cite review sources where they exist for a profession, such as Google reviews and B2B directories. Reviews help most when they mention the specific service, which supports the service page they relate to.
Should professional services firms publish fees?
Where possible, publish the fee basis or a starting figure. Only 9% of firms in our sample linked a fees page, which leaves cost questions to firms that do.
Make Your Expertise Quotable
Engines recommend firms they can justify, so publish the proof in a form they can quote: expert bios with credentials, a page per service, and outcomes with numbers, all linked to each other. BugViso's AI visibility tracking shows which client questions name other firms instead of yours and plans the proof to add.
Written by
Kazi Khalid Hasan Tamim · BugViso Team
Kazi writes BugViso’s guides on website audits, Core Web Vitals, technical SEO, accessibility and AI search. The data in them comes from audits BugViso runs in a real Chromium browser, including our 219-site study of website health.
Summarise with AI
Open this guide in your assistant.
Follow BugViso
New guides and audit data as we publish them.
See where your site stands
Run a free BugViso audit for SEO, speed, accessibility and AI search readiness — with fixes you can ship today.