Selected work

A library of what I've built.

A mix of client work (shown anonymized) and personal builds. Every one is a working system, not a concept. Click any project for the full story.

AI & multi-agent systems

How it works: public federal datasets load into one database where every fact carries a required link to the raw record it came from, and joining the files exposes their contradictions.How it works
AI provenance · public dataPersonal project

A True-Crime Database a Model Can't Lie To

A cold-case research database where a fact cannot be written down without the record it came from. The rule lives in the database schema, not in a prompt, so a model can propose a fact but cannot invent where it came from. Pointed at 1.1M+ public federal records, the joins turned up a contradiction two federal datasets cannot both be right about.

PostgreSQLPythonMCP server
View project →
How it runs: one brief goes to three competing AI firms of five agents each, they rework each other's work, and a partner agent writes the final report.How it works
Multi-agent · strategyPersonal project

Multi-Agent Consulting Engine

An experiment in adversarial multi-agent review. Three AI "firms" (McKinsey, BCG, and Bain personas, ~5 agents each) compete on one brief, cross-review and rework each other's output, and a partner agent synthesizes the final report. Up to 26 agents in one run. I have run it twice, both times on a real question.

Claude agentsOrchestrationJS workflow
View project →
How it runs: a conductor agent classifies each request, routes it to sales, marketing, ops and account agents in parallel, then synthesises one answer.How it works
Multi-agent · GTMCase study

Multi-Agent Business Swarm

A team of specialized agents (sales, marketing, ops, account management) run by a conductor that classifies each task, routes it to the right agents in parallel, and synthesizes the result. I used it at a national 3PL to look at a situation from several angles before taking it to stakeholders, and to build outbound campaigns and content directions.

Claude agentsConductor patternRouting matrix
View project →
How the approval gate works: a request is staged as a before and after diff with the blast radius named, then a human approves or rejects it before any SQL runs.Try it
AI tooling · metaPersonal project

Custom Claude Skills

One of these edits a live production database, then refuses to write a single row until a person reads the diff and says yes. There is a working version of that gate on the page. Pick a change, watch it get staged, then approve it or kill it. Six skills in total, three you can install in ten seconds.

Claude CodeInteractive demoHuman-in-the-loopApproval gates
View project →

RevOps, data & dashboards

Before and after the CRM cleanup: contacts from about 65,000 to 22,000, companies from about 30,000 to 11,000, open deals from 1,200 to about 100.How it works
RevOps · CRM cleanupCase study

CRM Cleanup & Rebuild

Inherited a 4-year-old HubSpot CRM that several leaders had run in and out of. In about 30 days I cleared out more than half the records (~65k contacts to ~22k, ~30k companies to ~11k, and 1,200 pipeline deals down to ~100 active), then built the hygiene to keep it clean and mined past outbound to sharpen new messaging.

HubSpotPythonData hygieneAnalysis
View project →
How it works: several data sources plus an AI research pass feed three gates, volume, fit and timing, which write scores and a recommendation back into the CRM.How it works
RevOps · account scoringCase study

Account Intelligence & Scoring

Sales lists are usually sorted by whoever entered them last. I built the layer that sorts one properly for a national 3PL: every account enriched from several third-party sources plus an AI research pass, then graded on three separate questions instead of one blended score (can we serve them, do they fit, is now the time). 46 fields written back to the CRM, so the list sorts itself.

CRM architectureData enrichmentScoring model
View project →
The executive dashboard showing order and volume KPI tiles with month-over-month change.Live demo
Analytics · ETLLive

KPI Dashboard & Analytics Platform

An executive dashboard for a national 3PL that pulls dozens of KPIs from several systems through an ETL pipeline into a Postgres warehouse, so leadership can see the whole operation in one place.

Next.jsNeon PostgresETL
View project →
How it works: warehouse, labor, support, CRM and accounting systems feed a daily ETL pipeline into one Postgres warehouse with over a year of history.How it works
Data infrastructureCase study

Data Infrastructure & Backfill

The data backbone under the dashboards. An ETL pipeline that consolidated five operational systems into one clean warehouse. The call that mattered: everything older than 19 months looked like one bulk import rather than history the business had actually accumulated, so I cut it and set the reporting lookback at 19 months. Everyone measures the same window now.

PythonPostgreSQLPipelines
View project →
How it works: dozens of recorded calls are transcribed and analysed to rank what actually moved deals, then that feeds the outbound playbook.How it works
Sales intelligenceCase study

Sales-Call Analysis

Watched nearly every recorded sales call, then ran the transcripts through AI analysis from eight different perspectives (the rep, the CEO, a CRO, a VP of Sales, enablement, the business, an investor, the customer) to find what actually moved deals. Fed straight back into the outbound playbook.

Transcript analysisPythonGTM
View project →

Apps, tools & digital twins

Games & simulators

These are not business work, so they get their own shelf. Two were built for a seven-year-old in the family and one for a friend who flies for an airline. All three are live and playable right now.

AI enablement & teaching