Cofounder and CTO at Reel Estate, an AI platform for real estate. Twelve years building production systems in regulated environments — federal agencies, banking, telecom, and AI SaaS.
Founding technical partner, alongside the Ytel role
Own the full technical roadmap for a Next.js, Vercel, and MongoDB platform serving dozens of agents across firms including Compass, eXp Realty, and Dave Perry-Miller.
Architected the generative pipeline — image staging feeding Runway Gen-4 image-to-video generation, with queue-based job orchestration, S3 asset storage, and webhook-driven status callbacks.
Designed and shipped an AI and MLS compliance subsystem covering California AB 723 and SB 942, the NAR Code of Ethics, and C2PA provenance, with per-image watermarking, QR-linked original preservation, listing-state-aware export gates, and server-side attestation logging.
Built credit-based billing on MongoDB using atomic operations with guard clauses, so concurrent generation requests cannot double-spend a credit — and modelled tier economics against per-clip generation cost.
Manage production DNS and infrastructure across AWS Route 53 and Vercel, including the deploy pipeline, environment separation, and asset delivery.
Stood up the acquisition stack end to end — GA4 and Tag Manager event taxonomy, Enhanced Conversions with hashed email, UTM attribution, and a four-ad-group Google Ads architecture.
Built a custom MCP server for Reel Estate and integrated Atlassian, YouTrack, and GA4 servers into the workflow, so agentic tasks carry ticket, spec, and live product analytics context from pickup through deploy.
Authored a library of custom Claude skills encoding house style, MLS compliance rules, and Next.js scaffolding patterns, so AI-assisted contributions land idiomatically.
Systems and stack↓
Generative staging and listing video
The product itself — image staging feeding Runway Gen-4 image-to-video, behind queue-based job orchestration, S3 asset storage, and webhook-driven status callbacks, so the front end never waits on a model.
AI provenance and compliance subsystem
The layer that determines whether a brokerage can adopt the product at all: California AB 723 and SB 942, the NAR Code of Ethics, and C2PA provenance, enforced in the system rather than in an agent's memory.
TypeScript
Next.js
React
Node.js
MongoDB
Vercel
AWS S3
AWS Route 53
Runway Gen-4
Replicate
C2PA
Anthropic API
Claude Code
GA4
Dec 2022 – Present
Senior Software Engineer
Ytel · Remote
Cloud communications · acquired by Sharpen
Built the outbound dialing platform behind Ytel's AI voice agents, sustaining roughly 10 call initiations per second with scaling headroom to 50, against a 700ms time-to-first-audio budget.
Cut customer operating cost by roughly $15,000 a month by making an AI agent the endpoint of an outbound campaign instead of a bolt-on to a human one.
Automated TCPA compliance inside the AI call path — sentiment-driven DNC opt-out that removes a lead on any negative interaction, and calling-window enforcement resolved from the submitted lead state with phone-number fallback.
Prototyped the next-generation voice stack on LiveKit SIP and LiveKit Agents in Python, targeting sub-500ms turn latency and substantially higher concurrency than the Retell-based platform.
Designed and shipped a Lua and FreeSWITCH IVR solution that measurably improved call routing and DTMF handling.
Replaced a brittle billing batch job with a streaming reporting microservice on Spring Boot, Spring Async, and Kafka.
Rebuilt the DNC and LRN file importer on Spring Reactive, Apache Camel, and SFTP, and tuned telephony event storage on Cassandra for write throughput.
Led the React 16 to React 18 migration, modernizing the dependency graph and closing out known advisories.
Mentored mid- and junior-level engineers, ran code reviews, and pushed testing standards across the team.
Systems and stack↓
AI voice agent dialing platform
The outbound telephony layer underneath Ytel's AI voice agents. Java WebFlux on Google Cloud Run with Firestore, Retell AI handling the conversational turn, and qualification-based warm transfer to a live agent when the call earns it.
Billing and telephony data pipeline
The reporting and import path around the platform — a streaming billing service replacing a nightly batch, and the DNC and LRN file importers that feed compliance decisions.
Java
Spring Boot
Spring WebFlux
Spring Async
Python
Lua
React
Kafka
Apache Camel
Cassandra
Firestore
Google Cloud Run
FreeSWITCH
Retell AI
LiveKit
SFTP
Jun 2022 – Dec 2022
Self-directed engineering
Independent · Remote
Redesigned a file-ingestion system around AWS Step Functions and Glue to orchestrate encryption, decryption, and processing, improving both throughput and observability.
Built an AWS RDS user-management platform for MySQL 8 that unified user creation and authenticated through Azure AD.
Built a React and Tailwind streaming audio player on Material Design with a responsive, accessible UI.
Learned Unity from scratch — evaluating asset libraries, integrating the ORK framework, and driving character animation through Mecanim — and wrote up the world and feature design first.
Studied data structures and algorithms in depth, and wrote articles on RDBMS, React, and AWS to consolidate what the previous role had left unfinished.
Systems and stack↓
Guard Duty Simulator
A Unity game putting the player in the role of the guard of a small town, with quest lines, faction sympathies, and branching dialogue planned. Learned Unity from nothing to build it.
Published articles
A run of written pieces on RDBMS, React, and AWS — written to properly settle solutions to problems encountered in the previous role rather than leaving them half-understood.
Java
Spring Data
React
Tailwind
AWS Step Functions
AWS Glue
AWS RDS
MySQL
Azure AD
Docker
Unity
C#
Jan 2021 – Jun 2022
Senior Software Engineer & Technical Manager
Finzly · Charlotte, NC
Technical manager of Professional Services and DevOps
Led the on-premises Federal Reserve connection setup in a customer data center as primary technical contact, hardening transaction reliability for downstream banking clients.
Managed the DevOps team and owned deployments across every client environment, running certificate and key lifecycle management for the mTLS and PGP integrations.
Architected an event-driven file encryption and decryption service on AWS Lambda, Step Functions, and Glue, replacing a manual long-running process someone had to remember to start.
Implemented mTLS-secured API integrations with core banking providers for sensitive payment data exchange.
Overhauled security and compliance practice through Log4j2 remediation and SOC 2 readiness, and ran the disaster recovery exercises that became standard onboarding evidence for new clients.
Led the Professional Services integrations team building connections into customer banking cores, and introduced integration testing with MongoDB and Spring Test.
Migrated the company from Google Workspace to Microsoft 365, materially improving audit posture.
Systems and stack↓
FX Star
A foreign exchange platform letting back-office bank staff make and approve currency exchanges on behalf of their customers.
Payment Galaxy
A domestic payments platform providing a core banking ecosystem designed to integrate with whatever core a bank already ran.
Java
Spring Boot
Spring Data
Spring Cloud
AWS Lambda
AWS Step Functions
AWS Glue
Terraform
PGPainless
mTLS
MongoDB
MySQL
Jenkins
Linux
Jun 2019 – Dec 2020
Pod Architect
Cognizant · Charlotte, NC
Digital pod for retail and e-commerce · Lowe's account
Designed and shipped a Google Cloud application suite giving Lowe's Pro business customers exportable purchase history — a capability the client had never offered.
Led a team of six developers from stakeholder discovery through delivery, partnering directly with product managers and business stakeholders.
Routed front-end traffic through Cloud Pub/Sub for asynchronous request handling and back-pressure tolerance, so a slow export could not hold a web thread.
Re-platformed the order-history store behind a circuit-breaker pattern in time for Black Friday peak load.
Eliminated a critical IBM WebSphere Commerce dependency, generating recurring licensing savings that outlasted the project.
Containerized on GKE with Istio RBAC and VirtualServices, and ran internal lunch-and-learn sessions to bring the team up on the setup rather than owning it alone.
Acted as front-end lead on the internal governance application — React and Material-UI, reusable components, Context API for shared state instead of Redux, covered with Jest, Enzyme, React Testing Library, and Codecept.
Systems and stack↓
Exportable and online purchase history
A new application suite letting Lowe's Pro customers — businesses, with organisation metadata behind them — export purchase history for a date range to CSV. The capability had never existed, and the online history piece had to move onto a new enterprise order management system at the same time.
Maturity Governance Application
An internal tool that tracked and measured a delivery pod's progress toward a mature delivery model, so a team could see at a glance which practices they were running and which they were not.
Java
Spring Boot
Spring Cloud GCP
Spring Data
Hibernate
React
Material-UI
GKE
Istio
Cloud Pub/Sub
Cloud Storage
Postgres
WireMock
JUnit 5
Mockito
Feign
Docker
Maven
Jun 2018 – Jun 2019
Fullstack Software Engineer
Allstate · Charlotte, NC
Roadside Services
Built the Allstate Motor Club self-service account management application, replacing a legacy JSF system and reducing inbound call volume.
Reworked authentication and authorization onto the enterprise Tivoli Access Manager standard with Spring Security and JWT.
Recovered access to the Pronet database after the master password had been lost, then dumped, restored, and exported the production data for the Oracle DBA team to consume.
Worked in XP — pair programming and test-driven development — with Jest, Enzyme, and Codecept/Puppeteer end-to-end coverage.
Cut reliance on stored procedures and worked SonarQube findings down to shorten development cycles.
Built CSR-facing member search on Spring Data's query-by-example API rather than a hand-written predicate tree.
Systems and stack↓
Allstate Motor Club account management
A self-service application built to take load off the call centre, letting Motor Club members manage their profile, make payments, and add or remove members. It replaced an ageing JSF application.
Pronet data transfer
A vendor-bought legacy system holding group insurance data for small businesses. Slated for retirement, but still earning — so the data had to move from Sybase ASE to Oracle before the server could go. The master database password had been lost years earlier.
Java
Spring Boot
Spring Data
Spring Security
Spring Cloud
Zuul
React
Jest
Enzyme
Puppeteer
Oracle
Sybase ASE
Pivotal Cloud Foundry
Jenkins
SonarQube
Gradle
Feb 2017 – Mar 2018
Software Engineer
Hyla Mobile · Dallas/Fort Worth, TX
Broke a legacy phone trade-in platform into Spring Cloud microservices so it could scale and survive partial outages.
Designed and implemented a decentralized batch scheduling system with Quartz, Spring, and QuartzDesk.
Migrated distributed caching from ehcache with JGroups to Redis, and moved reliable messaging onto RabbitMQ.
Designed and built the AWS infrastructure for distributed batch processing — VPC subnets, load balancers, RDS, and autoscaling groups, all provisioned through CloudFormation.
Implemented a microservices proof of concept on Docker Swarm and Spring Cloud in AWS, then took the same workloads onto Kubernetes.
Owned pricing and device-value business logic with minimal specification, working the requirements out with the business directly.
Systems and stack↓
Carrier Exchange
The suite that let Hyla partner with carriers and retailers to run phone trade-ins — looking up, quoting, and trading customer devices. A legacy monolith being broken up so it could scale and survive partial outages.
Java
Spring Boot
Spring Cloud
Spring Data
Hibernate
Quartz
RabbitMQ
Redis
ehcache
JGroups
Postgres
Liquibase
AWS
CloudFormation
Docker Swarm
Kubernetes
Gradle
Jun 2016 – Feb 2017
Software Engineer
USAA · Plano, TX
Worked on Money Movement, the platform handling payments, transfers, returns processing, and real-time transaction posting across USAA lines of business.
Built integrated tests for the core platform with JUnitEE, and a utility that generated return files rather than having someone assemble them manually.
Designed, deployed, and monitored batch processing jobs with Control-M against WebSphere 7.
Wrote KornShell and awk validation routines for returns files, and handled persistence through JDBC prepared statements and OpenJPA over DB2.
Learned the financial-services domain from the business side first — the constraint on this kind of system is almost never the code.
Systems and stack↓
Money Movement (IMM)
The system that moved money between disparate platforms at USAA. Multiple lines of business used it to add, modify, and cancel payments, run returns processing, transfer funds between accounts, and post transactions in real time.
Testing Utilities
A utility that hooked into the existing systems to generate return files and perform setup that previously had to be done by hand for every test run.
Java
J2EE
DB2
WebSphere
OpenJPA
Control-M
KornShell
awk
JUnitEE
Spring Boot
Spring Data JPA
Hibernate
Rational Team Concert
Dec 2014 – Jun 2016
Technology Instructor
Revature · Reston, VA
J2EE technology specialist and instructor
Taught design patterns, Core Java, JSP, Servlets, Struts, Spring, Hibernate, and web services across an eighteen-month run of cohorts.
Gated placement on delivered work rather than coursework — associates had to complete real projects, in teams, before being considered for employment.
Coached the part that is harder to teach than syntax: working and communicating inside a team.
Built the mentoring and code review habit that has carried into every role since.
Systems and stack↓
Workforce Development Program
A programme that took college graduates and career-changing industry veterans and brought them to employable competence. Every associate had to ship multiple industry-level projects before being put forward for a role.
Java
J2EE
Spring
Hibernate
Jersey
SOAP
REST
Oracle
Postgres
WebLogic
Tomcat
Jenkins
OpenShift
Maven
Gradle
Git
Sep 2014 – Dec 2014
J2EE Developer
USCIS · Washington, DC
Built online immigrant visa fee payment into ELIS, integrating against several upstream government systems rather than standing alone.
Worked across Spring MVC, AngularJS, Hibernate, and ActiveMQ, with a feature-toggle framework gating releases into a live federal system.
Covered the flow with Selenium, Geb, and Spock, and managed schema migration with Liquibase.
Systems and stack↓
ELIS — immigrant visa fee payment
Part of the wider ELIS system. Gave immigrants a way to register, find their fee, and pay it online, taking paper processing out of the flow entirely.
Java
Spring MVC
AngularJS
Hibernate
JPA
ActiveMQ
REST
Liquibase
MongoDB
Oracle
Tomcat
Selenium
Spock
Chef
Mar 2014 – Sep 2014
J2EE Developer
FCC · Washington, DC
Built geographic validation for spectrum license applications, checking submitted coordinate points and mapping files (GeoJSON, shapefile) against the licensed boundaries already in the database.
Modelled the spatial comparison with Hibernate Spatial, the Java Topology Suite, and PostGIS rather than hand-rolled coordinate maths.
Integrated the new validation into the existing application's workflow instead of replacing it — the legacy system could not be rebuilt, but the data problem was compounding every month it went unaddressed.
Systems and stack↓
Assignment of Authorization and Transfer of Control
The workflow the FCC used to validate spectrum license applications. Bad geographic data was getting applications rejected — and, in the worst cases, accepted and consummated into licenses that should not have existed.
Java
Spring
Hibernate
Hibernate Spatial
Java Topology Suite
PostGIS
Jersey
WebLogic
Sybase ASE
Postgres
Maven
Technology ledger
Derived from the role history, not typed separately
107 technologies named across 11 roles, counted from the résumé rather than recalled. The oldest entry dates to 2014; the most widely carried is Java, in 10 of them.
107 shown
Java201410 roles
Hibernate20146 roles
Spring Boot20166 roles
Spring Data20175 roles
React20185 roles
Postgres20144 roles
Gradle20143 roles
Jenkins20143 roles
Maven20143 roles
MongoDB20143 roles
Oracle20143 roles
Spring Cloud20173 roles
J2EE20142 roles
Jersey20142 roles
Liquibase20142 roles
REST20142 roles
Spring20142 roles
Sybase ASE20142 roles
Tomcat20142 roles
WebLogic20142 roles
Docker20192 roles
AWS Glue20212 roles
AWS Step Functions20212 roles
MySQL20212 roles
ActiveMQ20141 role
AngularJS20141 role
Chef20141 role
Git20141 role
Hibernate Spatial20141 role
Java Topology Suite20141 role
JPA20141 role
OpenShift20141 role
PostGIS20141 role
Selenium20141 role
SOAP20141 role
Spock20141 role
Spring MVC20141 role
awk20161 role
Control-M20161 role
DB220161 role
JUnitEE20161 role
KornShell20161 role
OpenJPA20161 role
Rational Team Concert20161 role
Spring Data JPA20161 role
WebSphere20161 role
AWS20171 role
CloudFormation20171 role
Docker Swarm20171 role
ehcache20171 role
JGroups20171 role
Kubernetes20171 role
Quartz20171 role
RabbitMQ20171 role
Redis20171 role
Enzyme20181 role
Jest20181 role
Pivotal Cloud Foundry20181 role
Puppeteer20181 role
SonarQube20181 role
Spring Security20181 role
Zuul20181 role
Cloud Pub/Sub20191 role
Cloud Storage20191 role
Feign20191 role
GKE20191 role
Istio20191 role
JUnit 520191 role
Material-UI20191 role
Mockito20191 role
Spring Cloud GCP20191 role
WireMock20191 role
AWS Lambda20211 role
Linux20211 role
mTLS20211 role
PGPainless20211 role
Terraform20211 role
Apache Camel20221 role
AWS RDS20221 role
Azure AD20221 role
C#20221 role
Cassandra20221 role
Firestore20221 role
FreeSWITCH20221 role
Google Cloud Run20221 role
Kafka20221 role
LiveKit20221 role
Lua20221 role
Python20221 role
Retell AI20221 role
SFTP20221 role
Spring Async20221 role
Spring WebFlux20221 role
Tailwind20221 role
Unity20221 role
Anthropic API20261 role
AWS Route 5320261 role
AWS S320261 role
C2PA20261 role
Claude Code20261 role
GA420261 role
Next.js20261 role
Node.js20261 role
Replicate20261 role
Runway Gen-420261 role
TypeScript20261 role
Vercel20261 role
Skills
Filter by area, or type to find something
76 of 76
AI engineering
Agentic tooling, built and operated rather than evaluated.
Claude Code
Anthropic API
Custom skill authoring
Custom MCP servers
MCP integration
Agentic workflows
Prompt engineering
Generative pipelines
Model calls are slow, expensive, and fail oddly. None of it runs inline.
Runway Gen-4
Image staging models
Image-to-video
Replicate
Retell AI
LiveKit (SIP and Agents)
Queue-based orchestration
Compliance and security
The gate is legal review, not the demo.
C2PA provenance
California AB 723 / SB 942
TCPA
SOC 2 readiness
mTLS
PGP
Certificate and key lifecycle
Log4j2 remediation
Disaster recovery
Languages
Java first, TypeScript daily, the rest where they fit.
Java
TypeScript
JavaScript
Python
Lua
C#
SQL
CQL
Frameworks
Twelve years of Spring, and the front end that sits on top of it.
Spring Boot
Spring WebFlux
Spring Cloud
Spring Data
JPA / Hibernate
React
Next.js
Node.js
Infrastructure
From Istio routing down through VPC design.
Terraform
CloudFormation
Docker
Kubernetes (GKE)
Istio
CI/CD
VPC and network design
Autoscaling
Cloud
Three providers, each with production behind it.
AWS — Lambda, Step Functions, Glue
AWS — S3, RDS, Route 53, ELB
GCP — GKE, Pub/Sub
GCP — Cloud Run, Firestore
Vercel
Data and messaging
Chosen for the write pattern, not the résumé line.
Cassandra
MongoDB
Postgres
Kafka
RabbitMQ
Apache Camel
Redis
Spring Reactive
Testing
The habit that came out of teaching it for eighteen months.
JUnit 5
Mockito
Spring Test
WireMock
Jest
Playwright
Growth and analytics
Which ad group produced a paying customer, not which produced clicks.
GA4
Google Tag Manager
Google Ads
Enhanced Conversions
UTM attribution
Practice
How the work gets done when someone else has to maintain it.
Test-driven development
Extreme programming
Pair programming
Code review
Mentoring
Nothing matches that.
Credentials
Education
B.S. Software and Information SystemsUniversity of North Carolina at Charlotte
Certification
Professional Cloud Architectlapsed 2023Google Cloud
Certification
Azure AI Fundamentals (AI-900)Microsoft
Certification
Section 608 Type II Refrigerant HandlingU.S. EPA
Outside work
The same habit, applied to something with refrigerant in it
HVAC
$3,000
the quote that started it
To repair a refrigerant leak that was plainly visible — a crack I could point at. I learned to do the work myself instead.
It had formed at the filter drier, on the liquid line. I recovered the charge, rebrazed the joint under flowing nitrogen so the inside of the tubing could not scale, pulled a vacuum, and put the charge back in. It has run fine since. I hold the EPA Section 608 certification and own the equipment for a full system replacement, not just service — so the next quote is a decision rather than a surprise.