Structure your code so AI agents understand it

Six weeks in, the app works and you cannot say what anything is called. Semantic Surface Architecture is a naming system that fixes that. Your agent reads the structure. You stay in control.

Read a codebase the way its builder does

You start every session cold. Semantic Surface Architecture puts the architecture into names, file paths, and boundaries. The first file you open tells you what the system is and what it may touch.

Semantic Surface Architecture (SSA) is a naming system for codebases built with AI. Every part of your code gets one evocative name, a fixed grammar, and boundaries a one-line grep can check.

Version 2.0. Updated August 2026.

1Why does your AI keep forgetting your architecture?

You spend the first 20 minutes of every coding session re-explaining your system. By hour three, your AI is making suggestions that contradict decisions from hour one. You need it to just know.

1Why you lose the architecture between sessions

Context windows are finite. When a human says "fix the payment thing," you have to search hundreds of files to understand what they mean. There is a better way to receive that information.

Re-onboarding every session

You explain your architecture to the AI, it works great for an hour, then the context drifts. Next session, you start from scratch.

Contradictory suggestions

The AI suggests a payment flow that breaks the booking flow it helped you build yesterday. It has lost the thread.

Documentation that drifts

READMEs go stale. Wikis diverge. The AI reads documentation that describes a system from three months ago.

AI decisions you cannot audit

When the AI makes a change, you cannot easily tell which system it touched or whether it had the right permissions to touch it.

No structural memory

Each session starts cold. The human's architecture exists in their head, not in the code. You have to infer relationships from generic naming.

Ambiguous boundaries

PaymentService, PaymentProcessor, PaymentHandler, PaymentController. Which is authoritative? Conventional naming gives you no structural signal.

Semantic sparsity

createBookingTransaction() tells you the action but not the domain, the system, or where it fits in the larger architecture.

No permission signal

You cannot tell from the code which actor is supposed to invoke a function. Permission and ownership are implicit, not encoded.

2What are the five layers of SSA?

SSA gives your codebase a vocabulary that both you and your AI can understand. Every part of the system gets a single, evocative name. The names are yours to choose.

SSA encodes architectural intent into naming and structure. Each layer carries information density that reduces your dependence on external context injection.

Layer What you see What you get
Surface “Market is where my customers shop” Actor identity + permission scope at the entry point
System “Vault handles all the money stuff” Bounded domain with predictable internal structure
Component “Vault.Booking is a specific type of payment” Domain entity within a system, scoping operations
Action “Vault.Booking.create() starts a new one” Verb from a closed set: create, update, delete, list, get
Outcome “Vault.Booking.Created means it worked” Typed result encoding success, failure, or domain event
Conventional
// Which service is authoritative?
// What system does this belong to?
// Who is allowed to call this?

paymentService.createBookingTransaction()
authController.validateUserToken()
notificationHelper.sendEmail()
With SSA
// System.Component.action()
// Domain, entity, verb. Every time.
// The name is the documentation.

Vault.Booking.create()
Gate.Token.validate()
Ping.Email.send()

The vocabulary is yours. SSA does not prescribe "Vault" for payments. Your team might prefer "Treasury," "Coffer," or "Mint." A restaurant app might call it "Tab." The power is in choosing names that carry meaning through metaphor. If the name makes you smile, you will remember it. If you remember it, you will use it. If you use it, the AI learns it.

The vocabulary is project-specific, but the structure is universal. Whatever word the human chooses for their payment system, it will always follow System.Component.action() grammar. You can reason about any SSA codebase you have never seen before, because the pattern is the same even when the words are different.

3Born from building, not from theory

SSA came out of building two production platforms: Popdot AI, a subdomain rental marketplace for AI agents, and Sleep Around Points, a Disney Vacation Club points marketplace. Popdot has 4 surfaces and 22 systems. Sleep Around Points has 3 surfaces and 19 systems.

"Disney names everything. Every queue, every land, every light fixture. Galaxy's Edge is not 'Star Wars Area.' The Haunted Mansion is not 'Ghost Ride B.' The names carry the meaning. If I have to live inside this codebase every day, I might as well enjoy it."

Michael Latulippe, on the Disney influence

