Live products and published tools up top, then the prototypes and experiments where I push new stacks, AI patterns, and agentic tooling.
Live & published
Live
Storm Replay
Finds the Moore EF5 within 2 km of its surveyed touchdown
Replays real NEXRAD Doppler radar of five famous tornadoes in the browser, with no backend. My own Archive II and bzip2 decoder runs in Web Workers, WebGL draws the radar, and an in-browser detector marks rotation over NWS warnings and damage paths.
TypeScriptWebGLWeb WorkersMapLibre GLBinary format decodingGitHub Pages
Live election-night results with a poll-closing schedule, prediction-market odds for every major race, and House and Senate control odds. Plus state-by-state electoral maps for all 25 presidential elections since 1928, an 11-layer demographics map, 51 state hubs, and two quizzes.
Quality-of-life Fabric mods, kept current with each Minecraft release through a Claude Code pipeline I built: a custom skill, an MCP decompiler to diff versions, and my own publishing MCP server.
MCP server that lets Claude and other AI assistants search Modrinth and publish mod releases. Listed in the official MCP Registry and installable as a Claude Code plugin — I ship my own mod updates with it.
Info site for a drive-up Halloween and Christmas light show: hours, show status, directions, and Venmo donations for charity. Includes a secured admin panel wired to the show’s xSchedule API.
RAG assistant for Destiny 2 dungeon mechanics — OpenAI embeddings + Pinecone retrieval with streaming Claude answers, plus Zod validation, rate limiting, and response caching.
RAGOpenAIPineconeClaudeNext.jsTypeScript
Prototypes & experiments
World Wide Canvas
Prototype
Shared, anonymous real-time pixel canvas with a 262,144² cell world. Streams 256×256 chunks like map tiles, bounds memory with LRU eviction that never drops in-flight paints, and rate-limits each visitor by IP with token buckets.
B2C mobile-first app (Expo) + Fastify API for car maintenance reminders and service history. Decodes VINs via NHTSA vPIC, runs an offline SQLite garage with a calibration wizard, supports due-by-mileage AND due-by-date logic, local notifications, and receipt photos. Optional cloud sync, Stripe Pro tier, and PDF export. Monorepo with shared Zod schemas between mobile and API.
TypeScriptExpoReact NativeFastifySQLiteZod
Beat-Sync Clips
Prototype
Hosted SaaS — "one video from your clips, cut to the beat." Upload a track plus video clips, librosa transient detection drives cut points, FFmpeg renders a single MP4 (9:16 or original aspect) with optional flash/zoom on cuts. Next.js + Tailwind frontend with Clerk auth, FastAPI backend handing off to RQ + Redis workers, Postgres for state, S3-compatible object storage, Stripe Checkout + webhooks, and slowapi rate limits.
Personal iOS app (Expo) + local Node server for golf swing analysis. Records 120/240 fps slo-mo on phone, compares side-by-side against baseline swings, and gets Claude-only vision coaching feedback. Server runs FFmpeg locally over LAN; designed to keep video processing on-device and on-network rather than in the cloud.
TypeScriptExpoReact NativeNode.jsFFmpegClaude
Monthly Money
Prototype
Local-first CLI + web UI that turns one month of bank statements into a report card. Upload PDF or CSV statements, enter income, get F → S letter grades per spending category and savings rate. Claude (no GPT) parses the statements and categorizes rows; grading itself is deterministic against a YAML benchmarks file so results are reproducible.
Node.jsTypeScriptClaudePDF ParsingYAMLCLI
AI Golf Caddie
Prototype
Mobile-first Progressive Web App that provides personalized golf strategy recommendations using AI. Generates pre-round hole-by-hole strategies for all 18 holes (teebox, fairway, chip) and adapts them in real-time during play based on photos, distances, weather, and lie conditions. Features LangGraph agent orchestration, vision AI for course photo analysis, handicap-adjusted strategies, and real-time strategy updates.
AI-powered security agent that detects hardcoded credentials in code repositories. Automatically stores credentials as environment variables and fixes code references.
PythonLangChainLangGraphOpenAI APIGitPythonYAML
PDF Toolkit
Prototype
Free, privacy-focused PDF toolkit web application with 10+ tools including merge, split, compress, rotate, extract pages, watermark, and convert operations. All PDF processing happens client-side in the browser for complete privacy - files never leave the user's device. Built with Next.js 16, features SEO optimization, Google AdSense integration, and responsive design.
AI-powered commercial lease compliance checker for Florida property managers and landlords. Uses agentic AI with LangGraph to analyze lease agreements against Florida Chapter 83 statutes, identifying compliance issues and providing actionable recommendations. Features self-correcting workflows, human-in-the-loop interrupts, state-aware retrieval planning, and real-time reasoning trace. Built with FastAPI, Next.js 15, PostgreSQL with pgvector, and MCP protocol.
Full-stack blockchain wallet tracking and analytics platform. Tracks wallet addresses across multiple chains (BTC, ETH, SOL, BSC, Polygon), monitors transactions, and sends multi-channel alerts (Telegram, Discord, Email, SMS, Push). Features ML insights, API access, and Stripe payment integration.
JavaSpring BootPostgreSQLNext.jsReact NativeExpo
MoveFinder - Relocation Assistant
Prototype
AI-powered relocation assistant. Chat to describe where you want to move (climate, cost, coast, mountains, etc.); the app extracts criteria, ranks US cities from a static dataset, and shows candidates on a map. Pick a city, then describe neighborhood preferences (walkable, safe, family-friendly, transit)—get ranked neighborhoods for that city, displayed on the same map.
Personal-finance scenario dashboard with interactive sliders (salary, rent, expenses), plus a Model Context Protocol server that lets an AI assistant answer natural-language questions — savings rate, rent affordability, scenario comparisons — via typed tools (get_financial_snapshot, calculate_scenario, compare_scenarios).