Your portfolio page showcases completed plumbing projects. This blueprint structures each job — from commercial rough-ins to whole-house repipes — as a collection of creative works so AI can understand the scope and variety of your experience and surface your business for relevant project queries.
A portfolio page proves you have done the work. When someone asks AI for a plumber who has experience with commercial build-outs or copper-to-PEX transitions, your portfolio is the evidence. Structured data turns a gallery of project photos into a machine-readable list of capabilities that AI can index and cite.
CollectionPage with a mainEntity of type ItemList tells AI this page is an organized collection of work samples, not a single project page.CreativeWork in the list represents a completed job with its own name, description, and image. AI uses these to understand what types of plumbing work you have actually performed.author reference on each project points back to your Plumber node, so AI connects the completed work to your company identity.datePublished on each entry tells AI how recent your work is. A portfolio with recent projects signals an active, current business.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
nameurlCopy 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 Plumber Portfolio 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. Commercial roughin description 3. Domain 4. Faq answer 5. Faq question 6. Portfolio page description 7. Portfolio page title 8. Project date 9. Project description 10. Project image 11. Project name 12. Repipe date 13. Repipe description 14. Repipe image 15. Roughin date 16. Roughin image 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 Plumber Portfolio" - 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. Add or remove CreativeWork entries to match your actual completed projects. This block belongs in a <script type="application/ld+json"> tag in the <head> of your portfolio page.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "CollectionPage",
"@id": "https://YOUR_DOMAIN.com/portfolio/#webpage",
"name": "YOUR_PORTFOLIO_PAGE_TITLE",
"description": "YOUR_PORTFOLIO_PAGE_DESCRIPTION",
"url": "https://YOUR_DOMAIN.com/portfolio/",
"isPartOf": {
"@id": "https://YOUR_DOMAIN.com/#website"
},
"about": {
"@id": "https://YOUR_DOMAIN.com/#business"
},
"mainEntity": {
"@type": "ItemList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "CreativeWork",
"name": "Commercial Rough-In",
"description": "YOUR_COMMERCIAL_ROUGHIN_DESCRIPTION",
"image": "https://YOUR_DOMAIN.com/YOUR_ROUGHIN_IMAGE.jpg",
"datePublished": "YOUR_ROUGHIN_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#business"
}
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "CreativeWork",
"name": "Whole-House Repipe",
"description": "YOUR_REPIPE_DESCRIPTION",
"image": "https://YOUR_DOMAIN.com/YOUR_REPIPE_IMAGE.jpg",
"datePublished": "YOUR_REPIPE_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#business"
}
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "CreativeWork",
"name": "YOUR_PROJECT_NAME_3",
"description": "YOUR_PROJECT_DESCRIPTION_3",
"image": "https://YOUR_DOMAIN.com/YOUR_PROJECT_IMAGE_3.jpg",
"datePublished": "YOUR_PROJECT_DATE_3",
"author": {
"@id": "https://YOUR_DOMAIN.com/#business"
}
}
}
]
},
"breadcrumb": {
"@id": "https://YOUR_DOMAIN.com/portfolio/#breadcrumb"
}
},
{
"@type": "Plumber",
"@id": "https://YOUR_DOMAIN.com/#business",
"name": "YOUR_BUSINESS_NAME",
"url": "https://YOUR_DOMAIN.com"
},
{
"@type": "BreadcrumbList",
"@id": "https://YOUR_DOMAIN.com/portfolio/#breadcrumb",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://YOUR_DOMAIN.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Portfolio",
"item": "https://YOUR_DOMAIN.com/portfolio/"
}
]
},
{
"@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"
}
}
]
}
]
}
CreativeWork is the broadest Schema.org type for content that someone produced. It works well for portfolio entries because AI understands it as "something this business created or completed." There is no PlumbingProject type in Schema.org, so CreativeWork with a descriptive name and description is the best fit. AI reads the description to understand the project type.
Include your strongest and most varied projects. Five to ten entries that cover different types of plumbing work — residential, commercial, new construction, remodels, emergency repairs — give AI a well-rounded picture of your capabilities. A single project type repeated ten times is less useful than five different project types.
Yes. The image field on each CreativeWork gives AI a visual reference for the completed work. While AI primarily reads the text fields, image URLs help search engines display rich results with thumbnails. Use high-quality photos of the actual completed work, not stock images.