Work
Judge the code, not the pitch
Two kinds of proof below. Open-source tools you can clone and run in one command — every one ships tests, a README that states its tradeoffs, and deterministic demo data. And production systems from my full-time work: those run on private code, so I describe the problems and the results instead.
In production, right now
Built for a US nationwide white-glove logistics company, running unattended on AWS — through a full server migration — since April 2026.
Document routing & approval automation
Two AI-powered systems that read inbound business documents, route them, generate responses, and manage approval workflows through Slack — with humans approving anything that leaves the building. systemd-managed, runbook'd, monitored.
Result: ~10 hours/week of manual document handling eliminated. Running unattended since April 2026.
Multi-channel call attribution pipeline
Matches inbound phone calls to the ad campaigns that produced them, in real time. The hard part: the phone API's call index silently dropped forwarded calls — polling looked healthy while losing exactly the calls that mattered. Diagnosed it, rebuilt on webhooks with reconciliation.
Result: $100K+/year of ad spend reliably attributed; 5+ hours/week of manual matching removed.
Order-photo pipeline at scale
Automated retrieval, organization, and captioning of delivery photos from an operations platform — thousands of orders, tens of thousands of photos, kept in sync on a schedule.
Result: 26,000+ photos across 3,600+ orders processed and organized without manual handling.
Automated work tracking & daily digest
A hook-driven system that logs engineering work across 40+ project folders as it happens, then compiles and sends a daily summary to Slack — status reporting with zero human input.
Result: 2+ hours/week of status reporting replaced; real-time visibility across every active project.
Open source — clone it, run it, read the tests
Thirteen tools. Shared standards: python3 gen_data.py && python3 <tool>.py runs the whole thing on seeded demo data, no accounts or API keys needed; python3 -m unittest proves the logic; the README states what I'd do differently in production.
Core operations suite
| Tool | What it does | The detail that matters |
|---|---|---|
| smb-ops-dashboard | Ops dashboard + morning Slack digest | Zero dependencies — stdlib HTTP + inline SVG charts |
| appointment-noshow-recovery | Reminders + no-show win-back state machine | Idempotent sends — crashes can't double-text a customer |
| client-onboarding-engine | Onboarding as a versioned JSON pipeline | Ops can edit the process without touching code |
| crm-dedupe-kit | Merges messy multi-system contacts into golden records | Fuzzy matches go to human review — never auto-merged |
| invoice-chaser | Overdue-invoice escalation ladder | At 90+ days it stops emailing and says "call" |
| lead-scoring-pipeline | Lead enrichment + 0–100 scoring | Reasons provably sum to the score (tested) |
| inbox-triage-bot | Shared-inbox routing + urgency triage | Rules handle the boring 80%; Claude gets the ambiguous 20% |
| smb-ops-mcp | MCP server: business database as Claude tools | Read-only by design; query layer tested without the transport |
Industry-specific suite
| Tool | Industry | The detail that matters |
|---|---|---|
| saas-health-scorer | SaaS | Every at-risk account gets a specific action, not a score alone |
| ecom-ops-radar | E-commerce | Demo plants 4 problems; radar finds exactly those, nothing else |
| realestate-lead-engine | Real estate | Cadence stops the second the lead replies |
| agency-report-builder | Agencies | Zero-lead spend reads "check tracking first" — usually the pixel |
| resume-screener | Recruiting | Ranks with evidence; never silently auto-rejects |
Why the demos use fictional data: my production work belongs to my employer, and client data is client data. So every public tool runs on deterministic synthetic data instead — which also means you can run all of it in sixty seconds without trusting me with anything.