Work

Built, shipped, and still running.

Most of this was built inside operating businesses, where the constraints were real and the systems had to keep running. Client and employer names stay private — what follows is the problem, the build, and where it stands.

In production

Full-stack app · Closing operations

A closing pipeline the whole team runs on

Problem
Deal-closing status lived in spreadsheets and inboxes; no one had a single trustworthy view of what was closing and when.
Build
A full-stack web app (Flask + React) with role-based sign-in that tracks every deal through closing, generates the builder and lender documents, and syncs nightly from the system of record.
Status
In daily use across the team — one source of truth for the pipeline, with the document busywork gone.
FlaskReactAzure ADMySQL

Data warehouse · Company-wide

A decade of spreadsheets into one source of truth

Problem
Roughly ten years of the business lived in disconnected spreadsheets — overlapping, hand-maintained, and quietly contradicting one another.
Build
Designed and stood up a streamlined data-warehouse structure: one modeled source of truth that reconciled the conflicting sheets and retired the copy-paste maintenance — delivered in a tight window, not a multi-quarter project.
Status
The structure the company’s reporting and tooling now build on.
data modelingSQLMySQLETL

Infrastructure · Platform

Forty-plus internal apps, one deploy pipeline

Problem
Dozens of internal apps had grown organically — deployed by hand, drifting out of sync, easy to break.
Build
Consolidated them into a monorepo with a source-of-truth contract: changes flow through CI to a deploy pipeline, never hand-edited on the server, with secrets in a managed vault.
Status
Repeatable deploys and decision records — so the next person, or the next agent, can pick it up cold.
CI/CDAzureKey Vaultgovernance

Operations & process

Process audit · Construction operations

Cutting time-to-start in half — before automating anything

Problem
Starting a house ran through a slow, error-prone process that every downstream team inherited.
Approach
Audited the Starts process end to end and fixed the strategy first — sequencing, ownership, and what could simply be removed — before writing a line of automation.
Result
Cut the time to start a house roughly in half while improving accuracy — which paid off again in every process downstream.
process auditoperationssequencing

Process redesign · Contracts

A 38-step contract, headed for ten clicks

Problem
Assembling one core document took the better part of an hour per deal and dozens of repeated signatures.
Approach
Mapped every step with the people who run it, then removed what didn’t earn its place before automating anything.
Status
Reduced to a ten-click target, with e-signature and system-of-record integration now being implemented.
process mappinge-signatureintegration

Diagnosis · Marketing & sales

When the reported numbers and the floor disagreed

Problem
Headline marketing and lead numbers looked healthy while the sales team didn’t feel them.
Approach
Rebuilt the funnel and the lead counts from source records, separating real inbound from automation noise and duplicate syncs.
Result
An honest, re-runnable picture of where the funnel actually leaked and what a real lead costs — instead of a number nobody trusted.
Pythonpandasattribution

Automation & AI

Automation · Legacy ERP

Retiring hours of manual data entry

Problem
A legacy desktop ERP had no usable API, so staff re-keyed the same data for hours each week.
Build
UI automation against the legacy client — with the display-scaling and window-state gotchas handled — plus read-back verification against the database.
Status
Reliable unattended runs that replaced the manual grind.
PythonUI automationverification

AI · Competitive intelligence

Thousands of listings into a few clear reads

Problem
Competitive market data was too large and too messy for anyone to watch by hand.
Build
Pulled and normalized thousands of records, then layered a language model to surface slow-movers, price cuts, and plain-English summaries.
Status
A standing competitive read, updated automatically instead of assembled before a meeting.
PythonLLMdata pipeline

Agents · Operations

Agents that do the watching, with guardrails

Problem
Routine monitoring — inbox triage, security scanning — was either skipped or burning a person’s day.
Build
Agent loops introduced in stages: reporting first, then drafts requiring approval, with written criteria for any action the system could take.
Status
Consistent monitoring without handing the system authority it hadn’t earned.
Claude APIagent designverification

Independent & earlier work

Selected client work and independent projects.

Freelance builds, data experiments, and projects made for the satisfaction of solving them.

App

Trucking quote app

A simple tool that gave drivers exact, on-the-spot pricing — computed from the factors a manager set on the back end. No phone calls, no guesswork.

Plugin

Lake-level fishing calculator

A plugin that scrapes real-time lake levels into a calculator for anglers — driving traffic to a fishing site with content people actually wanted.

ML

NFL outcome model

A regression model predicting game outcomes from historical data, with interactive notebooks and visualizations.

App

Game ratings calculator

A web app computing future player ratings for a sports video game — data-driven strategy, for fun.

Web

Client sites & SEO

Redesigns and performance rebuilds, plus a Florida nonprofit site with events and online donations.

More

And the rest

Plenty of smaller experiments. The throughline: find a real problem, build the smallest thing that solves it.

Next

Have something that should work better?

Start a conversation