Organizations Services Plumber

Portfolio Page Blueprint — Plumber

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.

What this page needs

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.

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

Plumber

name
Non-negotiable. AI cannot cite or recommend an unnamed entity.
url
AI needs a stable URL to attribute recommendations and route users correctly.

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 · Portfolio
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

Template — fill in your values

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.

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

Frequently asked questions

Why use CreativeWork instead of a custom project type?

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.

How many portfolio items should I include?

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.

Should portfolio images be included in the structured data?

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.

Test your structured data

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

Open Validator →