You do not need to understand how JSON-LD works to implement it correctly. You need to understand what it tells AI systems about you, and why getting it right matters more than most things you are probably doing for visibility.

This is the guide I wish existed when I started building entity infrastructure for my own companies. No jargon. No assumed knowledge. Actual code you can copy, edit, and use today.

What JSON-LD Person schema actually does

When an AI agent visits your website, it reads two things: the content humans read, and the structured data machines read. JSON-LD is the structured data.

A Person schema block tells AI systems: this website belongs to a specific person, here is their name and description, here are the roles they hold, here are the organisations they are connected to, here is where you can verify these claims across independent sources.

Without it, an AI agent has to infer your identity from unstructured text. It might infer correctly. It might not. Structured declarations are not subject to interpretation.

The required fields

These are the fields that matter. Everything else is optional enhancement.

Field What it does Example value
@context Tells systems this is Schema.org vocabulary "https://schema.org"
@type Declares this is a Person entity "Person"
name Your full name, exactly as it appears elsewhere "Ibrahim Anwar"
url Your canonical homepage URL "https://hibranwar.com"
description One clear sentence about who you are and what you do See example below
jobTitle Your primary role or title "Practitioner & Director"
sameAs Array of verified external profiles LinkedIn, ORCID, etc.

The sameAs field is the most underused and most important. It creates the cross-reference links that allow AI systems to verify your identity across independent sources. Without it, your schema is a declaration with no verification chain.

The actual code

This is the Person schema I run on hibranwar.com. Copy it, edit the values to match your actual information, and paste it inside a <script> tag in the <head> section of your homepage.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Ibrahim Anwar",
  "alternateName": "Hibranwar",
  "url": "https://hibranwar.com",
  "image": "https://hibranwar.com/img/ibrahim-anwar.jpg",
  "description": "Practitioner and Director building entity infrastructure for industrial and enterprise clients. Founder of Witanabe, Arsindo, and Hibrkraft.",
  "jobTitle": "Practitioner & Director",
  "worksFor": [
    {
      "@type": "Organization",
      "name": "Witanabe",
      "url": "https://witanabe.com"
    },
    {
      "@type": "Organization",
      "name": "PT Arsindo Cipta Perkasa",
      "url": "https://ptarsindo.com"
    },
    {
      "@type": "Organization",
      "name": "Hibrkraft",
      "url": "https://hibrkraft.com"
    }
  ],
  "knowsAbout": [
    "Entity Infrastructure",
    "AI Search Visibility",
    "Industrial Engineering",
    "System Design",
    "Publishing"
  ],
  "nationality": {
    "@type": "Country",
    "name": "Indonesia"
  },
  "sameAs": [
    "https://www.linkedin.com/in/hibranwar/",
    "https://orcid.org/0009-0005-2721-6021",
    "https://osf.io/YOUR_OSF_ID",
    "https://zenodo.org/search?q=hibranwar",
    "https://www.instagram.com/hibranwar/"
  ]
}

The sameAs array is where you list every verified external profile. LinkedIn, ORCID, Google Scholar, GitHub, relevant directories. Each entry adds a verification link. The more links, the stronger the identity verification chain.

Common mistakes that break the schema

Using different name variations. If your schema says "Ibrahim Anwar" but your LinkedIn says "Bram Anwar" and your Google Business Profile says "H. Ibrahim Anwar, ST.", the cross-reference fails. Pick one canonical form and use it everywhere.

Wrong URL format. The url field must match your actual canonical URL exactly, including whether it has a trailing slash or not. If your website redirects hibranwar.com to www.hibranwar.com, use the destination URL.

Empty or vague description. "Entrepreneur and professional" tells an AI system nothing useful. Be specific about what you actually do.

Missing sameAs entries. This is the most common omission. A Person schema with no sameAs is a declaration with no verification. Minimum: LinkedIn and one academic or government identifier (ORCID is free and takes 10 minutes to set up).

Putting it in the wrong place. The JSON-LD block goes inside <script type="application/ld+json"> tags in the <head> section. Not in the body. Not as a separate file. Inline in the head.

How to verify it is working

After adding the schema, check it at validator.schema.org. Paste your URL or paste the code directly. It will tell you if there are errors, warnings, or missing recommended fields.

A clean validation does not guarantee immediate AI citation. It guarantees your declaration is machine-readable and correctly formatted. The citation follows from that, combined with the rest of the entity infrastructure.

One thing this does not fix on its own

Schema is the machine-readable declaration layer. It works best when it is confirming claims that are already verifiable through your content.

If your schema says you have 558 published titles but there is no public documentation of those titles anywhere on your domain, the schema is declaring something an AI agent cannot verify. Schema and evidence must work together.

Build both. The schema tells machines what to look for. The content gives them something to find.

Aku praktisi. Silakan tanya.