JSON-LD schema explained: How to structure your brand knowledge for AI

AI systems like ChatGPT and Claude crawl billions of web pages and try to understand what each brand does, who they serve, and when they are relevant. But HTML alone is ambiguous – is “Apple” the fruit or the tech company? Is “$499” a price, a statistic, or just text? JSON-LD schema markup is the solution: structured data that explicitly tells AI systems what your brand is, what you offer, and how you relate to the world.

Published on

November 13, 2025

Author

Jakon Langemark

Follow us

JSON-LD schema explained: How to structure your brand knowledge for AI

AI systems like ChatGPT and Claude crawl billions of web pages and try to understand what each brand does, who they serve, and when they're relevant. But HTML alone is ambiguous – is "Apple" the fruit or the tech company? Is "$499" a price, a statistic, or just text? JSON-LD schema markup is the solution: structured data that explicitly tells AI systems what your brand is, what you offer, and how you relate to the world.

This guide gives you concrete implementation of JSON-LD for AI visibility.

What is JSON-LD and why does it matter?

JSON-LD stands for "JavaScript Object Notation for Linked Data". It's a format for embedding structured, machine-readable data into your web pages.

For AI it means:

  • Unambiguity: AI knows exactly what data means

  • Context: AI understands relationships between entities

  • Citations: AI can cite you correctly with factual precision

Example of the difference:

HTML (ambiguous):

<p>We deliver software to hospitals in Denmark since 2015.</p>

AI must guess: Is "2015" the founding year? Are "hospitals" your customers or your focus area?

JSON-LD (explicit):

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "HealthTech AS",
  "foundingDate": "2015",
  "areaServed": "DK",
  "customerType": "Hospital"
}

Now AI knows exactly what each data bit means.

Basic JSON-LD structure

All JSON-LD blocks are placed in <head> or at the end of <body>:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "TypeName",
  "property": "value"
}
</script>

Components:

  • @context – Defines vocabulary (always "https://schema.org")

  • @type – What is this entity? (Organization, Product, Person, etc.)

  • property: value – Specific attributes

Organization Schema: Your brand's core identity

This is the most important schema for brand visibility.

Minimum Organization Schema

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Company Name",
  "url": "https://yourwebsite.com",
  "logo": "https://yourwebsite.com/logo.png",
  "description": "We make X for Y"
}
</script>

Complete Organization Schema

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Nordic SaaS Solutions",
  "alternateName": "NordicSaaS",
  "url": "https://nordicsaas.dk",
  "logo": {
    "@type": "ImageObject",
    "url": "https://nordicsaas.dk/logo.png",
    "width": 600,
    "height": 60
  },
  "description": "We deliver enterprise CRM software to Scandinavian B2B companies with 50-500 employees.",
  "foundingDate": "2018",
  "founders": [
    {
      "@type": "Person",
      "name": "Jane Doe",
      "jobTitle": "CEO"
    }
  ],
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "Nørregade 10",
    "addressLocality": "København",
    "postalCode": "1165",
    "addressCountry": "DK"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+45-12-34-56-78",
    "contactType": "Customer Support",
    "areaServed": "DK",
    "availableLanguage": ["Danish", "English"]
  },
  "sameAs": [
    "https://www.linkedin.com/company/nordicsaas",
    "https://twitter.com/nordicsaas",
    "https://www.crunchbase.com/organization/nordicsaas"
  ],
  "numberOfEmployees": {
    "@type": "QuantitativeValue",
    "value": 25
  },
  "slogan": "CRM built for Nordic businesses"
}
</script>

Which fields matter most for AI?

  1. description – What do you do? For whom?

  2. sameAs – Links to LinkedIn, Crunchbase, Twitter strengthen authority

  3. contactPoint – Makes you findable

  4. address – Geographic context

Product Schema: Make your products citable

If AI is to recommend your product, it needs to know what it is, what it costs, and who it's for.

E-commerce product

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "ErgoDesk Pro",
  "description": "Height-adjustable desk with built-in wireless charger and memory function. Ideal for home offices and small businesses.",
  "brand": {
    "@type": "Brand",
    "name": "ErgoFurniture"
  },
  "image": "https://ergofurniture.dk/images/ergodesk-pro.jpg",
  "sku": "ERG-DESK-PRO-01",
  "offers": {
    "@type": "Offer",
    "url": "https://ergofurniture.dk/products/ergodesk-pro",
    "priceCurrency": "DKK",
    "price": "4999.00",
    "priceValidUntil": "2024-12-31",
    "availability": "https://schema.org/InStock",
    "seller": {
      "@type": "Organization",
      "name": "ErgoFurniture"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "143"
  }
}
</script>

