Experience

Backend-focused full stack developer with 10+ years of experience spanning data engineering, infrastructure, and application development. Strong background in building scalable systems, streamlining workflows, and integrating large datasets to support data-driven decision making. Adept at collaborating across engineering, data science, and product teams.

View Resume (PDF) ↓

Software Engineer

2026 - Present

Epic Games · Remote

Highlighted projects

AI Agent Platform

Engineer across the full stack of Epic's multi-tenant platform for building, deploying, and governing AI agents that work alongside employees in Slack, serving teams across the company. Work spans backend services, database schema, the portal UI, and the CI that ships it, on a stack of Go, React and TypeScript, PostgreSQL, and Kubernetes.

Developer Platform & Automated Code Review

Own much of the developer platform, including an automated code review system built on role-specialized LLM reviewers that run over every pull request, with the constraint that a partial run announces itself rather than passing quietly. Consolidated the release pipeline behind a single dispatch and promoted a set of static-analysis checks to blocking, later retiring the ones that measured net-negative. Cut pull-request CI feedback time by more than 80% and have held it there through roughly 10x growth in merge volume.

Web Portal & UX Overhaul

Lead the UX overhaul of the agent platform's web portal as the implementation engineer, working with a UX designer to take Figma designs through architecture and component decisions to production. The portal was originally generated by an unsupervised AI session, so the work began with an audit against real user workflows to determine which features actually served one. Consolidated inconsistent components onto Epic's internal component library, remediated contrast and accessibility violations, and added the end-to-end test coverage it had shipped without.

Slack Integration & Agent Governance

Built the Slack integration layer for the agent platform, including automated app provisioning so every new agent gets its own Slack app without manual setup. Most of the difficulty there was working around gaps in Slack's API rather than the provisioning logic itself. Also built much of the governance layer that determines where an agent may operate: channel policy, direct-message authorization, scheduled compliance sweeps, and the admin console teams use to manage exemptions.

Platform Code Quality

Lead a platform-wide quality effort: restored a failing integration suite to passing, backfilled unit coverage across the service packages, migrated subsystems off hand-written SQL onto generated schema-checked queries, and retired dead code behind an automated orphan gate.

Approvals Platform

Own core pieces of an approvals-as-a-service platform that other teams integrate with in two API calls: a team describes who signs off, whether an Okta group, a manager chain, or a quorum, and the service collects the decisions in Slack and issues a signed callback. Shipped workflow versioning and the approvals dashboard, and designed the production authentication model: OIDC at the load balancer for people, scoped API keys for services. Hardened it for AWS production with Aurora credentials fetched at runtime from Secrets Manager, migrations moved into the deploy pipeline, and a Playwright end-to-end suite on isolated per-run infrastructure.

Legal Service Desk Automation

Own the serverless automation behind Epic's legal service desk: AWS Lambda integrations routing agreements between DocuSign, Jira Service Desk, and the contract-management system across NDA execution, signer declines, and music-license reporting. A small surface with high consequence, since a failed NDA or license record means a person is blocked. Most of the work goes into making failures legible: validating inputs up front, rewriting errors to name the missing field instead of an internal fault, and adding the test coverage the pipeline had been running without.

Parallel Development Environment

Designed and built a desktop application for working several tickets at once: each task gets an isolated git worktree and an automatically created tracking ticket, with context retained and summarized outside the session so work survives restarts. It shows whether a session is waiting on the engineer or the model, tracks remote CI per branch, exposes an MCP server that lets sessions coordinate, and generates a detailed daily work summary. Built to remove my own friction, it became how I work, and I continue to extend it.

Independent & Freelance Developer

2024 - 2026

Self-Employed · Portland, OR

Built full stack and data engineering projects to deepen expertise across Python, cloud infrastructure, and CI/CD, including an end-to-end ETL and REST API pipeline. Created Lexicon, a daily word puzzle game with a custom API backend. Started a soccer management simulation in Godot with procedural world generation, complex data modeling, and RPG-style progression systems, and continue to develop it. Visit the projects page for a deeper look at these and other personal projects, including a playable browser-based soccer game on this site!

