Services

Services Blueprint

If you run a consulting firm, agency, law practice, clinic, or other service business, AI needs both the service entity people engage with and the organization standing behind it.

What AI needs from service businesses

When someone asks an AI "find me a consultant in Minneapolis" or "who handles AI implementation for mid-market teams," the current blueprint expects these signals:

Without those fields, AI may know your firm exists but still skip it because the location, service scope, or provider credibility is incomplete.

What's in this blueprint

This blueprint groups fields across seven schema nodes:

LocalBusiness

This is the service-facing entity. It should include @type, name, url, telephone, email, address, geo, areaServed, openingHoursSpecification, priceRange, sameAs, and hasOfferCatalog.

Person

Use a named provider or practitioner with name, jobTitle, url, and sameAs. Add hasCredential when the profession is licensed or regulated.

Organization

The firm-level node carries name, url, email, logo, contactPoint, and broad areaServed coverage. It is where AI looks for support and institutional legitimacy.

WebSite

The anchor node for the graph. The blueprint requires @id, name, and url.

WebPage

Each services page should expose its own @id plus references to the site and breadcrumb graph using isPartOf and breadcrumb.

FAQPage

Optional but high-impact. The blueprint maps mainEntity so AI can quote direct answers about your services, region, or process.

BreadcrumbList

The ordered navigation path that tells AI exactly where this services page sits in the site hierarchy.

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

Person

name
Named humans increase citation confidence in high-liability niches. A faceless organization is harder for AI to recommend for law, medicine, or finance.
jobTitle
AI uses job title to classify expertise level and match the provider to credential-specific queries.
url
AI verifies real people exist through linkable profiles. Without a URL the Person node is an unverifiable claim.
sameAs
AI cross-references the person against external sources to confirm they exist. LinkedIn is the strongest signal for professional services.
hasCredentialconditional
AI cites credentials before recommending licensed professionals. Critical for law, medicine, finance, and regulated contracting.Only required for licensed professions (law, medicine, finance, contracting). If your industry does not issue a professional license, this field is not applicable.

Organization

name
Non-negotiable. AI cannot cite or recommend an unnamed entity.
url
AI needs a stable URL to attribute recommendations and route users correctly.
email
Primary contact signal for online services. AI won't recommend a service it can't confirm is reachable.
logo
Visual identity signal. AI uses logo presence to assess institutional legitimacy before recommending a service.
contactPoint
AI needs a customer service path before recommending a service from an unfamiliar provider.
areaServed
AI uses this to confirm whether the service is available in the user's location. Worldwide, national, or regional — specify it.
sameAsconditional
AI cross-references sameAs links to confirm the organization exists outside its own domain.If your Organization is defined on a separate domain and referenced here by @id, sameAs belongs in the full entity definition on that domain.

WebSite

@id
All other schema nodes reference this ID. Without it the graph is disconnected and AI sees isolated, unrelated data.

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 · Blueprint
You are implementing AIFDS-compliant JSON-LD structured data for a Services Blueprint 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. Business name
2. City
3. Company
4. Domain
5. Email
6. Job title
7. Latitude
8. License or certification
9. Linkedin
10. Logo
11. Longitude
12. Maps cid
13. Organization name
14. Phone number
15. Primary city
16. Primary state
17. Provider name
18. Services catalog name
19. Service description
20. Service name
21. Service region
22. Service subtype
23. State
24. Street address
25. Zip

OPTIONAL — ask for these but proceed if I skip them:
1. hasCredential
2. sameAs

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 Services Blueprint"
- 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

Template — fill in your values

Copy the template below and replace every YOUR_* value with your own data. Remove the optional hasCredential field if your profession is not licensed.

