Direct client · Florida, USA
Eagle Club Systems
Golf course management platform — booking, membership and operations for clubs across the United States.
100+Golf courses running it
AI agents that triage incidents and raise the fix, document pipelines where every finding links to its source, and the full product around them: schema, queues, dashboards, deployment. Built end to end, not prototyped.
Verified track record · Upwork
Top Rated Plus Top 3% of talent on Upwork
Tooling that gives agents context they can act on: structured traces, MCP servers, retrieval, and the evals that keep output trustworthy.
n8n and API integrations that move work between the systems you already run, and document pipelines whose findings link back to their sources.
The whole system, not a demo — schema, job queues, auth, dashboards, and the deployment that keeps it running at 3am.
Phone agents that book, answer and route in real time — media streams, streaming speech, barge-in, and tool calling into the systems you already run.
Background
Enterprise delivery alongside Fortune 500 engineering teams, then direct product work for US operators whose businesses run on the software every day.
10+ years in software development — enterprise delivery through to solo, end-to-end product builds
Honeywell · Honda · Aptar — Fortune 500 engineering organisations
Industrial process automation: worked with production-floor operators, demand forecasting and planning tools, OEM integrations, OPC protocols and sensor data.
Direct client · Florida, USA
Golf course management platform — booking, membership and operations for clubs across the United States.
100+Golf courses running it
Direct client · Florida, USA
Patient management systems handling scheduling and records for medical practices around the country.
Multi-practiceDeployed across US practices
Patterns I deploy
The same building blocks land in most operations the same way: something arrives, it waits for a person, and that person reconstructs context before doing the actual work. I have built these systems. The figures are typical ranges unless marked measured — your own baseline is the first thing we measure.
Engineering · on-call
On-call engineers triage and investigate every incident by hand.
Measured: mean time to resolution from about 6 hours to about 1, at 50+ tickets handled per day, with about 80% of proposed fixes approved as proposed.
Hospitality & clubs
The phone competes with the person at the counter, and keeps ringing after closing.
Typical: roughly a third of inbound calls arrive outside staffed hours; at ~80% containment on routine questions the agent pays for itself on recovered bookings alone.
B2B SaaS · support
Most of a first response is reconstruction: who is this, what plan, what broke.
Typical: ~70% of tickets carry enough context to auto-draft. A human still approves every reply — the saving is in the reconstruction, not the judgement.
Distribution & manufacturing
A PDF keyed by hand into a system that already knows what was ordered.
Typical: ~8% break the match and still need a person. The rest post overnight, turning AP from a daily chore into a morning exception list.
B2B services · sales
Contact rates fall off sharply after the first hour. Most inbound forms sit overnight.
Typical: same headcount, same pipeline — the difference is arriving while the lead is still reading your site.
Procurement & legal ops
Auto-renew clauses are only expensive when nobody reads them in time.
Typical: every extracted clause links back to its page and paragraph, so legal checks the source rather than trusting the summary.
Multi-site retail & field service
Four hours of spreadsheet assembly to answer one question: which sites need attention?
Typical: the win is not the four hours — it is that a bad week gets caught on Tuesday instead of the following Monday.
Highlights — designed and built by me
Each of these went from an empty repository to a running system: the architecture, the model pipeline, the database, the interface and the deployment. Where the hard part was not obvious, I have said what it was.
Agentic system · on-call engineering
On-call incidents triaged, investigated and fixed, for an enterprise client.
Workflow automation · legal operations
Due diligence reports for customer onboarding, for an enterprise client.
Workflow automation · talent
The hiring loop from screening to follow-up, for an enterprise client.
Agentic system · support
Support answers grounded in Notion and Slack, for an enterprise client.
Agentic tooling · developer
A screen recorder that produces AI-readable recordings.
The hard part Five event sources — input, console, network, DOM mutations, narration — each with its own clock and its own volume. A click is only useful if you know which node it hit and what the page did in the 200ms after, which means correlating all five onto one timeline and then throwing most of it away. An agent with an unfiltered trace is worse off than one with none.
Marketing automation
Lifecycle email and segmentation over live operating data.
The hard part Segments are queries, not lists — which is the whole point, and also the problem. A segment has to resolve fast enough to send against while the underlying data keeps moving, so the engine had to stay correct under a schema that is being written to during the send. Drizzle over Prisma was a deliberate call for exactly this reason.
Real-time voice · golf operations
askcaddie.golf — automated phone answering for golf courses, live 24/7.
The hard part On a phone line there is no spinner. Two seconds of silence reads as a dropped call, so the latency budget is the product — and callers talk over the agent, which means handling barge-in without losing the turn. The agent also never guesses at availability: it reads the live tee sheet or it says it does not know, because a confidently wrong booking costs more than a missed call.
Working inventory
Everything here is in something I have shipped, not a list of things I have read about.
Claude · Claude Agent SDK · OpenAI API · Gemini · MCP servers · RAG · n8n (self-hosted) · structured context traces · tool/function calling · retrieval · prompt and output evals · transcription and summarisation pipelines
TypeScript · Node · Express · Fastify · Python · PostgreSQL · Drizzle ORM · Drizzle Kit migrations · BullMQ + Redis · Zod · JWT auth · Pino · Vitest · REST
Next.js · React · Vite · Angular · TanStack Query · React Router · Tailwind CSS · shadcn/ui · Radix · Chrome extensions (MV3)
pnpm workspaces · Turborepo monorepos · modular monolith architecture · background workers · Kubernetes · GKE · Render · Cloudflare R2 · static export · structured logging
Twilio Media Streams · Pipecat · Deepgram STT · Cartesia TTS · Gemini Live API · cascade and realtime pipelines · barge-in handling · mid-call tool calling · PSTN + WebSocket transport
How I work
I work alongside the people who do the work (legal, talent, people operations, DevOps), map the process with them, and coach them to automate it. Every system ships with controls: a human approves what matters, outputs link to their sources, and everything is monitored.
How engagements run
I sit with your team, measure the real baseline on two or three workflows, and come back with what to automate first, what it costs and what it returns. You keep the analysis whether or not we build together.
One workflow taken from manual to running in production — integrated with your systems, monitored, handed over with the runbook. Fixed scope, fixed price.
For teams automating continuously. I work as your AI engineering function: new workflows, model and cost tuning, and keeping what is already live healthy.
The best candidates for automation are usually hiding in plain sight — the steps a team repeats so often they have stopped noticing them. Describe one and I will tell you straight whether it is worth building, what it would take, and where the hard part is.