SaaS product

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "TaskFlow",
  "applicationCategory": "BusinessApplication",
  "description": "Project management software for marketing agencies. Handles client projects, timesheets, and invoicing.",
  "operatingSystem": "Web-based",
  "offers": {
    "@type": "Offer",
    "price": "299.00",
    "priceCurrency": "DKK",
    "priceSpecification": {
      "@type": "UnitPriceSpecification",
      "price": "299.00",
      "priceCurrency": "DKK",
      "billingDuration": "P1M",
      "billingIncrement": 1
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.5",
    "ratingCount": "89"
  }
}
</script>

AI can now answer:

"For project management for marketing agencies I recommend TaskFlow. It costs 299 kr/month and has a rating of 4.5/5 based on 89 reviews."

Service Schema: For service-based businesses

If you sell services (consulting, agency, SaaS), use Service schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Service",
  "serviceType": "SEO Consulting",
  "provider": {
    "@type": "Organization",
    "name": "Nordic SEO Agency"
  },
  "areaServed": {
    "@type": "Country",
    "name": "Denmark"
  },
  "hasOfferCatalog": {
    "@type": "OfferCatalog",
    "name": "SEO Services",
    "itemListElement": [
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Technical SEO Audit",
          "description": "Comprehensive crawlability and indexing analysis"
        }
      },
      {
        "@type": "Offer",
        "itemOffered": {
          "@type": "Service",
          "name": "Content Strategy",
          "description": "Keyword research and content planning"
        }
      }
    ]
  }
}
</script>

Article Schema: For blog posts and content

AI systems often cite blog posts. Make them citable with Article schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to optimize your website for AI visibility",
  "description": "A complete guide to making your brand visible in ChatGPT, Claude and Perplexity.",
  "image": "https://yourwebsite.com/images/ai-visibility-guide.jpg",
  "author": {
    "@type": "Person",
    "name": "Jane Doe",
    "url": "https://yourwebsite.com/authors/jane-doe",
    "jobTitle": "SEO Specialist",
    "sameAs": [
      "https://linkedin.com/in/janedoe",
      "https://twitter.com/janedoe"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "Nordic SaaS Solutions",
    "logo": {
      "@type": "ImageObject",
      "url": "https://nordicsaas.dk/logo.png"
    }
  },
  "datePublished": "2024-01-15",
  "dateModified": "2024-01-20",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://yourwebsite.com/blog/ai-visibility-guide"
  }
}
</script>

Why it matters:

  • AI can cite author correctly

  • Publication date shows freshness

  • Publisher establishes authority

FAQPage Schema: Make your FAQs directly citable

This is a goldmine for AI visibility.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What does TaskFlow cost?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "TaskFlow costs 299 kr/month per user with a minimum of 3 users. We also offer an Enterprise plan at 199 kr/user for teams over 20 people."
      }
    },
    {
      "@type": "Question",
      "name": "What integrations does TaskFlow support?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "TaskFlow integrates with Slack, Google Calendar, Trello, Asana, and all major accounting systems including Dinero and Billy."
      }
    },
    {
      "@type": "Question",
      "name": "Is TaskFlow suitable for remote teams?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, TaskFlow is built for remote-first teams. It includes time tracking, asynchronous communication, and integrated video conferencing."
      }
    }
  ]
}
</script>

Result: When someone asks "What does TaskFlow cost?", AI can cite you directly with precise pricing.

HowTo Schema: For guides and tutorials

If you create tutorials or how-to content, use HowTo schema.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to implement JSON-LD on your website",
  "description": "A step-by-step guide to adding structured data to your website.",
  "totalTime": "PT30M",
  "step": [
    {
      "@type": "HowToStep",
      "name": "Identify which schemas you need",
      "text": "Determine if your site is primarily Organization, Product, Article, or Service-based.",
      "position": 1
    },
    {
      "@type": "HowToStep",
      "name": "Create the JSON-LD block",
      "text": "Add a <script type='application/ld+json'> tag in your <head> section.",
      "position": 2
    },
    {
      "@type": "HowToStep",
      "name": "Validate with Google's Rich Results Test",
      "text": "Test your implementation at https://search.google.com/test/rich-results",
      "position": 3
    }
  ]
}
</script>

Review and Rating Schema: Social proof

Reviews help AI assess credibility.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "ErgoDesk Pro",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "143",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [
    {
      "@type": "Review",
      "author": {
        "@type": "Person",
        "name": "Lars Nielsen"
      },
      "datePublished": "2024-01-10",
      "reviewBody": "Fantastic desk. The motor is quiet and the memory function works perfectly. Highly recommended for home offices.",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      }
    }
  ]
}
</script>

