The portfolio page showcases your NGO's completed programs, campaigns, and community outcomes. This blueprint structures each initiative as a CreativeWork inside an ItemList, giving AI a browsable catalog of your organization's work that it can reference when answering questions about what your NGO has accomplished.
A portfolio page gives AI a structured index of your completed work. When someone asks "what programs has this NGO run?" or "show me examples of their community work," AI needs machine-readable data to pull from. An unstructured gallery of images and text forces AI to guess.
CollectionPage as the page type to signal this is a curated collection of work, not a single article or generic page.CreativeWork inside an ItemList. This gives AI a numbered, ordered set of initiatives it can iterate through.CreativeWork to your NGO entity via author tells AI which organization is responsible for each initiative.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
nameurllogoCopy 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 NGO 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. Domain 2. Logo 3. Organization name 4. Portfolio faq answer 5. Portfolio faq question 6. Program 7. Total items 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 NGO 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 ListItem entries to match your actual portfolio. This block goes in the <head> of your portfolio page.
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "CollectionPage",
"@id": "https://YOUR_DOMAIN.com/portfolio/#webpage",
"name": "Our Work — YOUR_ORGANIZATION_NAME",
"url": "https://YOUR_DOMAIN.com/portfolio/",
"description": "Completed programs, campaigns, and community outcomes by YOUR_ORGANIZATION_NAME.",
"isPartOf": {
"@id": "https://YOUR_DOMAIN.com/#website"
},
"about": {
"@id": "https://YOUR_DOMAIN.com/#organization"
},
"breadcrumb": {
"@id": "https://YOUR_DOMAIN.com/portfolio/#breadcrumb"
},
"mainEntity": {
"@id": "https://YOUR_DOMAIN.com/portfolio/#list"
}
},
{
"@type": "ItemList",
"@id": "https://YOUR_DOMAIN.com/portfolio/#list",
"name": "Programs and Campaigns",
"numberOfItems": YOUR_TOTAL_ITEMS,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "CreativeWork",
"name": "YOUR_PROGRAM_1_NAME",
"description": "YOUR_PROGRAM_1_DESCRIPTION",
"url": "https://YOUR_DOMAIN.com/portfolio/YOUR_PROGRAM_1_SLUG/",
"image": "https://YOUR_DOMAIN.com/YOUR_PROGRAM_1_IMAGE.jpg",
"datePublished": "YOUR_PROGRAM_1_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#organization"
}
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "CreativeWork",
"name": "YOUR_PROGRAM_2_NAME",
"description": "YOUR_PROGRAM_2_DESCRIPTION",
"url": "https://YOUR_DOMAIN.com/portfolio/YOUR_PROGRAM_2_SLUG/",
"image": "https://YOUR_DOMAIN.com/YOUR_PROGRAM_2_IMAGE.jpg",
"datePublished": "YOUR_PROGRAM_2_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#organization"
}
}
},
{
"@type": "ListItem",
"position": 3,
"item": {
"@type": "CreativeWork",
"name": "YOUR_PROGRAM_3_NAME",
"description": "YOUR_PROGRAM_3_DESCRIPTION",
"url": "https://YOUR_DOMAIN.com/portfolio/YOUR_PROGRAM_3_SLUG/",
"image": "https://YOUR_DOMAIN.com/YOUR_PROGRAM_3_IMAGE.jpg",
"datePublished": "YOUR_PROGRAM_3_DATE",
"author": {
"@id": "https://YOUR_DOMAIN.com/#organization"
}
}
}
]
},
{
"@type": "NGO",
"@id": "https://YOUR_DOMAIN.com/#organization",
"name": "YOUR_ORGANIZATION_NAME",
"url": "https://YOUR_DOMAIN.com",
"logo": "https://YOUR_DOMAIN.com/YOUR_LOGO.png"
},
{
"@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",
"@id": "https://YOUR_DOMAIN.com/portfolio/#faq",
"mainEntity": [
{
"@type": "Question",
"name": "YOUR_PORTFOLIO_FAQ_QUESTION_1",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_PORTFOLIO_FAQ_ANSWER_1"
}
},
{
"@type": "Question",
"name": "YOUR_PORTFOLIO_FAQ_QUESTION_2",
"acceptedAnswer": {
"@type": "Answer",
"text": "YOUR_PORTFOLIO_FAQ_ANSWER_2"
}
}
]
}
]
}
Ideally, yes. Each CreativeWork should have its own url pointing to a dedicated page with more detail. If you do not have individual pages, you can use anchor links on the portfolio page itself. The key is that each item has a resolvable URL AI can follow.
The portfolio page is a collection listing of your completed work. The impact page is a narrative report with metrics and outcomes. Think of the portfolio as "what we did" and the impact page as "what difference it made." Both are valuable for AI, but they serve different query types.
Yes. Use CreativeWork for both completed and ongoing programs. If a program is ongoing, you can note that in the description. AI does not require a completion date to list an initiative in a portfolio collection.