All experience
Current role · Aug 2025 – Present · Sunrise, FL

UKG · AI platform.

I work on the platform underneath UKG's AI products. Right now that means owning the MCP server behind the AI assistant, where 15+ teams have plugged in 60+ tools the assistant discovers at runtime. Before that, it meant making the platform observable at all. The best version of this job is the one where other teams ship faster and never have to think about me.

60+

Tools registered

−40%

Resolution time

−53%

Query turnaround

−60%

DLP API cost

The problem

Shipping an AI tool meant waiting on my team

When I joined, adding a tool to the assistant meant editing the assistant itself, which meant waiting on my team to do it. Every team that wanted the assistant to do something new was in the same queue.

Seeing into the platform itself wasn't much easier. A debugging session meant collecting logs from services that had no idea about each other, and the DLP masking step ran slowly enough that production was dropping spans.

What I built

Five shipped pieces

Plugin-based tool registry for the FastMCP server

I designed a plugin-based registry for our FastMCP server so a team can register its own tools and the assistant discovers them at runtime. Since then 15+ domain teams have added 60+ tools with zero changes to the agent code and zero coordination with my team, which was the point.

OpenTelemetry across 45+ microservices

I auto-instrumented 45+ microservices with OpenTelemetry so every call the assistant makes shows up as one connected, step-by-step trace. Debugging stopped being a log hunt across services, and incidents get resolved about 40% faster.

Custom Go OTEL Collector

I wrote a custom collector in Go with one pipeline and several exporters, so traces land in Grafana and Arize, metrics in BigQuery and Splunk, and each audience gets the same telemetry in the tool they already use. Query turnaround dropped 53%.

DLP masking pipeline

The masking step was quietly eating our Google DLP budget and dropping spans in production. I rewrote it as a custom OTEL processor that batches JSON attribute values into DLP tables and rebuilds the spans after masking, instead of pushing whole spans through. The DLP bill dropped 60%, PII exposure went down, and span loss went to zero.

Pub/Sub feedback pipeline

I designed a real-time customer feedback pipeline on Pub/Sub and BigQuery that takes in 50K events a day. What used to be a day in Splunk is now a query, so analysts get about 6 hours a week back and product teams see sentiment the same day.

What it taught me

Platform work is a product surface

  • Platform work succeeds when other teams stop needing you. The registry worked because a domain team could ship a tool without waiting on mine.
  • Engineers, data scientists, and product analysts need the same underlying telemetry presented three different ways. Build the pipeline once, branch it at the exporter. Don't duplicate collection.
  • Writing the Collector in Go was worth the investment. When it matters most (incidents, load spikes) you don't want your observability pipeline to be the thing dropping data.
  • A feedback loop from customers to product data is a distribution problem, not a model problem. Pub/Sub, not smarter ML, closes the gap between "customer is unhappy" and "the team knows about it."
FastMCPModel Context ProtocolOpenTelemetryGoGoogle Cloud PlatformGoogle Cloud DLPPub/SubBigQueryGrafanaArizeSplunk