Skip to main content

Projects

A short list of things I’ve built. Most are still running; one is a community, one’s just getting started. Click through to the live site where there is one.

Selected work

Kasava

2025 — present
kasava.dev

Cursor for Product Managers

Kasava connects engineering teams' GitHub repos to a multi-stage indexing pipeline (10–30 files/sec into Postgres + pgvector), a multi-agent system that orchestrates Anthropic Claude, Google Gemini, and Voyage embeddings for code analysis, two-way sync with 15+ task platforms, and a Chrome extension that captures bug context — video, console, network, DOM — and drafts a root-cause writeup before filing the GitHub issue.

Cloudflare WorkersHonoPostgres + pgvectorMastraAnthropicNext.js
Kasava workspace
Kasava commit and code analysis view
Kasava bug-capture Chrome extension
Kasava screenshot 4

Monroe

2024 — 2025
joinmonroe.com

Goodreads for television.

Monroe is a TV-show platform with intelligent recommendations and an AI companion that remembers your viewing history. Built across web (Next.js 16), mobile (React Native + Expo), desktop (Electron), and a browser extension (Chrome, Firefox, Safari), all on a shared Hono API on Cloudflare Workers. A scraping pipeline pulls from 20+ entertainment outlets and uses gpt-4o-mini to classify article types and extract show references.

Next.js 16React NativeElectronCloudflare WorkersHonoMastra
Monroe library and recent activity
Monroe show detail with critic match
Monroe episode calendar

Inrole

2026 — present
inrole.xyz

Job search and evaluation agent.

Inrole evaluates job descriptions against your profile, generates tailored CVs, drafts outreach for LinkedIn and email, and ranks warm intros from your network. A Mastra-orchestrated multi-agent system runs evaluation workflows with bounded concurrency and only commits to a polished PDF for the matches it scores highly.

Next.js 16MastraAnthropicSupabaseDrizzleFirecrawl
Inrole pipeline board grouping roles by stage from evaluated through offer
Inrole pipeline list view sorted by match score
Inrole warm intros grouped by company with connection counts
Inrole role detail with CV match breakdown against the job description

Sightline

2026 — present

Record your app for a coding agent.

Sightline is a VS Code extension that spawns a controlled Playwright Chromium against your localhost app and records a narrated walkthrough into a bundle a coding agent reads later: a click-and-route timeline, a voice transcript, screenshots, and component refs. The refs are the point. Every React component you touch resolves to its exact src/file.tsx:line and gets fused onto the speech-and-event timeline, so the agent opens the right file instead of guessing.

VS Code ExtensionPlaywrightTypeScriptesbuildvitest

Airflow Plugins

2017 — 2019
github.com/airflow-plugins

Open-data community for Apache Airflow.

Built and ran the open-source community of plugins around Apache Airflow during the early days of Astronomer. Garnered code contributions from engineers in the US, Germany, Ireland, Israel, South Korea, and Taiwan.

PythonApache AirflowDocker

Open source

Extracted from the products above and published on npm.

Demokit

2025 — present
demokit.ai

Demo-mode SDK for SaaS apps.

Demokit turns a real product UI into an interactive demo with about ten lines of code — a framework-agnostic fetch and XHR interceptor with pattern-based URL matching and AI-generated fixtures from OpenAPI specs or Drizzle schemas. Originally extracted from Kasava's demo mode; now a TypeScript monorepo of an open-source core, framework adapters, and a hosted cloud dashboard.

TypeScriptTurboMastraAnthropicDrizzleNext.js 16
Demokit new-project wizard reviewing detected templates, features, and journeys
Demokit project view with datasets and per-entity field generation rules
Demokit schema analysis step building intelligence from a parsed schema
Demokit project-created screen with project ID, intelligence summary, and quick-start snippet

Fluent prompt construction for LLM agents.

A zero-dependency TypeScript library for composing system prompts with a chainable API. Define a section like error handling once, then include it in every agent instead of copy-pasting template literals. High-level generators emit protocols, lookup tables, and Anthropic-style XML tags as consistent markdown. Extracted from Kasava's multi-agent system; published on npm as @kasava/prompt-builder.

TypeScriptZero dependenciesnpm

Plan and feature gating, single-sourced.

A TypeScript library for SaaS plan and feature entitlement — canAccessFeature, getPlanLimits, and Stripe price-to-plan lookups against one typed config. Built after Kasava's own gating logic drifted into five separate copies across its backend and frontend, one of which silently showed pro-tier customers free-tier limits on an admin page. Ships a Zod schema that throws at import time on a malformed config instead of failing silently. Published on npm as @kasava/feature-gates.

TypeScriptZodnpm