I build with AI every day, and nothing it makes ships on trust.
Three companies and a music-data site with 1M+ visitors a month run on software I designed and built with AI coding tools: about 250 properties, 100+ vacation homes, a home-services company in 6 markets and $5.3M+ in bookings. The money is real, so I hold the AI to the standard I'd hold a senior engineer to.
The risk
AI writes code fast, and it can be confidently wrong.
The rule
Nothing it makes counts until it works on the live system.
The checks
Every change passes the same eight checks before it ships.
The result
Three companies run their money through it every day.
Designing AI people trust
When the software wants to change a price, it has to explain itself to a person first.
Palm Heaven's pricing engine reads 2,541 bookings and $1.44M of guest payments and judges each of the 100+ homes by profit after the real cost of every stay. That's a lot of power over live prices, so I designed it to earn trust one decision at a time. Each proposal shows the old and new price, the reason, what it should do this month and over the long term, and the downside. Nothing reaches PriceLabs until a person approves it.
The first batch was wrong, and its own written reasoning is how I caught it. It said 14 houses would sell nights below what we pay the cleaner, but it had compared a nightly floor price with a cleaning fee that guests pay on top. I pulled every proposal before a single price moved. With the math fixed, a typical one-night stay still left about $111 after the platform fee and the cleaner's pay, and we'd had 488 of them the year before.
Compared with the same months before the tool, nightly revenue is up 6 to 9%, about $110K a year.
Show the reason and the downside
A price change with no visible reasoning is one nobody can question. Every proposal carries its why and its risk in plain words, so the person approving it can push back.
One path for every change
Back up, write one value, read it back, log it. The tool can only touch an allowlist of homes, and one command rolls a change back.
Limit how far it can move
No price moves more than 15% in a round, one house goes first, and a changed house rests 21 days before anything new is suggested for it.
Grade every change
Each week, every change older than a week gets marked worked, no effect or hurt, and the next round starts from that list.
Automation that knows when to stop
A broken input can never show green. I build automation to stop and tell someone when something looks wrong.
FarsiChart tracks 27,000+ songs across two streaming platforms and publishes stories about the Persian charts with nobody at the keyboard, 15 of them a day, so its checks have to work when no one's watching. Every listener count has to be believable next to the artist's following before it goes out. A bad data pull is stored as zero and never published, and the status page lives by one rule I learned from the worst bug: a broken input can never show green.
At Silverstone, a nightly job once booked 963 rows of old history in one night. Now every bulk job has a date floor, a hard ceiling and an alarm. Spending works the same way. A big repair waits for the owner's yes, and the setting that would let small estimates approve themselves starts at zero, so every estimate needs a tap.
When the August audit flagged that this setting had no screen yet, I left it open on purpose. The one setting that can approve spending without a person deserves real design work before anyone can switch it on.
Behind all of it run watchdogs, integrity checks and restore tests, and an alert only goes out when someone has to act on it.
12Zoom- 1Approvals go to the owner. A big repair waits for their yes at the top of the screen, not on a phone call nobody logged.
- 2Billed through QuickBooks. Invoices go out from the books instead of being retyped from a spreadsheet.
The checks every change passes
AI writes a lot of my code. None of it ships until it passes the checks I'd ask of a senior engineer.
I treat AI coding tools like a fast engineering team that needs a clear brief and a strict reviewer. The same eight checks run on every change across 30+ products and client projects and 2,700+ commits in 20 repositories, in this order.
A written spec first
Every feature starts as a design spec, then a phase plan and a checklist for how we'll know it works. Silverstone's app has 31 specs behind it.
Rules every AI session follows
I wrote the rulebook: verify on the live system before calling anything done, never trust a helper's done, back up before touching production data, and get approval for anything users will see. Every correction I make becomes a new rule, and Silverstone's has 50+ of them.
The design system is the law
New screens reuse the components that already exist. When I restyled Silverstone's iPhone app, every screen got a written inventory of its elements and nothing was allowed to move, because real-world testing had put each button where it was.
A failing test before the fix
A fix starts with a test that proves the bug, then the code that makes it pass. 6,700+ automated tests guard live money, and DoorStain's release pipeline won't deploy if one of its 489 cases fails.
Accessibility gets its own pass
It's checked on its own, not folded into someone else's review. That's how Silverstone got pinch zoom back, form errors that screen readers announce and switches a keyboard can reach.
Tried on a real phone
I tap through the installed app on the iPhone simulator, where a keyboard covering a form actually shows up, and test sites on a throttled phone over slow 4G. Every page gets checked at 375, 768, 1440 and 1920 pixels wide.
A person signs off
I review every change before it ships, and every commit carries my name. I scored my own first DoorStain build 30 out of 100 and wrote 30 numbered notes before the rebuild.
Done means live
Nothing is done until it works on the live system, so every release ends with a check of the real site or app, the same one the customers use.
I audit my own work
Twelve audits ran across the whole app at once. A finding only counted once it was reproduced.
In August I pointed twelve audits at the app that bills $600K+ a year in owner charges, all at the same time: statement money, the owner and staff apps, security, held funds, failure modes, accessibility, dead code and a live stress test against the demo. A finding only went on the list once it was reproduced against the real code, a throwaway test or the live demo.
They caught bugs that thousands of passing tests had missed. A charge dated the 1st landed on the previous month's statement. Selecting $125.00 and typing 9 stored $12.50. Eight quick taps issued five live statements for the same month. Every fix started with a failing test, and the screen fixes were tapped through on the iPhone simulator.
I fixed 80 of the 84 and left 4 open on purpose, each with a written reason. Four of the worst bugs shared one cause, a feature whose route nothing ever called, so the cure went into the tests: every route now has to prove it has a real caller.
What stays human
AI speeds up the building. Deciding what's right for the people using it is still my job.
Before I design anything, I watch the work. I rode along with DoorStain's crews, watched cleaners use CleanerProof on their own phones, and designed Silverstone's charge screen for a partner logging a receipt in a driveway. I use AI to sort research notes, then check its summary against the raw notes, because a tidy summary can drop the one detail that matters.
I'm also the toughest reviewer of my own work. On FarsiChart, an automatic check makes sure no text runs off a card or overlaps another, and a color mismatch still passed every one of those checks. I caught it by looking, and I've read every render since.