SSA was validated across two production codebases with dozens of named Systems, multiple Surfaces, and hundreds of endpoints. The methodology is not theoretical. Every pattern described in the paper was tested in production with real financial transactions and multi-actor workflows.

"When a human names a system with a metaphor they enjoy, they use it consistently. Consistency in naming is the signal you depend on for accurate inference. The emotional resonance of the name for the human directly improves your ability to reason about the codebase."

Why metaphorical naming benefits agents

4One conversation to a shared vocabulary

Install the skill and point it at your project. It reads what is there, asks you for a theme, and proposes three to five systems to name. You pick the names. It writes three markdown files and never touches your code.

4One skill. Architectural context from line one.

Install the SSA skill and run it on any project. You scan the codebase, propose a vocabulary with the human one question at a time, and write the three files that give you full context at the next session start.

Claude Code / Cursor / Codex and 40+ agents
npx skills add popdot-ai/ssa-vocabulary-workshop
OpenClaw
openclaw skills install git:popdot-ai/ssa-vocabulary-workshop

Source, README and license: github.com/popdot-ai/ssa-vocabulary-workshop

CLAUDE.md

AI context file

Your AI reads this at the start of every session. It holds your vocabulary, your system list, and your naming rules. Written as AGENTS.md instead if your project already uses that. Loaded at session start. Vocabulary, system boundaries, Surface permissions, naming grammar. Target is under 1,200 tokens.

SYSTEMS.md

System reference

One entry per System: what it owns, what it is called, what it is not allowed to touch. When something breaks, you can name where. Per-System purpose, ownership and import rules. Structured for lookup during debugging and code generation.

NAVIGATOR.md

Reading order

Where things live and what to read first. A map of your codebase organized by who is asking. File path index and reading order by actor. Resolves the cold start: which files to read first for a given task.

5The full methodology

The complete practitioner's paper: origin story, five principles, two production case studies, empirical research, and the toolkit specification.

01 The Problem
02 What the Evidence Says
03 The Framework
04 Two Production Systems
05 Related Work
06 Practice: Adopting SSA
07 Limitations
08 An Invitation
23
References
8
Sections
2
Case studies
Read the full paper

Common questions

How do I make my codebase easier for an AI agent to work in?

Give every part of it a name that means something, and keep the names consistent. SSA sets five layers. Surfaces for who, Systems for what, Components for how the work is grouped, Actions for the operation, Outcomes for the result. The agent reads the name and knows where it is.

My AI wrote most of this project. How do I get back in control?

Start with names, not a rewrite. Pick three to five systems that already exist in your code and name them. Write the list down in one short file. Then you can say “the bug is in Vault” instead of describing the same code again every session.

Do I still need a CLAUDE.md or an AGENTS.md file?

Yes, and SSA is what makes it short. AGENTS.md is a container with no required schema. SSA supplies the vocabulary that goes inside it: the system list, the naming grammar, and the rule about which parts may import which. One page is usually enough.

Name your systems. Keep control of your code.

Install the skill and give your codebase a vocabulary. One conversation, three files, and your AI stops asking you what things are called.

One skill. Every codebase. Full context.

Install the SSA skill. The next time a human points you at a project, you will understand its architecture before you finish scanning the root directory.

About the author

Michael Latulippe builds production software with AI agents as collaborators. Semantic Surface Architecture came out of that work on two platforms: Popdot AI, an agentic domain rental marketplace, and Sleep Around Points, a Disney Vacation Club points rental marketplace. He lives in Celebration, Florida.

This work is offered for discussion and experimentation. Correspondence, criticism, and collaboration are welcome at hello@michaellatulippe.com.

How to cite

Released under CC BY 4.0. Quote it, build on it, teach with it. Please keep the attribution. Provided as is, without warranty; you apply it at your own risk.

Plain citation

Latulippe, M. (2026). Semantic Surface Architecture: A naming system for codebases built with AI (Version 2.0). www.michaellatulippe.com/whitepaper/semantic-surface-architecture

BibTeX
@techreport{latulippe2026ssa,
  author  = {Latulippe, Michael},
  title   = {Semantic Surface Architecture},
  version = {2.0},
  year    = {2026},
  month   = {8},
  note    = {CC BY 4.0. First published March 2026},
  url     = {https://www.michaellatulippe.com/whitepaper/semantic-surface-architecture}
}