View my personal projects →

Software Engineer II

2021 - 2024

Comscore · Portland, OR

Highlighted projects

On-prem to AWS Migration

Served on a dedicated team responsible for migrating the company's core data infrastructure from an on-prem Perl stack with custom distributed processing to a modern AWS environment using Java, Airflow, and Spark. Contributed to decisions on API design, testing standards, and service structure that guided how the new platform was built.

Django REST API

Built a Python Django REST API from the ground up for complex query workflows in a modern AWS environment. Designed the service layer for testability with isolated services, deterministic test data, and automated unit and integration tests. Implemented a compatibility layer for a legacy Postgres 9.6/CentOS 6 system to bridge old and new infrastructure.

ClickHouse Analytics API

Designed and tested a Python API over ClickHouse for large-scale aggregation and joins of TV event and demographic data. Used deterministic fixtures, query-level validation, and automated regression tests to ensure correctness at trillion-record scale. Partnered with Data Science teams to produce analytics-ready datasets from trillions of raw records.

Ad Data Nationalization

Designed and implemented the nationalization logic for a TV schedule dataset using Java and Spark, solving the problem of creating a single national broadcast schedule from hundreds of market-level schedules with overlapping and conflicting data. Defined rules for when local market differences should override national defaults and handled edge cases where no clear precedent existed. The resulting dataset supported contracts with Amazon and was consumed by data science teams for extrapolation and projection models.

Data Pipelines & CI

Authored and maintained Airflow DAGs to orchestrate data ingestion, transformation, and validation workflows. Built and owned a Jenkins-based CI pipeline using CloudFormation that enforced automated unit, integration, and regression test gates, deployed to isolated test environments, and surfaced failures early while controlling AWS costs. Optimized pipeline runtime from over one hour to 20 minutes by parallelizing tests and removing unnecessary Docker image rebuilds. Led the upgrade of a legacy Java 8 application to Java 17 with zero downtime.

Data Monitoring Platform

Expanded the platform's user base to support new teams and use cases, optimized performance, and authored comprehensive documentation to lead the handoff to an overseas engineering team.

Software Engineer I

2017 - 2021

Comscore · Portland, OR

Highlighted projects

Data Analysis Platform

Developed a new cloud-based Angular product supporting data analysis teams. Worked across the full stack to deliver features that helped analysts work more efficiently with large datasets.

BI Tools

Continued development on a custom Redash instance, providing new features to a business intelligence platform. Created dashboards and alerts to serve internal teams and alert stakeholders to critical data issues. Provided documentation and support to train users on how to self serve and retrieve their own data.

TV Ratings Aggregation

Maintained and improved a large-scale Perl ETL pipeline running on a custom distributed processing framework, an early predecessor to container orchestration systems like Kubernetes. The pipeline produced the company's main client-facing TV ratings reports by combining demographic, schedule, and advertising data. Participated in a 24/7 on-call rotation to debug and resolve production issues under tight SLAs.

Data Monitoring Platform

Expanded the platform to approximately 50 analytical views with CRUD workflows for tracking and resolving data anomalies. Integrated additional internal and third-party data sources. Managed a 3-person team's kanban board, refined tickets, and served as liaison between stakeholders and engineers.

SQL and Python Training

Organized and led a weekly lunch meeting to teach SQL and Python to data entry specialists and data analysts. The sessions focused on practical skills to help colleagues automate repetitive work and engage more directly with the data they handled every day.

Data Analyst & Team Lead

2014 - 2017

Comscore · Portland, OR

Highlighted projects

Data Monitoring Platform

Created a web application using Angular, Flask, and PostgreSQL to monitor fluctuations in millions of data rows, saving a team of 15 over 40 hours per week each.

Workflow Tracking Tool

Designed and built a tracking tool using VBA in Microsoft Access to provide workflow improvements for the team.

Team Leadership

Led a team of 10-14 people, assigning tasks and managing workflows across client deliverables. Onboarded clients and served as a liaison between internal teams and client-facing staff. Also acted as QA for front-end developers, validating new features and debugging UI issues.