See what I've built Work with me
3 Production MCP integration servers, built and shipped
21 One-click agent workflows running in daily operations
~114 CRM tools exposed across 24 modules
5 yrs Owning a P&L that funded all of it

Systems I've built

Each of these solved a problem I actually had. Problem, approach, and what changed after — no screenshots of things that never shipped.

Live · Integration layer

Three MCP integration servers

Problem
An agent is only as useful as what it can reach. Off-the-shelf connectors didn't cover the systems my business actually runs on.
Built
Three Model Context Protocol servers on a shared modular architecture — a CRM server exposing ~114 tools across 24 modules, a full read/write server over a 57 TB team storage account, and a social publishing server across two platforms.
Hard part
The team-storage namespace made client folders invisible to the API until I found the path-root header; large uploads needed chunked sessions; billing endpoints had undocumented payload requirements I reversed out of failures.
Result
Invoicing, pipeline, scheduling, media, and social publishing all became agent-addressable. This is the layer everything else is built on.
TypeScript MCP REST / OAuth2 Integration architecture GoHighLevel → Dropbox →

Live · Autonomy

Scheduled autonomous agents

Problem
The expensive failures in a service business are quiet ones — a lead that sat unanswered, a deliverable that aged out, an invoice nobody chased.
Built
A 7:10 AM briefing agent synthesizing two calendars, two inboxes, chat, CRM conversations, pipeline, and outstanding deliverables into one read. A twice-daily lead-response agent that drafts replies in my voice and routes them for approval. A thrice-weekly agent that reviews and improves the skill library itself.
Judgment
The lead agent shipped draft-only with a written graduation gate: two clean weeks before it may propose autonomous send. It never promotes itself. Autonomy is earned on evidence, not assumed on day one.
Result
Response time stopped depending on whether I was on a shoot.
Multi-source synthesis Human-in-the-loop Scheduling Voice modeling

Discovery

Platform discovery audit & activation plan

Problem
We were paying for an all-in-one business platform and using perhaps 15–20% of it — without knowing which 80% was worth anything.
Built
A read-only walkthrough of every module, sub-tab, and settings tree, turned into a ranked backlog of the ten highest-impact unused capabilities and a three-phase activation plan.
Useful part
I split every item by what an agent can automate via API vs. what needs a human in the UI once — the difference between "I'll handle it" and "here's your click-path." Then I named the features that were real but the wrong priority.
Result
A sequenced plan someone could actually execute, with the distractions labeled as distractions.
Discovery Prioritization Enablement Capability mapping

Live · CRM automation

Referral & review engine

Problem
Referrals were the #1 lead source and were being asked for by memory, inconsistently, and never tracked back to revenue.
Built
Three published workflows, an intake form, trigger-link attribution, and a tag taxonomy — triggered on final payment, running thank-you, review request, and referral ask on a timed sequence.
Hard part
Getting it to stop. Conditional logic suppresses repeat asks so each client is asked exactly once ever, and retainer accounts never enroll at all. Along the way I found a pre-existing unfiltered notification rule paging the whole team on every task creation, and scoped it down.
Result
Referral revenue became a measurable pipeline segment instead of an anecdote.
Workflow automation Attribution Conditional logic CRM

Live · Buy vs. build

Field inventory app

Problem
Equipment tracking across shoots ran on memory and text messages. The off-the-shelf options started around $100/month and did far more than we needed.
Built
A two-operator PWA with QR asset labeling and a custom domain, on infrastructure that costs $0/month at our scale. Access is enforced at the database layer — row-level security plus a signup trigger that rejects any address outside the approved two and auto-confirms those.
Judgment
Access control lives in the database, not the UI, so a bug in the front end can't become a data breach. I onboarded the second operator directly and let him set his own credentials — I never handled them.
Result
Shipped in days, ~$1.2K/year avoided, and a repeatable pattern for evaluating buy-vs-build on small internal tools.
Next.js Supabase / Postgres RLS Vercel PWA View source →

Method

Spec-driven build loop

Problem
Agent-built software drifts. It produces something plausible that quietly isn't what you asked for, and you find out late.
Built
Three chained agent skills — specify, build, verify — with one-to-one requirement numbering, so build coverage and review findings cross-check against each other and the review only passes when every numbered requirement is met.
Result
Evaluation stopped being a vibe check. When a build was flagged as only controller-verified rather than independently reviewed, that gap was recorded as an open item instead of quietly shipping.
Evaluation Spec design Agent reliability

Analysis

Financial reconciliation & unit-economics model

Problem
Three systems — accounting, budgeting, CRM invoicing — disagreed about how much money the business made, so every forecast was quietly wrong.
Built
A full reconciliation across all three, plus a books-verified unit-economics model (33.7% variable cost ratio, fixed overhead, interest) tying revenue targets to quarterly milestones.
Found
An entire ~$16.7K/yr revenue channel that never touched the CRM and was understating every projection. Also a scheduled transaction pipeline across four financial institutions, feeding the analysis automatically.
Result
Business debt down from $40.1K to $21.2K across 23 months, on a plan rather than a hunch.
Node / SQLite Financial modeling Data reconciliation

How I work

The same four moves, whether the function is finance, sales, or production.

01 — Discover

Sit inside the function and map where the friction actually is. Not where people say it is, and not where the tool vendor says it is.

02 — Rank

Turn it into an ordered backlog with the distractions labeled. Naming what not to build is half the value.

03 — Build with

Build alongside the people who'll use it. Ship narrow, ship guarded, put the safety in the architecture rather than the instructions.

04 — Hand off

Adoption is the deliverable. Train the operator, write the runbook, widen the autonomy only once the evidence earns it, then move on.

About

I came to this sideways. I spent fifteen years in live audio and production — rooms where a failure is public, immediate, and yours. Then I built and ran a video production company, which meant I owned every function at once: sales, delivery, finance, hiring, ops.

That turned out to be the real training. When I started building with AI I wasn't looking for a demo — I was looking for the thing that would stop me doing admin at 11pm. So everything I built had to survive an actual business, get used by actual people, and fail safely when it failed.

What I found is that the hard part is almost never the model. It's knowing which problem is worth automating, designing the guardrail before the capability, and staying long enough that the tool becomes how the work gets done rather than a thing someone tried once.

That's the work I want to do now — inside teams, on problems bigger than my own.

Certifications

  • AI Fluency: Framework & Foundations — Anthropic Education, 2026

Working in

  • TypeScript · Node · Python
  • React / Next.js · Supabase · Vercel
  • MCP · agent orchestration · retrieval
  • REST / OAuth2 integration

Also

  • Founder, Vision Maker Productions
  • Award-recognized director of photography
  • Based on Long Island · NYC metro