I build the systems behind marketing and sales: lead pipelines, email infrastructure, CRM integrations, and the automation that has to keep working when nobody is watching it.
Most of what I build runs in production for a small number of businesses rather than in the open, so a lot of my repositories here are private. Two that are not:
Pokémon TCG analytics. A ridge model fit per rarity cluster estimates each card's expected price from explainable signals, and the gap against the live market flags cards trading above or below fundamentals. Also computes expected value per sealed set. A daily GitHub Actions pipeline pulls from open APIs, accrues its own market history, and redeploys the site.
Python, NumPy (the ridge fit is hand-rolled, not scikit-learn), GitHub Actions, Netlify.
Reply triage for cold-email campaigns. A webhook classifies every inbound reply using OpenAI structured outputs, with deterministic rules running first so the obvious cases never reach the model. Unsubscribes process automatically through the sending platform's API, anything needing a person routes to a channel with full context, and a human approves every outgoing send. Dockerised, CI on every push, 59 tests.
TypeScript, Fastify, OpenAI, Zod, Vitest, Railway.
Outbound infrastructure. Scrapers feeding an eight-provider enrichment and verification waterfall, self-hosted n8n handling delivery across three client workspaces, and every send, reply and bounce logged so the data decides which campaigns keep running. Moving to verified-only sending took bounce rates from double digits down to under one percent.
Web and lead systems for an interstate moving company: a React and TypeScript site with a prerender pipeline that fails the build on SEO regressions, multi-step quote funnels with SMS verification and bot protection, per-channel attribution into the CRM, and abandonment capture that turns a silent drop-off into a follow-up.
The unglamorous half. Append-only ledgers so a retry cannot contact the same person twice, alerts that fire loudly instead of logging quietly, report-only as the default mode for anything that sends, secret scanning on every commit, and deletion tooling that permanently removes a person's data on request to meet CAN-SPAM, GDPR and CCPA requirements.
TypeScript, Python, React, Astro, Node, PostgreSQL and Supabase, n8n, Docker, Railway, GitHub Actions. I develop with Claude Code daily and treat what it writes the way I would treat a junior engineer's code: reviewed, tested, and run in report-only mode before it touches anything real.
B.S. Information Technology, University of Central Florida, December 2026.



