workflows active: 44 last morning round: Thu 07:00 last deploy: 2026-09-03
Lab LAB / 01

Personal builds

Things I built because I wanted them to exist. Same habits as the work, just pointed at home.

The job search machine

Problem
A serious search is a pipeline, and running a pipeline by hand out of browser tabs eats the hours that should go into the actual applications.
Built
Research and drafting run per company, with a gate that stops anything that shouldn't go out. Outreach drafts show up in a morning digest with one-tap approve and send. The work samples carry a beacon that pings my phone when somebody opens one. Friday I get a scorecard. Notion holds all of it.
Stack
claude code / n8n / notion / gmail
The morning round job search / n8n, gmail, and me, taking turns n8n Gmail Will 8am schedule every day Labeled drafts labeled only Build and send one digest Approve and send one tap Send the draft as written, logged fails closed if the label is missing: no label, no send button
The morning round, as turns taken.
WEBHOOK Visit Webhook CODE Verify And Throttle GMAIL Email Visit Alert TWILIO SMS Visit Alert
Kit visit alert. Rendered from workflow export, 2026-08-31.
The Morning Round v2 workflow on the n8n canvas after a run: eight nodes from the schedule trigger to the Gmail send, each with a green check and an item count
The Morning Round on the n8n canvas, drawn from the workflow export and the node timings of the 2026-09-02 07:00 run.

Life OS in Notion

Problem
Life admin scattered across inboxes, memory, and paper means the same decisions get made twice and the maintenance gets remembered late.
Built
An operating manual, an Inbox, a Knowledge Base, a Decisions Log, Active Sprints, a Weekly Review, and a Home and Garage Maintenance database. Three hooks feed it so I don't have to: forwarded email lands in the Inbox, a webhook writes to the Knowledge Base, and Home Assistant logs maintenance on its own.
Stack
notion / n8n / home assistant / gmail
Life OS hub notion / one page runs it; family surfaces left off on purpose Surface What it holds Now project queue, stalest on top Capture inbox title only, keep moving Weekly review sundays, 15 minutes Knowledge base decisions and lessons Money and direction monthly, not weekly Logs maintenance, dog, builds Parked nothing gets deleted Operating manual read when away Capture hooks email label, home assistant, webhook, all through n8n
The hub, mapped from the live workspace, 2026-08-31.
Email to inbox GMAIL TRIGGER Watch notion-inbox label NOTION Create Inbox row Home maintenance (home assistant) WEBHOOK HA Maintenance Webhook SET Normalize fields NOTION Create Maintenance row RESPOND Respond OK Knowledge base webhook WEBHOOK KB Capture Webhook SET Normalize fields NOTION Create Knowledge Base row RESPOND Respond OK
The three capture workflows. Rendered from workflow export, 2026-08-31.

Home Assistant

Problem
A house full of smart devices from different eras, none of them speaking to each other, half of them running someone's cloud.
Built
Three waves of cleanup: naming conventions, consolidating integrations, retiring old hardware. Then the automations, including a goodnight lockdown and a doorbell chime. Maintenance events post themselves to the Life OS database in Notion.
Stack
home assistant / n8n / notion
Home Assistant, three waves the cleanup, in order Wave 2 naming: one scheme, every device Wave 3 integrations consolidated, old gear retired Wave 4 automations: goodnight lockdown, doorbell chime maintenance events post themselves to Notion through the n8n webhook; the dashboard stays in the house
The three waves.

Wardrobe app

Problem
Getting dressed for the right context is a lookup problem, and nobody in the house wanted to be the one answering it.
Built
Wardrobe and Outfits databases in Notion with a standardized schema across 14 use contexts, a Cloudflare Worker API on top, AI photo cataloguing to get items in without data entry (289 items in so far), and an iOS app in progress with TestFlight for family use.
Stack
notion / cloudflare workers / ios (testflight)
The wardrobe system what sits on what iOS app testflight; reads and writes through the worker Worker API cloudflare Notion databases closet / his: 289 items, closet / hers, outfits: 14 use contexts AI cataloguing photo in, item out item count queried from the live database, 2026-08-31
The system. Item count queried from the live database, 2026-08-31.

Event pacing dashboard

Problem
An events team watching registration and revenue pacing across a portfolio should not have to assemble the picture by hand every Monday.
Built
A standalone app on the Bizzabo API for a media company's events team: registration and revenue pacing, year over year comparisons, promo attribution, Monday digests, and an AI question-and-answer layer on top of the data.
Stack
bizzabo api / ai q&a layer
Registrations Revenue pacing Vs goal Events needing attention Ask the analyst pacing, channels, revenue drawn from the real interface; the live numbers stay internal on purpose
The interface, drawn. The live one runs on numbers that stay internal.

The fireworks show

Problem
No problem to solve here. I just like fireworks.
Built
An annual show programmed on an Ignite cue system and synced to music, with a 2-second delay baked into every cue to cover igniter lag. You get one take a year.
Stack
ignite / a music track / a checklist
A trailer bed covered in wired firework cakes and mortar racks, cue wires running to a laptop at the edge
Cue wiring, mid-setup. The laptop runs the show file.