// selected work

Real systems. Names withheld.

Most of what I've built in the last five years runs behind logins and NDAs. These case studies describe each system by its domain: the problem, what I built, and what it changed. That includes the AI systems, and the architecture work underneath them.

Case 01 · Entertainment data · ML scoring

A scoring engine for film & TV

Problem

Film and TV data arrives from many sources, in many shapes, and rarely agrees. Teams needed one score they could trust to rank and compare titles.

What I built

Ingestion and normalization pipelines, ML scoring models, and the services that put those scores in front of the product.

Outcome

325,000 · bi-weekly · Improved content ranking and discovery

  • ML scoring
  • Data pipelines
  • Entity matching
  • Scoring API
  • PHP, Laravel, MySQL, Redis

Case 02 · Social media · Agentic workflows

Agents that run a social calendar

Problem

Keeping several channels supplied with on-brand posts, on schedule, and knowing what actually worked, takes a team's worth of hours every week.

What I built

Agentic workflows that draft posts, schedule them across channels and report on performance, with a person approving what goes out.

Outcome

10 accounts · 15 hours saved per week · 20% engagement increase

  • Agents
  • Tool calling
  • Scheduling
  • Analytics
  • PHP, Laravel, OpenAI, JavaScript

Case 03 · Municipal government · Data collection & summaries

Council meetings, summarized for strategic decision-making

Problem

Municipal agendas, minutes and records are public, but they're buried in long documents that few people have time to read.

What I built

A system that collects agendas and records, pulls out the items that matter, and writes plain-language summaries of each meeting.

Outcome

52 municipalities covered · 10,200 meetings processed

  • Data collection
  • Document extraction
  • LLM summarization
  • Agents
  • PHP, Laravel, OpenAI, PostgreSQL

Case 04 · Personal ops · Agentic tooling

An agent-run back office

Problem

Running client work and side projects means a constant stream of small tasks: planning, tracking and following up.

What I built

Agents built into my own management tooling that handle planning, tracking and follow-ups. I use them every day, which is the fastest way to find out what agents are actually good at.

Outcome

Handles planning, tracking and follow-ups · Saves several hours per week

  • Agents
  • Tool calling
  • Memory
  • PHP, Laravel, Claude, MySQL

// architecture

Monolith to microservices, twice.

Few engineers get to lead a large monolith migration even once. I've done one, and I'm in the middle of the second.

Case 05 · Platform architecture · Migration

Breaking up a monolith while the business keeps running

Problem

Two multimillion-dollar businesses, one running numerous non-containerized codebases on VMs, the other a large aging monolith. Releases for both were risky, teams waited on each other, and scaling one part meant scaling all of it.

What I do

In the first migration, I helped containerize the cron jobs and other critical components with a great team of engineers and devops specialists to plan and execute the migration. The second migration I am leading, decomposing the monolith and defining service boundaries, structuring the platform underneath, and moving data and traffic over in stages so customers never notice.

Outcome

First migration completed successfully - about 100 services migrated to Kubernetes (pods & cron jobs) · Second migration in progress, focusing on service decomposition and data migration

  • Microservices
  • Service boundaries
  • Data migration
  • Cloud architecture
  • PHP, Java, Kubernetes, TypeScript, ArgoCD, Azure, AWS

// next step

Hiring, or have an AI feature or migration that needs to ship?

I'm looking for my next full-time role and taking on select consulting work. A 30-minute call is the fastest way to find out if I can help.