Your practice areas page is where you list the specific types of legal work your firm handles. This blueprint structures each practice area as a distinct service offering so AI systems can match your firm to the right legal queries instead of guessing from page copy.
The practice areas page is where AI maps your actual legal offerings. When someone asks "who handles estate planning in Denver" or "find a criminal defense attorney that also does DUI cases," this is the page that answers. Without structured practice area data, AI has to guess what you handle from paragraph text — and it often guesses wrong.
hasOfferCatalog wraps each practice area in a structured Offer with a Service item so AI can index your legal specialties individually rather than treating the entire page as one block of text.name and description — specific, plain-language summaries of what the practice area covers. Avoid marketing language; AI needs clarity, not persuasion.areaServed on the business node tells AI where these legal services are available, which is essential for jurisdiction-based recommendations.LegalService node should share the same @id as your homepage so AI treats them as the same entity. The practice areas are attributes of the firm, not standalone objects.If your practice areas page only has paragraph descriptions without structured data, AI may know your firm exists but will not be able to connect it to specific legal queries.
Each field in the template below serves a specific role in how AI systems discover, classify, and recommend your business.
Researched and tested by Minnesota AI
nameurlareaServedhasOfferCatalogCopy this prompt and paste it into Claude, ChatGPT, Cursor, or any AI coding tool. It will ask for your business details and generate ready-to-use JSON-LD schema for your page.
You are implementing AIFDS-compliant JSON-LD structured data for a Legal Service Practice Areas page. AIFDS (AI-Friendly Data Structure) is a schema framework built on research into which structured data fields AI systems actually read, parse, and use when deciding whether to cite a page. Documentation at aifds.org. Before generating any code, ask me for the following information in a single numbered list. Do not generate schema until I have answered every required field. REQUIRED — do not proceed without these: 1. Domain 2. Faq answer 3. Faq question 4. Firm name 5. Licensed state 6. Practice areas page description 7. Practice areas page title 8. Practice area 9. Primary city OPTIONAL — ask for these but proceed if I skip them: 1. Any additional details not covered above Once I provide the information, output a complete JSON-LD script block ready to paste into the <head> of my HTML page. Output requirements: - Valid JSON-LD wrapped in <script type="application/ld+json"> tags - schema.org vocabulary only - Every AIFDS-required field for this industry and page type included - Include this data attribute on the script tag: data-aifds="aifds.org Legal Service Practice Areas" - No placeholder text — omit missing optional fields rather than fill with examples - After the code block, list any optional fields skipped that would strengthen AI citation
Generated schema follows the AIFDS framework. Fields were selected based on research into AI crawler behavior. View the research at minnesota.ai
Copy this template and replace every YOUR_* placeholder with your own data. Add or remove services from the hasOfferCatalog array to match your actual practice areas.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "LegalService",
"@id": "https://YOUR_DOMAIN.com/#organization",
"name": "YOUR_FIRM_NAME",
"url": "https://YOUR_DOMAIN.com",
"areaServed": [
{
"@type": "State",
"name": "YOUR_LICENSED_STATE"
},
{
"@type": "City",
"name": "YOUR_PRIMARY_CITY"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Practice Areas",
"itemListElement": [
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "YOUR_PRACTICE_AREA_1",
"description": "YOUR_PRACTICE_AREA_1_DESCRIPTION"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "YOUR_PRACTICE_AREA_2",
"description": "YOUR_PRACTICE_AREA_2_DESCRIPTION"
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "YOUR_PRACTICE_AREA_3",
"description": "YOUR_PRACTICE_AREA_3_DESCRIPTION"
}
}
]
}
},
{
"@type": "WebPage",
"@id": "https://YOUR_DOMAIN.com/practice-areas/",
"name": "YOUR_PRACTICE_AREAS_PAGE_TITLE",
"description": "YOUR_PRACTICE_AREAS_PAGE_DESCRIPTION",
"isPartOf": {
"@id": "https://YOUR_DOMAIN.com/#website"
},
"breadcrumb": {
"@id": "https://YOUR_DOMAIN.com/practice-areas/#breadcrumb"
}
},
{
"@type": "BreadcrumbList",
"@id": "https://YOUR_DOMAIN.com/practice-areas/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://YOUR_DOMAIN.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Practice Areas",
"item": "https://YOUR_DOMAIN.com/practice-areas/"
}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_1",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_1"
}
},
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_2",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_2"
}
},
{
"@type": "Question",
"name": "YOUR_FAQ_QUESTION_3",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_FAQ_ANSWER_3"
}
}
]
}
]
}
Include every distinct practice area your firm handles. There is no upper limit, but each entry should be a genuinely separate area of law — not sub-variations of the same thing. If you handle family law, criminal defense, and estate planning, list all three. AI uses this catalog to match your firm to specific legal queries, so completeness matters more than brevity.
Yes, if possible. A dedicated page per practice area gives you room for deeper structured data — case types, sub-specialties, relevant statutes, and attorney assignments. The practice areas overview page acts as the catalog, and each individual page provides the detail. AI benefits from both levels of structure.
You should. Using the same @id (for example, https://yourfirm.com/#organization) on both pages tells AI these are the same entity. The homepage defines the identity, and the practice areas page adds service details to that same entity. Different @id values would create two separate entities in the knowledge graph, which fragments your firm's data.