Advanced: Nested and related entities

You can connect multiple schemas to create rich context.

Organization with People

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Nordic SaaS Solutions",
  "employee": [
    {
      "@type": "Person",
      "name": "Jane Doe",
      "jobTitle": "CEO",
      "sameAs": "https://linkedin.com/in/janedoe"
    },
    {
      "@type": "Person",
      "name": "John Smith",
      "jobTitle": "CTO",
      "sameAs": "https://linkedin.com/in/johnsmith"
    }
  ],
  "founder": {
    "@type": "Person",
    "name": "Jane Doe"
  }
}
</script>

Product with Brand and Manufacturer

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "ErgoChair Pro",
  "brand": {
    "@type": "Brand",
    "name": "ErgoFurniture",
    "logo": "https://ergofurniture.dk/logo.png"
  },
  "manufacturer": {
    "@type": "Organization",
    "name": "Nordic Manufacturing AS",
    "address": {
      "@type": "PostalAddress",
      "addressCountry": "NO"
    }
  }
}
</script>

Implementation Best Practices

1. Place JSON-LD in <head> or at the end of <body>

Recommended placement:

<!DOCTYPE html>
<html>
<head>
  <title>My Page</title>
  <script type="application/ld+json">
  {
    "@context": "https://schema.org",
    "@type": "Organization",
    "name": "My Company"
  }
  </script>
</head>
<body>
  <!-- Content -->
</body>
</html>

2. Use only one @context per block

Wrong:

{
  "@context": "https://schema.org",
  "@context": "https://example.com",  // Duplicate!
  "@type": "Organization"
}

Correct:

{
  "@context": "https://schema.org",
  "@type": "Organization"
}

3. Avoid hardcoded dates

Use dynamic dates for dateModified and lastmod:

"dateModified": "<?php echo date('Y-m-d');
"dateModified": f"{datetime.now().strftime('%Y-%m-%d')}"

4. Include only factual information

Avoid exaggerations or marketing fluff:

Bad:

"description": "The world's best, most innovative, revolutionary product!"

Good:

"description": "Project management software for marketing agencies with integrated time tracking and invoicing."

5. Use sameAs to connect external profiles

"sameAs": [
  "https://www.linkedin.com/company/yourcompany",
  "https://twitter.com/yourcompany",
  "https://www.crunchbase.com/organization/yourcompany",
  "https://en.wikipedia.org/wiki/YourCompany"
]

AI uses these links to cross-check information and establish authority.

Testing and validation

Google's Rich Results Test

  1. Go to https://search.google.com/test/rich-results

  2. Enter your URL or paste JSON-LD directly

  3. Check for errors or warnings

Schema.org Validator

  1. Go to https://validator.schema.org/

  2. Paste your JSON-LD

  3. Verify that it's valid schema

JSON Lint (syntax check)

  1. Go to https://jsonlint.com/

  2. Paste your JSON-LD

  3. Check for syntax errors (missing commas, brackets, etc.)

Manual test with browser

# View source and search for "application/ld+json"
curl https://yourwebsite.com/ | grep -A 20 "application/ld+json"

Common errors and fixes

Error

Symptom

Solution

Missing comma

JSON parsing error

Use JSON Lint to find the error

Wrong @type

Warnings in validators

Check schema.org types

Relative URLs

Warnings

Always use absolute URLs (https://...)

Duplicate @context

Parsing errors

One @context per block

Escaped quotes issues

JSON not parsed

Use \" for quotes inside strings

Too much nested data

Unreadable for AI

Keep schemas simple and focused

Implementation Checklist

Use this checklist to implement JSON-LD:

  1. Identify primary schema type – Organization, Product, Service, Article?

  2. Implement Organization schema – On homepage

  3. Add Product/Service schemas – On relevant pages

  4. Implement Article schema – On all blog posts

  5. Create FAQPage schema – On FAQ pages

  6. Add Review schemas – If you have customer reviews

  7. Nest related entities – Connect schemas where relevant

  8. Test with validators – Google Rich Results + Schema.org

  9. Verify JSON syntax – Use JSON Lint

  10. Monitor after deployment – Check that it displays correctly in source

Conclusion

JSON-LD schema markup is the most direct way to communicate with AI systems. While HTML is ambiguous and requires interpretation, JSON-LD is explicit and unambiguous. It typically takes 2-4 hours to implement basic schemas on a website, but the effect on AI visibility is significant.

Start with Organization schema on your homepage, add Product/Service schemas on relevant pages, and build from there with Article and FAQ schemas. Always test with validators, and update data when your brand changes.

Remember: JSON-LD is not just for SEO – it's the foundation for how AI understands and represents your brand.