Making My Website Machine-Readable
I wanted search engines and AI systems to understand that my scattered profiles all represent the same person.
- seo
- structured-data
- schema-org
- engineering
I have profiles everywhere.
GitHub. LinkedIn. Product Hunt. Crunchbase. Peerlist. Devpost. Hashnode. F6S. Stack Overflow.
And probably too many others.
To a human, it is pretty obvious that they are all me.
To a machine, that is not necessarily true.
Different usernames, profile URLs, descriptions, and dozens of websites create a fragmented identity. So I recently changed how my portfolio represents me.
Not visually.
Structurally.
My website became the canonical identity
I wanted one URL to act as the source of truth:
https://www.jansencadorna.comEverything else becomes an external representation of the same person.
Instead of treating SEO purely as titles, descriptions, keywords, and sitemaps, I started looking at it as an entity problem.
- Who is Jansen Cadorna?
- Which website belongs to him?
- Which profiles represent him?
- Which company is he affiliated with?
Those relationships can be expressed in structured data.
One Person entity
My site now defines a Schema.org Person entity with a stable ID:
https://www.jansencadorna.com/#personIt contains things like:
- my canonical name
- profile image
- role
- professional description
- areas of expertise
- external profiles
- organizational affiliation
The important part is the stable ID.
Different pieces of structured data can now reference the same person instead of describing slightly different copies of me.
Connecting all the profiles
Schema.org provides a property called sameAs.
It lets the site say that my GitHub account, LinkedIn page, Product Hunt profile, Crunchbase page, and other profiles represent the same entity.
Instead of this:
GitHub Jansen?
LinkedIn Jansen?
Crunchbase Jansen?
Peerlist Jansen?
Portfolio Jansen?The graph becomes closer to:
GitHub
^
LinkedIn <- Jansen Cadorna -> Product Hunt
|
Crunchbase
|
PeerlistMy portfolio acts as the center.
This does not magically guarantee rankings or a Knowledge Panel. But it gives crawlers much cleaner information to work with.
The website is its own entity too
The portfolio itself is represented separately as a WebSite:
https://www.jansencadorna.com/#websiteThat website references my Person entity as its publisher.
Instead of duplicating my information, the relationship becomes:
Jansen Cadorna
|
publisher of
|
jansencadorna.comThen I added the profile page
Because the homepage is primarily about me, it can also be represented as a ProfilePage.
That entity points back to the same person:
ProfilePage
| mainEntity
v
PersonThe page is also part of the WebSite. All three entities connect rather than existing as isolated JSON objects.
Abstruck needed to stay separate
One easy mistake would have been adding my startup, Abstruck, to my personal sameAs list.
But Abstruck is not another profile for me. It is an organization.
So it gets its own entity:
https://www.jansencadorna.com/#abstruckThe relationship becomes:
Jansen Cadorna
|
affiliation
|
AbstruckAbstruck then has its own canonical website and its Crunchbase organization page as an external identity.
That distinction matters. The graph should describe reality instead of stuffing URLs into structured data because they look useful for SEO.
I centralized everything in code
Another thing I wanted to avoid was identity drift.
Imagine updating my Threads URL in the footer but forgetting the JSON-LD. Or changing my role on the homepage while metadata still describes something else.
The portfolio now keeps the important identity information in one configuration. The UI, metadata, and structured data consume that same source.
Conceptually:
siteConfig
|
|-- homepage
|-- footer
|-- metadata
`-- JSON-LDOne identity. Multiple representations.
SEO is becoming less about strings
I used to think about SEO mostly in terms of:
<title>
<meta description>
keywords
sitemap
robots.txtThose still matter.
But modern search systems also need to understand things and relationships.
Person. Organization. Website. Article. Profile. Author. Founder. Product.
Once I started looking at SEO this way, structured data made a lot more sense.
I am not trying to tell Google:
Rank "Jansen Cadorna" higher.
I am trying to make the underlying statement unambiguous:
This is Jansen Cadorna.
This is his website.
These profiles are also him.
This organization is associated with him.The ranking part is still earned elsewhere.
The machine-readable foundation just makes the identity easier to understand.