Director of Data · Vitable HealthArizona

Warehouse · Agents · MCP

I build the layer agents stand on.

Seventeen years of warehouse and cloud work, then Head of AI at DVx, then founding Director of Data at Vitable. I still write the dbt and Terraform myself, and I still take the IC ticket when a team is blocked.

Control plane

Warehouse truth in, agent tools out. Click a node to navigate.

MCPOpenAPI specs → typed MCP tool servers

0

Years in the stack

0

Portfolio companies advised

0

Industries shipped in

0M+

Lines of code

The journey

Seventeen years, one through-line.

From retail analytics in Flagstaff to founding data seats and a Head of AI tour — every stop shipped the warehouse, the pipelines, and the team. Drag the canvas and click any seat for the story.

Full career

Practice

Pioneer in the stack, still on the ticket.

Agents, warehouses, and MCP are the same job for me: a foundation people can query, and tools an agent can trust.

01

Agent systems that survive production

Specialized agents and skills on a real warehouse foundation. Memory structures that cut early hallucination. Bounded tools, not unbounded demos.

Agentic AISkillsRAGLangChain

02

MCP servers in Go

Custom MCP so agents call live APIs. Shared HTTP client, pooled connections, spec parsed once at startup. I wrote the open-source OpenAPI proxy that way.

MCPGoOpenAPI

03

Warehouses GTM actually uses

dbt models for renewal and expansion. Reverse ETL back into HubSpot. Finance and Ops query the same layer. Self-serve BI that left Metabase for Lightdash.

dbtBigQueryHightouchLightdash

04

Realtime pipelines and migrations

Postgres to BigQuery in realtime. AWS-to-GCP moves I led myself. Threat detection streams. Terraform for IAM, Glue, S3, and the path to ship.

PrefectAirflowTerraformKubernetes

Featured project

MCP OpenAPI Proxy

A Go MCP server that turns an OpenAPI spec into tools an agent can actually call.

Case study
Open source2025

Agents need live APIs, not screenshots of docs. Most OpenAPI-to-tool bridges are slow, parse the spec on every request, or hide auth behind a single happy path.

Write the proxy in Go. Share one HTTP client. Pool connections. Parse the spec once at startup. Expose every operation as a named tool with Bearer, API key, custom headers, and SSL options.

Why Go

  • Spec-driven tool generation. OpenAPI 3 specs parsed once at startup — $ref resolution and path-parameter handling included — so every operation becomes a named tool.
  • Agent-legible tool names. Names encode method and path (api_GET_users vs api_POST_admin_posts), with include/exclude regex filters and a 40-character cap for Cursor's combined tool limit.
  • One fast HTTP core. A single shared Go HTTP client with connection pooling keeps tool calls cheap under agent load.

Selected seats

From founding data to Head of AI.

Full career

Now

Looking for the next ambitious data and AI seat.

Principal or director-level work where the warehouse, the agents, and the team still need someone who will write the Terraform.