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.
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:
@type, not generic LocalBusiness, so AI can match you to the right service query.telephone, email, and openingHoursSpecification tell AI whether someone can actually contact you.address, geo, and areaServed determine whether you qualify for local or regional recommendations.hasOfferCatalog is the field that lets AI map your firm to specific service requests instead of guessing from page copy.Person node with jobTitle, sameAs, and hasCredential when applicable raises trust for regulated categories.Organization node carries logo, contactPoint, and broader areaServed coverage for the company.WebSite, WebPage, BreadcrumbList, and optional FAQPage connect the service page into a crawlable graph.Without those fields, AI may know your firm exists but still skip it because the location, service scope, or provider credibility is incomplete.
This blueprint groups fields across seven schema nodes:
This is the service-facing entity. It should include @type, name, url, telephone, email, address, geo, areaServed, openingHoursSpecification, priceRange, sameAs, and hasOfferCatalog.
Use a named provider or practitioner with name, jobTitle, url, and sameAs. Add hasCredential when the profession is licensed or regulated.
The firm-level node carries name, url, email, logo, contactPoint, and broad areaServed coverage. It is where AI looks for support and institutional legitimacy.
The anchor node for the graph. The blueprint requires @id, name, and url.
Each services page should expose its own @id plus references to the site and breadcrumb graph using isPartOf and breadcrumb.
Optional but high-impact. The blueprint maps mainEntity so AI can quote direct answers about your services, region, or process.
The ordered navigation path that tells AI exactly where this services page sits in the site hierarchy.
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
namejobTitleurlsameAshasCredentialconditionalnameurlemaillogocontactPointareaServedsameAsconditional@idCopy 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 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
Copy the template below and replace every YOUR_* value with your own data. Remove the optional hasCredential field if your profession is not licensed.
{
"@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/"
}
]
}
]
}
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.
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.
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.
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.
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.