Building AI-native systems.

A running list of the projects I'm working on — some shipped, some in flight, some still rattling around as ideas.

Projects

05
01

Conway

A personal AI operating system.

A production-grade personal AI OS that merges a conversational interface with proactive ambient intelligence. Conway centralizes calendar, tasks, email, finances, reading, wellness, and notes behind a streaming chat UI — ask it anything in natural language, and a fleet of specialized domain agents handle execution across the underlying systems. Built on Python 3.14 / FastAPI with a React 19 frontend, backed by PostgreSQL with pgvector for semantic search and Apache AGE for knowledge graphs, deployed on Kubernetes. The AI layer runs on the Agno multi-agent framework: Claude Haiku handles intent routing and tool dispatch across eight domain agents, Claude Sonnet drives structured extraction and summarization, and a Redis-Streams event bus powers the ambient layer — continuously watching email, transactions, and calendar for patterns worth surfacing, with a “Trust Ladder” that lets Conway take on more autonomy as you grant it.

Active
02

AI Content Pipeline (ACP)

Raw video in, finished content suite out.

An end-to-end pipeline that turns raw, mistake-filled video into a YouTube-ready package. You hand it an MP4 — it transcribes the audio, detects retakes and false starts, cuts the video frame-accurately, lays in text overlays, ducks background music under speech, and generates the full content suite on top: YouTube description, blog post, social clips, SRT subtitles. Built in Python with a FastAPI + React dashboard, PostgreSQL for job state, Cloudflare R2 for artifact storage, MLT and FFmpeg for video work, and ElevenLabs for word-level-timestamped transcription. Claude drives the heavy AI lifting — transcript analysis to find cuts, overlay concepting, and metadata generation — with Gemini and GPT wired in as per-step fallbacks. A ChromaDB + BM25 hybrid index lets the pipeline cross-reference an Obsidian vault so generated blog posts can cite the author's own prior writing.

Active
03

Chopper

Coding-agent orchestration, issue to PR.

A coding-agent orchestration system that takes a GitHub issue and drives it all the way to a merged pull request. Work comes in via webhook or manual trigger; Chopper spins up a Docker container, runs a chain of specialized agents — architect, implementer, reviewer, tester — and posts the results back as issues, PRs, and review comments on the repository. Built in Python with a FastAPI + React dashboard, dispatched through Kubernetes Jobs in production or local Docker in development. Each agent is a Claude Agent SDK session with a distinct persona defined in a SKILL.md file — system prompt, allowed tools, and output schema — so “skills” are really personas and capability surfaces, not different models. Agents get semantic code understanding via the Serena MCP server (symbol navigation, references, refactoring), with feedback loops that route review findings back to the implementer until tests pass.

In progress
04

Calotype

AI-native family photo management.

A family photo platform that solves the “who is that?” problem at scale. Upload photos, and Calotype detects every face, groups similar ones together, and queues them for identification — so you can select a cluster of faces from the same person across hundreds of photos and name them all in a single action. Once a person is identified, every future photo of them is matched automatically. Built on Next.js 15 / React 19 with TypeScript, PostgreSQL via Kysely, S3-backed image storage, and Sharp for variant generation. The computer-vision layer is AWS Rekognition end to end: face detection on upload, per-tenant Rekognition Collections for indexing, and similarity search to group and match faces — with 85% similarity surfacing suggestions and 95% auto-accepting matches. Background workers keep the face index and approval queue continuously re-synced as new identifications come in.

In progress
05

Rosetta

An Astro blog theme that translates itself.

A production-ready Astro blog theme with built-in multilingual publishing. Write your posts in English, declare the languages you want in a config file, and every build translates any new or changed posts into all target languages — including the body, front-matter, UI strings, and tags — while skipping URLs, code blocks, and image paths. A lightweight web editor ships alongside the theme so authors can draft posts and upload images without touching the filesystem. Built on Astro 5 with Tailwind CSS 4, React 19 islands, native content-collections-based i18n routing, and MDX support for embedded Vega-Lite charts, Mermaid diagrams, and KaTeX math. Translation runs at build time via a Node script that calls the Anthropic Claude API (Sonnet, low temperature for consistency) and uses a SHA-256 manifest to translate only what changed — so build-to-build cost stays small. If no API key is present, the script stubs translations and lets the build succeed anyway.

Active