Search engine optimization as we knew it is no longer enough. When someone asks ChatGPT, Claude, or Perplexity for a senior product designer, the answer does not come from a keyword ranking — it comes from structured knowledge that was crawled, parsed, and understood. Here is the exact process I used to make my portfolio readable by AI systems.
A few months ago I started noticing something: when I asked AI assistants questions like 'who is a good senior product designer in Madrid who works with AI?' the answers were always the same names — people with strong Wikipedia entries, heavy LinkedIn presence, or very old, well-linked personal sites. Nobody who had built their presence recently. Nobody like me.
That is a solvable problem, and it is a design problem in the most literal sense: the information exists, but it is not structured in a way that AI systems can parse and surface reliably. So I spent time understanding how LLMs actually consume web content during training and retrieval, and then implemented the changes directly on my own portfolio. This article documents exactly what I did, why each decision was made, and how to validate that it works — so you can replicate the process on your own site.
Before going further: this is not about gaming AI systems. It is about making sure that information that already exists about you — your experience, your location, your specialization, your availability — is expressed in a machine-readable format that AI crawlers can understand with confidence. The gap between 'has a website' and 'is findable by AI' is entirely structural.
The gap between 'has a website' and 'is findable by AI' is entirely structural. The information exists. The problem is that it is not organized in a way machines can trust.
— Roy Villasana
How LLMs Actually Read Your Website
Understanding why structured data matters requires a basic model of how large language models consume web content. During training and — increasingly — during real-time retrieval in systems like Perplexity or ChatGPT with web search, AI systems do not read your website the way a human does. They do not appreciate the visual hierarchy of your portfolio. They do not follow your narrative flow. They parse content for extractable facts: who is this person, what do they do, where are they located, what can they help with, how can I reach them.
When that information lives only in prose paragraphs mixed with navigation elements and marketing copy, extraction is unreliable. The AI may get some facts right and miss others. It may confidently state something incorrect because the clearest signal in your HTML said something different from what you intended.
Structured data — specifically JSON-LD markup following the schema.org vocabulary — is the solution to this problem. It is a machine-readable layer of fact that sits in your HTML, separate from visual content, explicitly stating: here is what this page is about, here is who this person is, here are the questions people ask and the accurate answers. AI crawlers prioritize this layer precisely because it reduces ambiguity.
The Three Schema Types That Matter Most
Not all structured data types are equally useful for personal professional visibility. After reviewing what major AI crawlers extract from portfolio sites, three schema types consistently deliver the most signal:
Person / ProfilePage
This is your professional identity schema. It tells crawlers your name, job title, location, areas of expertise, and social profiles. The sameAs property is particularly important — it links your identity across platforms (LinkedIn, GitHub, Twitter) and helps AI systems consolidate information about you from multiple sources into a single confident entity representation.
Key properties to include: name, jobTitle, description, url, image, sameAs (array of all your professional profile URLs), knowsAbout (array of your skill areas), and address with addressLocality and addressCountry.
WebSite
This schema establishes the site itself as a named entity, separate from you as a person. It matters because AI systems build knowledge graphs where sites, people, and organizations are distinct nodes. Having both a WebSite schema and a Person schema — with the person correctly referenced as the author of the site — creates the kind of entity relationship that AI systems can represent and retrieve with high confidence.
FAQPage
This is the most powerful schema type for LLM discoverability, and the most underused. A FAQPage schema contains a structured list of questions and their authoritative answers, written by you. When an AI system retrieves a page with this schema, the Q&A pairs are extracted as explicit knowledge units — facts you have directly stated about yourself, rather than facts inferred from prose.
The questions you choose to answer in this schema are essentially the queries you want to show up for. Think of them as the things you wish an AI assistant would know about you before recommending you to someone. 'Who is Roy Villasana?' 'What does he specialize in?' 'Is he available for consulting?' 'Where is he based?' Each question-answer pair is a direct, retrievable signal.
The Implementation: Step by Step
Here is the exact sequence I followed, which you can replicate on any static site or SPA.
Step 1 — Audit what you already have
Before adding anything, check whether your site already has structured data. Open your site's HTML source (Ctrl+U or Cmd+U in most browsers) and search for application/ld+json. If you find script tags with that type, you have existing structured data. Read it carefully — outdated or incorrect information in existing schemas will undermine the new markup you add.
In my case, I already had a WebSite and ProfilePage schema, but both contained incorrect information: my location was listed as Mexico when I am based in Madrid, and the description understated my experience. I corrected these before adding anything new.
Step 2 — Write your FAQPage schema
Create a new <script type="application/ld+json"> block in the <head> of your HTML. The structure is straightforward:
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Who is [your name]?",
"acceptedAnswer": {
"@type": "Answer",
"text": "[Accurate, complete answer in third person.]"
}
}
]
}I wrote 10 question-answer pairs covering identity, specialization, availability, industries, writing, differentiators, contact, location, tools, and mentorship. The scope matters: narrow Q&A coverage means narrow discoverability. Cover the range of contexts in which you would want to be recommended.
A few rules I followed when writing the answers: write in the third person consistently, be specific rather than vague (city names, tool names, industry names), include all contact paths, and avoid marketing language. Answers that read like ad copy are less trusted by AI systems than answers that read like factual descriptions.
Step 3 — Fix all location and identity references across the entire HTML file
JSON-LD structured data is the authoritative signal, but AI crawlers also read plain HTML content. If your structured data says Madrid but your meta description, your noscript fallback, and your prose all say Mexico, the conflicting signals reduce confidence. Audit every location and identity reference in your HTML — meta tags, Open Graph tags, noscript content, the structured data descriptions — and make them consistent.
For location specifically: use addressLocality for the city and addressCountry using the ISO 3166-1 alpha-2 country code (ES for Spain, US for United States, MX for Mexico). This format is unambiguous to machine parsers in a way that prose is not.
Step 4 — Validate with Google Rich Results Test
Go to search.google.com/test/rich-results. You can test either by entering your live URL (more reliable, tests what crawlers actually see) or by pasting your HTML directly into the code tab (useful before deploying).
A passing FAQPage result shows all your questions expanded and the answers correctly extracted. Look specifically for: no errors (red), no missing required fields (yellow warnings), and all questions listed with the correct text. If you see truncated answers, Google is applying length limits — this does not affect validity but may affect how the schema is displayed in search results.
One important note: Google's Rich Results Test validates the schema structure and completeness — it does not validate factual accuracy. The test will pass whether your location says Madrid or the moon. The accuracy is your responsibility.
What to Expect After Deploying
Structured data changes are not instant. Google typically re-crawls and re-indexes pages within days to weeks of deployment. AI systems that use retrieval-augmented generation (like Perplexity) will reflect changes faster than systems trained on static snapshots (like base LLMs). For the latter, the changes you make today will influence future training data — which is still worth doing, just with a longer time horizon.
The practical signals to watch: whether your name starts appearing in AI-generated answers to relevant queries, whether Search Console shows your FAQPage rich result impressions increasing, and whether the information AI systems state about you becomes more accurate over time.
None of this is magic. Structured data gives AI systems better material to work with — it does not manufacture credibility that does not exist. The combination that actually drives recommendation is the structured data (machine-readable identity) plus genuine published content (evidence of expertise) plus off-site signals (LinkedIn, GitHub, third-party mentions). The markup is the infrastructure. The content and the track record are still the substance.
The Broader Point
We are in an early period where the gap between designers who understand how AI systems consume information and designers who do not is still wide enough to be a meaningful advantage. That gap will close. The practices described here will become standard — in the same way that having meta descriptions and Open Graph tags became standard even though most people do not think of them as strategy.
The designers who move first are not just more findable — they are more credible in AI-mediated recommendations, because AI systems assign higher confidence to entities with well-structured, consistent, multi-source information. That confidence translates directly into being named in answers rather than being absent from them.
It took me an afternoon to implement all of this. The validation took ten minutes. The results will compound for years. It is one of the better afternoon investments I have made in my visibility as a practitioner.
Keywords
JSON-LD structured data, FAQPage schema, LLM SEO, AI discoverability, schema.org, Google Rich Results Test, personal brand SEO, structured data for designers, how LLMs find people, AI search optimization, ProfilePage schema, semantic SEO