Every new project started the same way: me, typing the same corrections I had already typed a dozen times before.
Kill the border, use a shadow. That blue should be green or nothing. Why is there a confirmation dialog here, give them Undo instead. Look at the render before you tell me it's done.
I build with AI agents every day. They're extraordinary at writing code and unreliable at knowing what I want, which meant every session opened with me re-teaching my own taste from scratch.
After enough rounds of that, a question started nagging me: if I keep giving the same feedback, doesn't that mean the rules already exist? Not in my head as vague preferences, but as actual, consistent, written-down-somewhere rules?
So I ran an experiment on myself.
The experiment
I pointed five research agents at everything I've ever built. One read Payday, my tip tracker, top to bottom: the design docs, the token file, the actual SwiftUI. One read Vero, my personal finance app. One read Wellspring, the practice management tool I built for a nutrition clinic.
One swept every website I've shipped. And the fifth did something stranger: it searched months of my recorded AI coding sessions for every moment I gave design feedback. Every rejection, every "perfect," every correction, with my exact words.
Then I had them hand everything to one agent with a single job: find the pattern and write it down.
What came back
The eerie part wasn't the rules. It was the receipts.
Three of my apps, built months apart, on different platforms, for completely different users, carry the same three-layer card shadow. Not similar. The same numbers. Four of my stylesheets use the same easing curve.
Payday's design doc literally contains the sentence "where the two documents disagree, Vero's wins," which means past-me had already decided these products were one family with one law and had written the succession rules.
And then there were my own words, quoted back at me with dates attached. The commit I reverted entirely because the input fields looked, in my words, "nasty." The heatmap I rejected because a red-to-green color walk rendered as muddy browns. The chat screen I sent back with the line "the screen is empty, not calm."
The time I told an agent "you took this too literally without actually thinking about how things look," which it turns out is the most important sentence I've ever typed at a machine.
I thought I was commissioning a document. What I actually got was a mirror.
Here's the thing I didn't expect: I never designed a design system. I litigated one, one fight at a time, for years. Every one of those corrections was a tiny verdict. The verdicts were consistent. All the agents did was collect the case law.
A few of the verdicts
Some of what surfaced, so you can see the shape of it:
One color acts. Every product gets exactly one accent, and it appears only where something acts or is the answer. Everything else is black, white, and gray. A screen with almost no color on it isn't unfinished. It's working. And I apparently banned blue entirely, years ago, without ever saying it out loud in one place.
Undo, never "are you sure?" Confirmation dialogs make the user pay attention so the software doesn't have to. Every delete in my apps acts immediately and offers Undo in a little toast. Forgiveness is better grammar than interrogation.
Every number gets a sentence. A raw figure sitting alone on a screen is a question the user has to answer themselves. "118%" means nothing. "Flexible spending is running at 118% of plan." means something.
My notification rule turned out to be the strictest version of this: if a push notification can't name one concrete fact (a merchant, an amount, a date), it doesn't send. Zero facts, zero notification.
The empty state should know things. An empty screen that shrugs is a wasted screen. The one that says "Nothing needs you." after actually checking is my favorite piece of copy in anything I've built.
And above all of them, the meta-rule: beautiful, considered design trumps every other rule. The whole document exists because of the day an agent followed my color rules perfectly and produced a worse screen. Rules are guardrails. The render is the truth. Look at it.
The humbling part
Then I did the thing you should always do with something you're proud of: I handed the finished thesis to a different AI and asked for an honest review.
It graded the document an A as a constitution for the next thing I build, and a B-minus as a description of what's actually in my repos. Which is fair, and it stung the right amount. Two of my products honor the law fully. Some older ones don't yet.
My client work never should, because a client's site deserves the client's identity, not mine. The reviewer's warning was blunt: hand this document to an agent in the wrong repo and it will "fix" a client's warm, branded site into my alabaster-and-green, and that isn't compliance, it's vandalism.
So the thesis now opens with a jurisdiction map. Which repos get the full law, which get only the restraint, and which it must never touch. A constitution that doesn't know its own borders is just a manifesto.
What I did with it
The thesis lives in a public repo now, in two editions. There's the one written for people, which reads like this post. md, the same law rewritten for machines: cold, exact, structured for instruction-following. When I start anything new, I paste that file into the session and the agent simply knows.
The corrections I used to type every day are just... already there.
It's at github.com/tszaks/design-thesis. Take either edition. Steal the rules you like, replace my hex codes with yours.
But honestly, the document isn't the point, and neither is my taste. The point is the experiment.
If you've been building things for a few years, your taste is already written down. It's in the commits you reverted, the feedback you gave, the patterns you rebuilt the same way three times without noticing. You've been handing down verdicts all along. You just never collected them.
Go collect them. You'll meet yourself in the case law.