I ship end-to-end production apps and build agentic AI systems.
10+ years of software product development across web, mobile, and cloud.
Top Rated
on Upwork
100%
Job Success
“Fun to work with. Very enthusiastic and knew his way around Claude Code. Organized.”
2026
Featured: Agent Lab
See inside an AI app while you use it.
Watch real AI systems work, step by step: every prompt, every model call, and what it cost.
Explore the labFeatured in the lab: Slack helpdesk agent, Bespoke autocomplete
Tools I Build With
My Recent Builds
OpenTask
2026AI-Powered Task and Habit Manager
A task and habit manager I use every day, on web, iPhone, Apple Watch, and macOS. Four AI features, each with its own provider and model, built so an AI failure never costs data: tasks save before the model runs, and every AI edit is undoable.
- Next.js
- TypeScript
- iOS + Apple Watch
- macOS
- SwiftUI
- Claude + OpenAI APIs
- AI evals
- CI/CD + Docker
AI autocomplete for text and code. Supports all major AI providers and local models — with custom Claude Code support for Opus-powered autocomplete.
- VS Code extension
- TypeScript
- Multi-provider LLM
- Claude Agent SDK
- Prompt engineering
- AI evals
cc-notifier
2025Claude Code Notification Tool
Open-source tool for Claude Code, with outside contributors. Built on Claude Code hooks and macOS automation: it notifies you when a session finishes in another window, and one click restores that exact window and iTerm2 tab across Spaces.
- Developer tool
- Open source
- Claude Code hooks
- Python
- macOS automation
Scalable LifeOS built to maximize personal performance
A model- and harness-agnostic system for life management and thought partnership, built for data at scale. “Desks” handle live data like email and run scheduled work, while “Capabilities” extend what it can do, from high-volume data processing and storage to custom CLI tooling.
- tokens under management
- 100M+
- conversations and counting
- 1,500+
- capabilities
- 50+
Just-in-time memory synthesis for full-detail recall, without the lossy compression of typical AI memory
Spots its own issues and opportunities and proposes fixes; human-in-the-loop gates stop errors and drift from compounding
Compartmentalized context with custom file access and per-domain capability subscriptions, for focused thought partnership
Plugins that extend vivaOS through Skills and agents, augmented with persistent state, self-improvement, and per-domain compartmentalization
Always-on autonomous agents with bespoke context that react to live data, run scheduled work, build on each other's output, chat with the user, and create deliverables
Dozens of scheduled jobs run around the clock, every run is logged, and standing audits raise an alert when a job fails, never fires, or the system drifts
- Claude Code
- Agent orchestration
- RAG / vector search
- Human-in-the-loop
- Observability
- Python
- AI enablement
- Human–AI augmentation
How I build with AI
Getting AI to work once is easy. Getting it to work reliably, safely, and affordably is the job.
Model selection
Fit the model to the job. A cheaper model wins only if it meets the quality and speed threshold.
Prompt & context engineering
Instructions and data scoped to the task, so the model gets exactly what it needs to decide and nothing extra.
Retrieval & grounding
Keyword and semantic search tuned to the data, and answers checked against their sources. Sometimes the whole document beats retrieval, and that's measured, not assumed.
Deterministic code
Solve what regular code can solve. The model only gets the judgment calls.
Tools & actions
Tool calling with the control flow in code: code decides what's allowed and which actions need a person's approval.
Guardrails & security
Outputs validated in code before anyone sees them, secrets masked in logs, and prompt-injection attempts in the test set.
Evals & regression tests
Test sets built from real cases and real failures, code checks first, LLM judges where code can't decide. Everything re-runs when a prompt or model changes, and CI blocks on the code checks.
Observability
Every step and model call traced, with tokens, cost, and latency. Efficiency and robustness scale with observability.
Failure handling
Timeouts and capped retries for expected failures, and a clean handoff to a person for the rest.
About
I started programming over 25 years ago, at age 11, after picking up my dad's copy of Borland C++. I spent my teenage years writing DOS apps and games, then followed my grandfather's advice and earned a BS in mechanical engineering, knowing I could always come back to my first love: software. After five years as an engineer at Klein Tools, designing products and working one-on-one with the co-president, I went all-in on software in 2016, building full-stack web, mobile, and cloud products of my own. In 2023 I saw how transformative AI would be for software development and for human performance, and I was hooked. Since then I've focused on AI-powered software, automations, and interfaces, bringing years of experience, engineering training, and a systems mindset to everything I build. Outside of work, I'm a husband, a dad to three wonderful kids, and an avid reader.
- Based in Milwaukee

- Based in Milwaukee
Favorite books
Favorite channels
10+ Years
Software Engineering
Top Rated
Upwork · 100% Job Success
BS Mechanical Engineering
University of Illinois Chicago, 2011
Anthropic Certified
Plus Microsoft & Scrum
Upwork Reviews
Top Rated · 100% Job Success
View Upwork profileLet’s talk
The fastest way to reach me is email or LinkedIn.
