Skip to content

Projects

A mix of professional and personal builds. Some shipped, some in progress, all fair game to ask me about.

SOC 2 Compliance Center

In progress

An internal SOC 2 compliance platform — a lightweight Vanta/Drata alternative with a controls explorer, versioned evidence, and scheduled reviews.

  • #security
  • #compliance
  • #nextjs
  • #supabase

A full compliance management webapp built as a lightweight alternative to Vanta or Drata: a SOC 2 controls explorer organized by Trust Services Category, versioned evidence collection, an application inventory, a policy register, and scheduled compliance reviews with Slack reminders.

The interesting part is the evidence model. Evidence is append-only by design — corrections are new versions, withdrawals require a recorded reason, and nothing is ever rewritten or hard-deleted. That guarantee is enforced in the database itself (Row Level Security on every table, plus guard triggers that hold even for privileged roles), not just in the UI, so the audit trail can’t be sidestepped.

Built with Next.js, Supabase Postgres, and Google Workspace SSO (no password path exists, on purpose), deployed on Vercel. The framework layer — all 38 Trust Services Criteria, 18 control categories, and a 43-control library — is written to be re-deployable at any company, with the tenant-specific pieces documented and isolated. Deployed and in use for a real fintech SOC 2 program; the reminder cron and dashboard are the last pieces in flight.

Home Assistant w/ Visual AI

In progress

Home automation augmented with computer vision for smarter, context-aware routines.

  • #home-automation
  • #ai
  • #computer-vision

Details to come. Extending a Home Assistant setup with visual AI so the house can respond to what it actually sees, not just switches and schedules.

Family HQ

Live

A family dashboard for the wall TV and everyone's phones — calendar, dinner plans, school info, groceries, and carpool in one glance.

  • #nextjs
  • #supabase
  • #family
  • #home-automation

A household dashboard that runs on the kitchen wall TV and installs as a PWA on everyone’s phones: the shared Google family calendar, dinner plans with a suggestion box, the girls’ school lunch menu and events, a parent announcement banner, a 5-day weather strip, countdown chips for big events, and a carpool tracker.

My favorite hack: Apple removed server access to modern Reminders lists back in 2019, so grocery requests queue in the app and an iOS Shortcut on one family iPhone syncs them down into the shared Reminders list — triggered on a schedule and “when I arrive” at the grocery store.

The TV route ships zero client JavaScript and reloads itself every five minutes. External feeds (calendar ICS, the school website) cache with a last-known-good snapshot in the database, so the display never shows a blank card just because someone else’s site is down. Next.js + Supabase on the free tier, kept warm with a pg_cron ping.

dnd-scribe

Shipped

Records D&D sessions from Discord, transcribes them locally with whisper.cpp, and turns four hours of chaos into session notes with Claude.

  • #ai
  • #python
  • #dnd
  • #audio

A small Python pipeline for tabletop nights: record the Discord session on a Mac (BlackHole routes game audio to both my headphones and the recorder, with my mic mixed in), transcribe it locally with whisper.cpp — Metal-accelerated, so a 4-hour session transcribes in about 10–20 minutes — and then have Claude turn the transcript into a narrative recap plus structured DM notes.

Everything lands as plain markdown in a per-session folder: the raw audio, a timestamped transcript, and the notes. A campaign.md file with character names, NPCs, and a running plot summary gets fed in with each transcript, which is the difference between “Strahd” and “strod” in the output.

Recording and transcription are free and fully local; the notes step costs a dollar or two of API usage per session. Cheaper than a bard, and it never forgets what happened three sessions ago.

JobTracker

Shipped

A personal career-pipeline CRM where Claude Code doubles as the sourcing agent — finding roles, logging them, and tracking every stage.

  • #nextjs
  • #supabase
  • #ai
  • #productivity

A purpose-built CRM for managing a career pipeline: companies, applications, contacts, interactions, interviews, and follow-up tasks, with a stage flow (interested → applied → screening → interviewing → offer) whose history is written automatically by a database trigger — so the timeline is always accurate without anyone remembering to update it.

The twist is that Claude Code is a first-class user of the system. A CLI layer lets it act as a sourcing agent: ask it to “find senior roles at fintech companies” and it searches, evaluates fit, and logs promising postings directly into the pipeline — deduplicated, summarized, and tagged with why each one might be a match. Job descriptions pasted into the app get parsed into structured fields by the Claude API.

Next.js App Router + Supabase with row-level security, deployed on Vercel. Less a job board and more an experiment in what happens when your tools can do the legwork, not just store the results.

Set Construction for MTC

Ongoing

Building stage sets for the Milledgeville Theatre Collective — where the shop meets the stage.

  • #woodworking
  • #theatre
  • #community

Details to come. Hands-on set design and construction for the Milledgeville Theatre Collective, the local community theatre group I also serve as CFO / Treasurer.

Ideal Workbench

In progress

The pursuit of the perfect maker workbench — designed, built, and endlessly refined.

  • #woodworking
  • #making
  • #design

Details to come. An ongoing build to design and construct the ideal workbench for woodworking, 3D printing, and general tinkering.