22+ years designing systems that work for the people using them. I started in print and brand, spent two decades developing an eye for what actually works across media, and transitioned into building when AI tools made it possible to go from identifying a problem to constructing a solution. I work from real operational painpoints, build lean, and design everything around the person at the keyboard. My projects are not demos — they are functional builds in active development, each one started because someone's workflow was broken and nothing off the shelf fit.
Back to Site
Skills
Design
UX Research UI Systems Figma Typography Accessibility Information Design Print & Brand
Development
Python FastAPI Google Apps Script Vanilla JS HTML / CSS SQLite Ollama PWA
Methods
Painpoint-First Design Prompt Engineering AI-Assisted Development Systems Thinking Workflow Automation
Education
Portland State University
General Bachelor of Science
Focus: Systems Science
In Progress
Self-Directed
AI-assisted development, prompt engineering, full-stack tooling. Learned by building real systems from real problems.
Ongoing since 2023
Approach

Every project I have built started with a specific, real friction point. I do not build features. I build fixes. The methodology is: identify the pain, map the system around it, build the smallest thing that eliminates the problem, then refine.

CanvassKit
Origin: outreach team drowning in unstructured spreadsheets
Contact tracker built for nonprofit outreach teams managing community engagement. No CRM subscription, no onboarding curve. Logs calls, emails, and meetings from a Google Sheets sidebar. Status tracking, auto-formatting, and an interface built specifically for non-technical staff who should not have to think about the tool.
Google Apps Script Google Sheets HTML / Tailwind
Functional build
SoloBill
Origin: contractor paying for a full platform to use 10% of its features
Invoicing tool for independent contractors. Generates, tracks, and sends invoices directly from Google Sheets. PDF export via Docs, client and line-item tracking, email trigger. Tested in one real-world billing cycle, which surfaced UX friction and output issues. Structure is sound. Refinement ongoing.
Google Apps Script Google Docs PDF Export
Tested, in refinement
Media Engine
Origin: manual video logging was eating hours that should not exist
Two connected tools built around a media workflow problem. First: an iPhone audio recorder to PWA transcription pipeline built in Google Apps Script: record, drop audio, get text. Second: a video silence detector that scans raw footage on a timeline, identifies dead space, and outputs timestamps, eliminating manual scrubbing for editors. Both built without prior knowledge of the relevant APIs, learning entirely by doing.
Google Apps Script PWA Vanilla JS
Functional builds
CRON
Origin: no reliable way to understand what is actually on your machine
Local file intelligence platform — scans directories, detects duplicates, transcribes audio/video, and generates AI-powered file summaries. All processing stays on-device.
Python FastAPI Ollama SQLite
Functional, in active development
BRIGS
Origin: context rot. Projects stall because AI sessions have no memory.
A session continuity and context compression system for LLM workflows. The core concept: distill a full conversation into a dense, minimal token (a "gold coin") that any model can use to pick up exactly where work left off. Designed to eliminate the manual context-rebuilding tax that slows every AI-assisted project. Architecture defined. Build in progress.
Python Ollama Markdown
Architecture phase
22+ years working across print shops, branding agencies, and nonprofits. Built fluency in what works across print, digital, and UX over a long arc of real-world design practice. Transitioned into building when AI tools made it possible to take a problem from identification to working system without a team. The design background did not go away. It became the filter. Every technical decision gets evaluated against whether the person at the keyboard will understand it without help.