About
I automated my own job first.
I was hired into the operations side of a freight brokerage, the tedious end: posting loads, watching deadlines, chasing carriers for updates. On my first day I watched the posting workflow run through an Excel macro that would occasionally turn a weight of 2500 into the date November 4, 1906, on a live load board. I have an IT background, and it did not take long to see that most of the work was rules, and rules can be built.
So I started automating the job instead of just doing it. Day one, the macro was replaced with deterministic code. Four months later it is a platform three operators use at once: twenty-two systems, four email bots, three browser bots on a desk PC, four cloud crons, all of it running on live commercial data, built in 210 commits across 54 build days around a full-time seat.
I am not a broker, and I am not a software vendor. I work in operations, I have an IT background, and I built all of this with AI coding agents, with every risky decision kept deterministic and human-gated. Knowing exactly where that line belongs is the craft.
Freight is where I proved the approach. The approach itself, a deterministic core with AI boxed into read-only jobs and shadow mode before trust, applies to any operations-heavy back office. I run my own practice on the same rules: the outreach system, the lead engine and the meeting pipeline on this site were built the same way. That is the business: the automation, not the freight.

// operations seat, IT background
How I work
Seven rules, learned on live data.
These recur through every build. They are the difference between automation you demo and automation you trust with real operations.
One-way doors get double guards
If a write cannot be undone, the state that justifies it is re-read immediately before executing. Date changes read back after writing. The one race that genuinely cannot be closed is documented, not hidden.
The AI is boxed in
Claude reads; it never writes. Every dollar figure originates in a pure deterministic module; every routing decision is code. If the model hallucinates, the blast radius is a mislabeled reading, never a wrong price on the wire.
Automation only narrows
Sweeps close records down, never re-open them. Automated writes fire only into empty fields. A human's decision is never overwritten by a robot's. Widening is a human act.
Shadow first, with independent kill switches
Every bot launched writing drafts, not sending. Separate mode switches, all defaulting to off. One v1 refuses live in code even though the database schema would allow it.
Design around serverless physics
Function ceilings, API rate limits and cold starts are load-bearing constraints. Small batches, internal time budgets, pacing delays, idempotent writes, so an interrupted run resumes instead of duplicating.
Cost scales to zero
Business-hours gates and mode gates live inside the cron handlers. An off-hours tick returns before touching anything. A dormant bot costs nothing.
Hard-won facts get written down where the code is
Timezone re-labeling, clipboard formats, a compiler quirk tests cannot catch, a matching trap. Each one documented at the point of use, so no future session pays for it twice.
Shipped, by month
Four months, twenty-three builds.
June 2026
July 2026
- The carrier negotiation botShadow
- The carrier ETA botLive
- Auto-cancel noise suppressionLive
- The uncovered-loads auto-classifierLive
- Delivery and pickup date adjustmentsLive
- The covered sweepLive
- Dispatcher-email backfillFlag off
- The priority boardLive
- The auction-board converterLive
- The report discrepancy checkerLive
- The pain-signal lead engineLive
- The second-brain recorderLive
August 2026
September 2026
October 2026
The first conversation is free and useful.
Bring the workflow that eats the most time. I will tell you which parts are buildable and which parts I would keep human, and you keep that answer either way.