Organizations Services LegalService

Practice Areas Blueprint — Legal Service

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.

What this page needs

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.

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.

Why these fields matter to AI

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

LegalService

name
Non-negotiable. AI cannot cite or recommend an unnamed entity.
url
AI needs a stable URL to attribute recommendations and route users correctly.
areaServed
AI filters service recommendations by coverage zone. Without this, AI may recommend you for queries outside your area or exclude you from local queries.
hasOfferCatalog
AI uses the offer catalog to match specific services to user queries. Without it, AI can only infer services from page content.

Use This Prompt to Implement Your Schema

Copy 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.

Implementation Prompt · Practice Areas
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

JSON-LD template

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.

JSON-LD · 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"
          }
        }
      ]
    }
  ]
}

Frequently asked questions

How many practice areas should I include in hasOfferCatalog?

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.

Should I create separate pages for each practice area?

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.

Can I use the same @id for LegalService here and on the homepage?

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.

Test your structured data

Paste your URL and see exactly what AI systems can read from your site.

Open Validator →