Work
I work in increments. Every AI system below shipped with a human still holding the step that can fail quietly, and the spot checks came down only as the tool earned it. Three years as a nuclear submarine's information assurance manager is where I learned what a quiet failure costs.
Four jobs. Each one: the constraint, the decision, the option I rejected and why, and the outcome.
Qualtrics — the two who pushed back were right
Manager, CAHPS Data Analyst Team · Qualtrics · Oct 2021 – Feb 2024
Two of my five analysts resisted — my two strongest coders, who believed they could produce better output themselves. I didn't argue. I had them run the same task with and without AI and read their own results.
The tool wasn't the problem. We'd been applying a production-quality bar to exploratory and patching code, where deliberate, scoped technical debt was the right call.
I set the resulting output level as an explicit expectation, and weekly mentorship sessions made the practice shared instead of individual.
- The constraint
Every quarter my team submitted patient-experience data to CMS. Getting it wrong is a regulatory event.
Quality review started manual: eyes on every submission. That worked at 16 CCNs, a CCN being roughly one hospital or a group reporting as one. At roughly 160 across five survey programs it was impossible.
- The decision
Patient data was de-identified per CAHPS requirements before any model saw it, and it went to OpenAI under Qualtrics' enterprise agreement.
That order matters and I'd say it in the same order to any regulator: what was removed, under what terms, then which vendor.
The pipeline itself was Python data-quality checks written with LLM assistance in 2021–22, before good coding agents existed, feeding anomaly detection against prior submissions. The model triaged. A person adjudicated every flagged item.
The part I'd defend in any room: we didn't trust it blind. First quarter, humans spot-checked 50%.
It earned its way down to 10%, rounded up — and the checks were risk-weighted toward the reporting groups with known data-quality problems, not sampled uniformly.
- The option I rejected: automating the final CMS upload
I declined it because I'd found the submission platform returned success signals on uploads that had actually failed.
A false “submitted” on a regulatory deadline is the most expensive kind of quiet. The upload stayed human.
- The outcome
One analyst covering 16 CCNs and one program became five covering roughly 160 across five.
The growth came from landing several of the largest US health systems, each bringing many CCNs at once. The pipeline became the cornerstone of the quarterly CMS submission process.
What I'd change now: I'd escalate the false-success bug to the CMS submission platform instead of only routing around it.
Python · OpenAI under enterprise agreement, de-identified data only · CMS submission tooling.
Arda — infrastructure, not enthusiasm
Head of Operations and Customer Success · Arda Systems Limited · Dec 2024 – Oct 2026
I was Arda's fifth customer before I was its fifth employee. I joined as a contractor in December 2024, before the first round had closed, and went full-time in March 2025.
Arda builds Kanban-based real-time inventory replenishment for small manufacturers and industrial supply chains.
- The constraint
Seed-stage capital, and I argued it should go to product and pipeline rather than post-sale headcount. That meant the function ran on systems instead of people.
AI adoption at that stage fails in a predictable way: people build skills individually and never share them, different people burn tokens solving the same problem, and nobody's lessons carry to the next run.
- The decision: infrastructure, not enthusiasm
A Git repository and a training program teaching non-developers the core concepts, then shared skills, memory systems and automated documentation so the same problem got solved once.
A pull-based work-in-progress system applying Lean WIP limits to knowledge work, built in Coda and migrated to Linear. Traceability from company strategy through OKRs to tasks.
A support function from zero: Pylon, rotating triage across every non-developer, three-tier escalation.
The reason it was infrastructure and not a training day: enthusiasm decays and a repository doesn't. Everything I shipped there was aimed at the second person to hit the problem.
- The option I rejected: early customer-success and support headcount
The conventional move is to hire. I argued against it and built tooling instead, which spread product knowledge across the company and kept cost down.
We later grew to two CS people and I shifted to building what they ran on — a Streamlit reporting layer on internal APIs and PostHog, with a daily pipeline tying it back to HubSpot so HubSpot stayed the source of truth.
- The outcome
Customers grew from 24 to 72.
The systems outlasted me, and that cuts both ways: the tooling made the function runnable by a smaller, lower-cost team — which is what it was built for — and when the company shifted investment toward top-of-funnel in 2026, mine was one of the positions that came out.
I'd have made the same call. The tools were still running the function when I left.
What I'd change now: I'd add the lower-priced, lighter-onboarding tier sooner.
Coda · Linear · Streamlit · PostHog · Pylon · Python · Git and GitHub · HubSpot as system of record · integrations with Xero, Shopify, QuickBooks, Shop Monkey, Repair Shopr and Odoo.
Campworks — the first build was the baseline
Co-owner and Chief Operating Officer · Campworks · Jan 2024 – Mar 2025
I found Campworks the way its customers did: I ordered a trailer and it didn't arrive. The company had stalled — zero revenue, an undelivered backlog, one person left.
The product was good and the problem was operational, which was my background: manufacturing engineering, Lean, Six Sigma.
- The constraint
Cash set every constraint. Cost of goods on a trailer exceeded the customer deposit, so every sale opened a cash-flow hole before delivery.
Headcount stayed at three, partly by design.
- The decision
We ran the first build unchanged, as a baseline: roughly three months. Measuring before improving is the whole method, and it cost us a quarter to do it honestly.
Then we re-sequenced the line so heavy multi-person steps ran early, which meant redesigning the plumbing, the electrical and the kitchen to allow it.
The kitchen was the worst component on the line. We rebuilt it before delivering any backlog — welded construction became fastener-assembled bent metal, and roughly two weeks of high-skilled labor became roughly six hours.
The back office ran on the AI available at the time: early ChatGPT, then custom GPTs for repeat tasks, to keep burn low. This was before Claude Code existed.
Kanban ran subassemblies and purchasing, and procurement fell from about a day per trailer to one to two hours.
- The option I rejected: building the whole trailer in-house
The founder wanted the full build in-house. Contract-based assembly protected cash flow while sales grew.
It was the biggest disagreement between us. Base assembly moved to a contract facility in Lamar, Colorado, and that call is what made the throughput gain possible.
- The outcome
Build time went from roughly three months to four weeks, with two units in parallel instead of one — roughly a 6× throughput improvement, at headcount three.
Not everything held. A change to rack installation couldn't hold tolerance and we reverted it, and we tried several pricing schemes without landing one.
What I'd change now: I'd prove the rack-install change could hold tolerance off the line before running it in production.
Coda · ChatGPT and custom GPTs · Kanban · Lean and Six Sigma · contract assembly, Lamar, CO.
What I build outside a job is on projects. The full record is on the résumé.