Call Center Tool - Built at Ontrak

Ontrak Call Guide

Ontrak had over 100 engagement specialists making member activation calls, and a lot of them were struggling to hit quota. There was no call structure. Every agent did their own thing. The agents who were succeeding had built their own structure from years of doing this kind of work. The agents who were struggling had nothing to follow.

I built a digital call guide that provided that foundation. Six stages, every call:

  • Open
  • Foundation
  • Discovery
  • Tailoring
  • Close
  • Transfer
Read more and listen to the audio walkthrough
Training Systems Call Center Healthcare

Three Portfolio Pieces in One

The Recipe App

  • The app - built and running with 215 real recipes
  • The web page walkthrough - scroll-driven animations showing exactly how it works
  • The live demo - guided tour with a 24-hour reset cron that keeps pantry items current and wipes anything visitors added

My recipes were all over the place. Handwritten cards, screenshots, browser bookmarks, texts to myself. Nothing existed for home cooks who have been collecting recipes for twenty years. Every app assumed you'd be entering recipes from scratch. I wasn't. I had a pile.

So I built an app that reads handwritten cards from a photo, imports from a URL, takes a voice memo, and lets you talk to an AI to figure out what's for dinner from what you have on hand.

See the full showcase
React Convex Claude API Gemini PWA Shepherd.js Vercel Netlify

Tool - Live

Visual Prompt Builder

Writing prompts for AI image and video generation is a skill in itself -- one I was actively studying through a course when I built this. The difference between a generic result and a professional one comes down to knowing the vocabulary: shot type, lighting, mood, realism triggers. I built a tool that turns plain English into professional AI prompts so you don't have to memorize the terminology.

Four modes: Build Prompt, Reverse Engineer an existing image, Grid Builder for batch prompts, and a Reference library.

See the full walkthrough
AI Image AI Video Prompt Engineering Netlify

App - Built for a Group

Friends Job Dashboard

After a group of friends were laid off last summer, I built them a private job search dashboard. A skill I built scrapes the internet for positions that match their backgrounds and populates the dashboard automatically - so instead of scrolling job boards, they just show up and react to what's already there.

Every lead gets an AI fit score. Mark one interesting and tell JJ why - it learns their preferences and sharpens future results. When they're ready to apply, one click tailors a resume and cover letter to that specific job.

See the full walkthrough
Convex Claude API Apify Vanilla JS Vercel

Dashboard - Personal Command Center

Life at a Glance

I needed eyes and ears across everything, so nothing could break silently.

Life at a Glance is a living dashboard that surfaces the state of everything I have running: open backlog items, hook health, system map drift, database contents, journal themes. It morphs constantly as my setup grows. It's not a finished product, it's the instrument panel I check every morning so I know what's actually happening across all of it.

Full detail
Convex Vanilla JS Real-time

App - Live Demo Available

The Entertainment App

Friday night, can't remember which series I was in the middle of or which platform it was on. My sisters are recommending things in the family group chat and I have nowhere to put them. So I built one app that tracks everything across every platform.

Platform badges show where each title lives. Mark something started and it moves to Currently Watching. A built-in assistant lets you ask what to watch or add titles just by talking to it.

See the full walkthrough
Vanilla JS Convex Claude API TMDB API Netlify
Pam in a charcoal blazer with gold buttons standing at a chalkboard, gesturing mid-sentence as she teaches a friendly cartoon robot taking notes at a small school desk

Content System - Engineered in Public

The Blog

My goal was to streamline the blog writing process and turn it into a system. That meant teaching Claude to write in my voice instead of sounding like AI, breaking the habits AI loves to fall into. Hooks enforce voice rules, Gemini handles character-consistent images, audio narration regenerates when paragraphs change, and Convex sits behind it all so there is no CMS to wrangle.

The posts are a running record of what I figured out while building. If you are working with Claude Code, I hope something in here helps you on your journey too.

Read the blog
Convex Gemini TTS Gemini Images Content Ops