How AI Engines Read Attorney Profile Pages (and the Six Fixes That Matter)
Attorney profiles are where AI engines confirm a named person exists, practices where the firm says, and wrote the content the firm publishes. Most profiles fail: no Person schema, no sameAs links, a name that differs from the State Bar, and a bio written like a CV. Six fixes, in order.
Short answer: An attorney profile page does three jobs for an AI engine: it proves a named person exists, ties that person to the firm and to profiles the engine already trusts (State Bar, LinkedIn, Avvo), and establishes who is responsible for the firm's content. Six fixes make it work: the name exactly as licensed, Person schema linked to the firm's LegalService by @id, sameAs links to the aligned profiles, a plain-language bio that states practice areas, courts and languages in the first paragraph, a real photo, and a byline link from every article the attorney authored.
What does an engine do with a profile page?
When an engine considers naming a firm, it looks for corroboration that the firm is a real entity with real practitioners. The attorney profile is the page that carries that evidence when it is marked up correctly. It is also the page an engine follows when a cited article says "by Jane Doe": if the byline leads nowhere, the article loses its author signal.
Named authors matter on their own. Content with a real, findable author is cited more often than anonymous content, and California advertising rules expect a responsible lawyer behind published legal content anyway.
Fix 1: the name, exactly as licensed
The State Bar profile is the source of truth. The website, LinkedIn, Avvo and the schema must carry the same name in the same form. "Jonathan A. Smith" on the Bar, "Jon Smith" on the site and "Jonathan Smith, Esq." on Avvo are three people to a model. Pick the Bar form and use it everywhere; put nicknames in the bio text, not the name field.
Fix 2: Person schema linked to the firm
{
"@context": "https://schema.org",
"@type": "Person",
"@id": "https://yourfirm.com/attorneys/jane-doe#person",
"name": "Jane Doe",
"jobTitle": "Founding Attorney",
"worksFor": { "@id": "https://yourfirm.com/#organization" },
"knowsAbout": ["Child custody", "Divorce", "Domestic violence restraining orders"],
"knowsLanguage": ["English", "Armenian"],
"alumniOf": "Loyola Law School",
"image": "https://yourfirm.com/images/team/jane-doe.jpg",
"url": "https://yourfirm.com/attorneys/jane-doe",
"sameAs": [
"https://apps.calbar.ca.gov/attorney/Licensee/Detail/000000",
"https://www.linkedin.com/in/janedoe",
"https://www.avvo.com/attorneys/..."
]
}
The worksFor @id must be the same identifier the firm's LegalService block uses on every page. That single link is what turns "a person named Jane Doe" into "the attorney at this firm". The firm block itself is in the schema guide.
Fix 3: sameAs to profiles that already match
Only link profiles that carry the same name, firm and address. Linking a profile with an old firm name tells the engine the person may work somewhere else. Fix the profile first, then add the link. The minimum set: State Bar, LinkedIn, Avvo. Add Justia, Martindale and Super Lawyers where they exist. The order and the alignment rules are in the directory consistency checklist.
Fix 4: a bio that answers the question in the first paragraph
The question an engine (and a client) has is "what does this person do, where, and in what language". Most bios open with law school and a bar year. Reverse it:
| Bio that gets read | Bio that gets skipped |
|---|---|
| "Jane Doe represents parents in custody, divorce and domestic violence matters in the Burbank and Pasadena family courts, in English and Armenian. She has practiced family law in Glendale since 2014." | "Jane Doe received her J.D. from Loyola Law School in 2013, where she was a member of the Moot Court Honors Board. She was admitted to the California Bar in 2014." |
| Practice areas, courts, languages, years, then education and admissions | Education, admissions, honors, then a vague "practice areas include" |
| 150 to 300 words | 800 words of CV |
Courts by name matter. "Burbank and Pasadena family courts" is a local entity signal; "throughout Southern California" is nothing.
Fix 5: a real photo, named in the schema
A photo of the attorney, on the profile, referenced in the image field. Engines and clients both read stock photography as a firm with nothing to show. One photo, updated every few years, is enough.
Fix 6: the byline loop
Every article and practice page the attorney authored carries author pointing at the Person @id, and the profile page lists or links those pieces. The engine then has a closed loop: content by a named person, on a firm site, corroborated by external profiles. This is the loop on this site: every pillar and article carries a named author and Person schema, and the about page is the profile hub.
What to leave off
- Client testimonials with case details. Confidentiality and Rule 7.1 both apply; a testimonial that implies an outcome is a problem.
- "Best" and "top" claims, including third-party badges the firm cannot substantiate.
- Practice areas the attorney does not take. Ten listed practice areas dilute the signal for the two that matter.
- Contact forms on the profile. The profile's job is corroboration; send the visitor to the practice page or the contact page.
How to check the result
Search the attorney's name in ChatGPT and Perplexity and ask what they do and where. A correctly built profile produces the practice areas, the city and the firm; a broken one produces a different lawyer with a similar name, or nothing. The free AI visibility check includes the firm's attorneys in the entity score it reports.
Check your firm
See whether ChatGPT, Perplexity, Gemini and Google AI Overviews name your firm for your practice area and city.
Free AI visibility check