Dan Kornberg
← All projects

Semantic layer & context engineering · Wix · AI strategist

Every team had its own map of Wix. I built one everyone could share.

A semantic layer that ties Wix's product names to the code, copy, data, and people behind them, so colleagues and AI agents work from the same context.

  • 1,070 code projects, 158 catalog domains, and 89 glossary domains in one map
  • Validated on three domains by their owners and the data team
  • Reproducible: five staged pipelines, regenerated rather than edited by hand
Glossary termThe anchor
  • Repos
  • Owners
  • Data tables
  • CMS
  • TMS
  • Help articles
One term, tied to everything behind it.

01 · The problem

Nobody agreed on what a “domain” was.

At Wix, “domain” could mean a product surface, the code a team owns, or even who reports to whom. Developers, writers, analysts, and marketing each carved up the product differently, and the same area went by different names in data tables, the CMS, GitHub, hr systems, and internal tools.

One product area
Example names, not Wix's real systems.

02 · The gap

Agents needed a map, and there wasn't one.

Before agents, content changes went through the CMS, so a writer always made them. Once PMs had agents with access to the code, anyone could change content, design, even data tables, often outside their expertise. And to do a task right, an agent needs to know which domain it's in.

An agent, mid-taskWhich domain am I in?
  • Its glossary and banned terms
  • What users complain about
  • Which repos to touch
  • Which help articles to keep in sync

03 · What I did

Everyone wanted their own system at the center.

I spotted the gap while building the glossary checker: there was no way to tell an agent “you're working on this domain, here's everything relevant.” I talked to developers, data engineers, and analysts to learn which systems each team used and where they actually connect. Developers wanted the map built around their repos, analysts around their tables. I pushed for one shared map.

One shared map
ReposDevelopers
Data tablesAnalysts
Data catalogData engineers

04 · The anchor

I pegged everything to the glossary.

The glossary was the cleanest system Wix had: terminology first, with official names that matched the product. From each glossary domain I found the repos, then the code owners, then the data tables. The first version used the official data catalog as the spine instead. That broke for about 70% of user-facing domains, because the catalog lists the data team as the owner, not the team that owns the UI. So I flipped it: the CMS, where Wix's product strings live, became the spine for code and copy, and the catalog the spine for naming.

“The glossary, like the us dollar being kind of the currency that everything else is pegged to.”

First try: the data catalog as the spine

~70% of user-facing domains got the wrong owner

The flip: the glossary and the CMS as the spine

Owners matched the teams that own the UI

05 · How it works

One domain at a time, mapped the same way every time.

For each domain, the research starts from its glossary terms, finds the code packages behind them, and has subagents sort each one into include, related, or drop. A second pass catches nearby projects that search would miss and suggests missing glossary terms, as suggestions only. Then it records how domains relate and publishes a page employees can search. Each of the five pipelines is a skill plus a Python script, and a fresh run reproduces everything exactly.

Try it: pick an example domain and map it.

  1. 1 anchor

    Start from the domain's glossary terms

  2. 2 discover

    Find the code packages behind them

  3. 3 sort

    Subagents sort each package

  4. 4 second pass

    Catch what search missed; suggest only

  5. 5 publish

    One searchable page per domain

Example domains, packages, owners, and tables, not Wix's real map.

06 · Result

Three domains, mapped right for the first time.

Management approved it, and it was validated on three domains, one of them partners. Owners from those domains, plus data engineers and analysts, confirmed the maps were accurate, mapped in a way neither data nor engineering had done before. Senior data and product people were excited about it.

  • Confirmed by domain owners
  • Confirmed by data engineers
  • Confirmed by analysts
  • Approved by management

07 · What it's for

One map, so a change in one place can be traced everywhere.

The semantic layer is the bedrock of Wix's context engineering effort: agents from different teams speak the same language and can hand work to each other. A user-facing term can be traced across data tables, internal systems, repos, the CMS, and the TMS, and I designed notifications for a domain's owners when another team's change touches their area. The point of all of it: content written automatically, at scale, and cleanly.

A copy changeMade by anyone
  • Repos
  • Owner notified
  • Data tables
  • CMS
  • TMS
  • Help articles

08 · Where it started

It all started from the glossary.

The glossary gave the map its anchor: one official name for every part of the product, owned and approved by the people who know it best.

Related project Writers Guild glossary system →

More detail

How it works, step by step
  1. Start from a glossary domain: its official terms are the anchor.
  2. Seed discovery from the CMS: find the code packages that hold the domain's strings.
  3. Subagents sort each candidate package into include, related, or drop, and pull out the product flows. Everything is combined into one map per domain.
  4. A second pass starts from the confirmed packages, finds nearby projects that keyword or semantic search would miss, and suggests glossary gaps. Suggestions never overwrite the map.
  5. An alignment step records typed relationships between domains: parent, child, sibling, depends-on, integrates-with. Together they work as a knowledge graph.
  6. Each domain map is published to a page employees can search and check.

Five staged pipelines, each a Cursor skill plus a Python script. They cache their results, and a fresh run reproduces everything exactly. The map is regenerated and validated, never edited by hand, and it's versioned in git.

My role
  • Spotted the gap while building the glossary checker
  • Talked to developers, data engineers, and analysts to learn which systems each team used and where they connect
  • Architected the semantic layer and its five pipelines, and ran them
  • Chose the glossary as the anchor, and flipped the spine when the data catalog didn't hold
  • Worked closely with the data teams, and filled the gaps between their systems
  • Designed automated refreshes, validation, and owner notifications for the infra team
Tools
  • Python
  • Cursor
  • Codex
  • Claude Code
  • MCP
  • OpenMetadata
  • GitHub
Questions a hiring manager might ask
Why anchor on the glossary?
It was the cleanest system Wix had: terminology first, with official names that matched the product. Every other system could be tied back to it.
How did you know the maps were right?
Owners from three domains, plus data engineers and analysts, checked them and confirmed they were accurate.
What was the hardest part?
Getting teams to share one map. Every team wanted its own system at the center. And when the data catalog didn't hold up as the spine, I had to flip the approach.