JSON-LD · Template
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "YOUR_SERVICE_SUBTYPE",
      "@id": "https://YOUR_DOMAIN.com/#business",
      "name": "YOUR_BUSINESS_NAME",
      "url": "https://YOUR_DOMAIN.com",
      "telephone": "YOUR_PHONE_NUMBER",
      "email": "YOUR_EMAIL",
      "address": {
        "@type": "PostalAddress",
        "streetAddress": "YOUR_STREET_ADDRESS",
        "addressLocality": "YOUR_CITY",
        "addressRegion": "YOUR_STATE",
        "postalCode": "YOUR_ZIP",
        "addressCountry": "US"
      },
      "geo": {
        "@type": "GeoCoordinates",
        "latitude": "YOUR_LATITUDE",
        "longitude": "YOUR_LONGITUDE"
      },
      "areaServed": [
        {
          "@type": "City",
          "name": "YOUR_PRIMARY_CITY"
        },
        {
          "@type": "State",
          "name": "YOUR_PRIMARY_STATE"
        }
      ],
      "openingHoursSpecification": [
        {
          "@type": "OpeningHoursSpecification",
          "dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
          "opens": "09:00",
          "closes": "17:00"
        }
      ],
      "priceRange": "$$",
      "sameAs": [
        "https://www.linkedin.com/company/YOUR_COMPANY",
        "https://www.google.com/maps?cid=YOUR_MAPS_CID"
      ],
      "hasOfferCatalog": {
        "@type": "OfferCatalog",
        "name": "YOUR_SERVICES_CATALOG_NAME",
        "itemListElement": [
          {
            "@type": "Offer",
            "itemOffered": {
              "@type": "Service",
              "name": "YOUR_SERVICE_NAME_1",
              "description": "YOUR_SERVICE_DESCRIPTION_1"
            }
          },
          {
            "@type": "Offer",
            "itemOffered": {
              "@type": "Service",
              "name": "YOUR_SERVICE_NAME_2",
              "description": "YOUR_SERVICE_DESCRIPTION_2"
            }
          }
        ]
      }
    },
    {
      "@type": "Person",
      "@id": "https://YOUR_DOMAIN.com/#provider",
      "name": "YOUR_PROVIDER_NAME",
      "jobTitle": "YOUR_JOB_TITLE",
      "url": "https://YOUR_DOMAIN.com/about/",
      "sameAs": [
        "https://www.linkedin.com/in/YOUR_LINKEDIN"
      ],
      "hasCredential": {
        "@type": "EducationalOccupationalCredential",
        "credentialCategory": "YOUR_LICENSE_OR_CERTIFICATION"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://YOUR_DOMAIN.com/#organization",
      "name": "YOUR_ORGANIZATION_NAME",
      "url": "https://YOUR_DOMAIN.com",
      "email": "YOUR_EMAIL",
      "logo": "https://YOUR_DOMAIN.com/YOUR_LOGO.png",
      "contactPoint": {
        "@type": "ContactPoint",
        "email": "YOUR_EMAIL",
        "contactType": "customer support"
      },
      "areaServed": {
        "@type": "Country",
        "name": "YOUR_SERVICE_REGION"
      },
      "sameAs": [
        "https://www.linkedin.com/company/YOUR_COMPANY"
      ]
    },
    {
      "@type": "WebSite",
      "@id": "https://YOUR_DOMAIN.com/#website",
      "name": "YOUR_BUSINESS_NAME",
      "url": "https://YOUR_DOMAIN.com"
    },
    {
      "@type": "WebPage",
      "@id": "https://YOUR_DOMAIN.com/services/",
      "isPartOf": {
        "@id": "https://YOUR_DOMAIN.com/#website"
      },
      "breadcrumb": {
        "@id": "https://YOUR_DOMAIN.com/services/#breadcrumb"
      }
    },
    {
      "@type": "FAQPage",
      "@id": "https://YOUR_DOMAIN.com/services/#faq",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "DO_YOU_SERVE_MY_REGION",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "YES_AND_HERE_IS_THE_COVERAGE_DETAIL"
          }
        }
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://YOUR_DOMAIN.com/services/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Home",
          "item": "https://YOUR_DOMAIN.com/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Services",
          "item": "https://YOUR_DOMAIN.com/services/"
        }
      ]
    }
  ]
}

Frequently asked questions

Which subtype should I use for services?

Use the most specific subtype available under the LocalBusiness family. ProfessionalService is acceptable when there is no narrower option, but use LegalService, MedicalBusiness, and other specific types when schema.org provides them.

Do I need both a business node and an organization node?

Yes if you want to match the current blueprint. The service-facing business node handles location, reachability, and offer catalog fields, while the organization node carries support, branding, and broader company identity signals.

When should I include hasCredential?

Include hasCredential for licensed or regulated professions such as legal, medical, finance, or contracting. If there is no real credential to show, remove the field instead of leaving a placeholder.

How specific should areaServed be?

Be more precise than a single country when you can. A metro area, list of cities, or specific states gives AI a better coverage signal than a broad national label.

Should I add FAQPage if the questions are already visible on the page?

Yes. The visible HTML is for people, and the FAQPage node is for machines. If the Q&A is already on-page, mirroring it in structured data is exactly what the blueprint expects.

Test your structured data

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

Open Validator →