I design and ship autonomous AI agent systems and vibe-coded web products — from Slack-native bots handling real workflows to interactive sites built for launch day, not just demo day.
This practice started out of necessity. Working as an Executive Assistant, I kept automating pieces of my own role — inbox triage, scheduling, follow-ups — until building the systems became the more interesting job.
Today I run a small practice building self-hosted AI agent infrastructure — named agents that live in Slack and client portals, handle routing, moderation, and reporting, and stay online with real uptime discipline, not just prototype polish.
Alongside that, I build interactive, visually-driven web products — animated globes, live simulators, and launch sites — designed prompt by prompt with a focus on getting the details exactly right rather than shipping the first pass.
Clients get both sides: the invisible system that runs reliably, and the visible product people actually enjoy using.
A browser flight simulator over real Icelandic terrain, timed to a real total solar eclipse — true elevation data, a full day-to-totality light cycle, and a land-on-the-mark win moment.
A companion build: a hot-air balloon ride over Luxor's real skyline, thousands of real building footprints, and an eclipse placed to the minute using cross-checked astronomical data.
A playable ski game on the same real-time eclipse engine as the flight sims — a relaxed free-ride mode, a three-tier challenge mode, and a fully custom sound design.
Rebuilt an early prototype into a full interactive site — a live map and a spinning 3D globe for picking a viewing spot, backed by computed eclipse timing instead of guesswork.
Every agent below runs on a self-hosted multi-agent platform handling scheduling, memory, and routing — so each specialized agent can focus on one job instead of rebuilding the plumbing every time.
Six purpose-built agents run on that platform for a single long-term client, each handling one slice of the day-to-day workload. Specifics belong to the client, but the coverage looks like: