Personal projects — mostly AI, mostly for my family, all running on my own infra.
QuestRunner
Fantasy trail-running quest game for kids. A story (think "Goblin's Gold") layers over a real outdoor trail; the Apple Watch runs the quest. Progress is driven by distance moved — forgiving GPS means diverging from the path still completes the run.
Swift
SwiftUI
watchOS
HealthKit
iOS
Almara
Quiet habit-tracking iOS app for kids 7–14. No streaks, no leaderboards, no dopamine loops — real-world effort grows an avatar across 5 stages over years. Almas (✦) currency funds parent-curated rewards.
Swift
SwiftUI
Supabase
iOS
KidQueue
Curated kid-video walled garden. Kids browse a shelf I pre-approved; Claude auto-classifies channels into enriching vs. treat tiers. The wall is iOS Screen Time — no YouTube rabbit holes.
SwiftUI
Next.js
Claude
Supabase
YouTube API
Mama Coco
Apple Watch AI assistant for my kids. Voice-first; self-hosted Claude Haiku gateway runs on my Mac Mini via Tailscale Funnel. Multi-session chats, text-to-speech, zero cloud lock-in.
watchOS
Swift
FastAPI
Claude
Tailscale
Parent Brain
A structured knowledge base per kid, fed by weekly 10-minute voice check-ins via Foil. Each month, Claude turns the profile and accumulated sessions into a personalized, print-ready workbook calibrated to their level, interests, and gaps. Paper beats screens.
Node.js
Claude
Foil
Whisper
PDF
Yuko AI
Personal AI inbox. SMS, email, or in-app → Claude classifies into tasks, goals, ideas, saves. Differentiator: a tone-aware, anti-nag nudge engine with HMAC-signed stateless action tokens.
Next.js 16
Claude
Supabase
Twilio
Web Push
Expert Panel
Multi-agent AI advisory board with versioned domain-expert personas and persistent per-agent memory. Daily portfolio standup runs automatically on my Mac Mini; real-time Slack agent team active in my workspace.
Claude
Multi-agent
Slack
launchd
Symphony
AI development orchestrator. Polls Linear tickets in "In Progress," spawns Claude Code in a per-issue workspace, and moves the ticket to "In Review" with a PR link on clean exit. Runs 24/7 on my Mac Mini.
TypeScript
Claude Code
Linear API
GitHub
Vitals
Ecommerce health monitoring engine. Connects Shopify, GA4, and Google Ads → deterministic rules detect anomalies → Claude composes a daily Slack brief and weekly email digest. No dashboard in v1.
TypeScript
Shopify
GA4
Claude
Postgres
Foil
AI voice interviewer. Ask one question → interviewee records an answer → Whisper transcribes → Claude scores against a rubric → gates into a structured knowledge corpus. Async, no real-time streaming needed.
Next.js
Whisper
Kokoro TTS
Claude
Dossier
Constraint-blocked idea tracker. 125 ideas tagged by the one world-state flip that unblocks each. A watcher loop clusters predicates, monitors the frontier with web search, and pings when something trips.
Python
Claude
launchd
Slack