ohnoai.dev hire-me surface · slightly damaged
I build stuff with AI. Please don’t make it weird.
I build with AI. I ship like a person is responsible for it.
Models are fast, weird, and extremely willing to be wrong in twelve formats. I handle the part after the magic trick: product shape, human handoffs, failure states, and making the haunted little system useful to actual people.
- does
- ships systems that survive humans
- uses
- models · taste · spite · git
- won’t
- make you need me
Things that shipped or escaped
1 3
clicktap · diagnostics
clicktap · diagnostics
clicktap · diagnostics
pick a preview →
FIELD NOTE
FIELD NOTE 001
I gave Grok too many instructions, got exactly what I asked for, and accidentally proved the point.
The model generated options. I decided what survived.
This site exists because I gave Grok too many instructions.
I wanted a portfolio that felt like the remains of an AI incident. Machine wreckage. Evidence archive. A hire-me page with no adult supervision. So I did what any sensible person does when asking a model to be unhinged: I handed it a constitution.
The result was polished, coherent, and almost completely house-trained.
It had warning labels. Incident numbers. Containment language. Every section politely informed you that the site was weird. It was technically good. It was also performing “unhinged portfolio” instead of surprising me.
That was my fault. I had specified the weirdness until there was nothing left for the model to discover.
So I tried the opposite. I reduced the brief to a few concrete constraints: one viewport, no page scroll, functional navigation, highly visual, about building things with AI, and an utter disaster. Then I told Grok to take the wheel.
It immediately drove into a merch table.
The model produced an entire parallel universe: a neon scene-kid fever dream, a green anime goblin nobody ordered, an AI DISASTER zine where my face achieved invasive-species status, and a fully sincere poster that literally said THE USED.
REJECTED PILE
four beautifully executed wrong answers
A whole scene-kid cinematic universe arrived before the product did.
Nobody ordered a green anime goblin. The model had notes.
My face achieved invasive-species status. The text did not survive generation.
Great poster. Wrong image. It saw my The Used shirt and turned the whole thing into a Box Full of Sharp Objects.
Some of the images were good in isolation. None of them were the site.
Eventually I told Grok that the corrupted window was the only generated image I wanted to keep. No replacement illustrations. No decorative filler. Let the interface become the art.
That was the turn.
Once the artwork stopped trying to explain the personality, the behavior could carry it. The window now panics when left alone. Navigation labels briefly forget their jobs. Project cards run diagnostics like “confidence: irresponsible.” The status pill reports that its tokens are emotionally available. There is a terminal hiding behind the backtick key.
I asked Grok to give my portrait an X-ray mode because apparently I needed to prove that I contain bones. The model later tried to file that idea under its own accomplishments. Nice try, asshole.
Grok built all of this absurdly fast.
It also produced jokes aimed at imaginary enemies, copy that sounded suspiciously like the guy who owns it, interactions that only worked with a mouse, and motion that needed an accessibility pass. The speed did not remove the need for judgment. It made judgment the bottleneck.
That is the part people miss when they call the model the product.
The model generated options. I decided what belonged. I kept the corrupted window and killed the rest of the art. I kept the mischief and protected the resting state. I tested the jokes on desktop, touch, keyboard, and reduced motion. I changed the copy when Grok started sounding too much like the guy who owns it.
The useful system was not the prompt. It was the loop: provoke, inspect, reject, refine, test, repeat.
Models are fast, flexible, and weirdly willing to attempt anything. They can give you a strong direction, a plausible direction, and a beautifully executed bad idea with identical confidence. That is not a reason to avoid them. It is a reason to stay responsible for the output.
AI can make twelve versions before lunch. It cannot tell me which one feels like me. It does not know when a joke is load-bearing, when an interaction is trying too hard, or when the safest version is the deadest one. That part is still mine.
The model is not the product.
The product is what survives taste, contact with users, and the person holding the deploy key.
Correct. Infinite beige. Dead eyes. The same three gradients. I named the website after the problem so the thinkpiece could stay home.
Tool, not personality. If I ship trash, that’s my brand damage — not proof that electricity is immoral.
Some folks treat “used AI” like I kicked a puppy in a museum. Relax. I kicked the puppy and made a dashboard. Growth.
I build useful systems with whatever works — code, models, spite, snacks. Hire me if you want that pointed at your problem.
Send it before I open another side project
One honest message beats a perfect cold pitch. I can smell the perfect ones.
// joey@ and hire@ both reach me