Projects

What I build, why, and what doesn't work yet. The limitations sections are honest.

Reframed

shipped

Helps people describe their experience honestly and still get the job. Live at reframed.works.

Next.jsTypeScriptAnthropicNeon PostgresUpstash RedisStripeReact PDF

ForgeFrame

active

Open-source memory for AI agents. Memories decay over time. Principles don't. You decide which is which.

repo
TypeScriptNode.jsMCP ProtocolSQLiteFTS5OllamaWebGL2

Guardian

absorbed

A desktop app for local inference that became ForgeFrame. Reframe detection, pattern tracking, encrypted notes - the engine got extracted, the shell didn't survive it.

repo
ElectronReactNode.jsSQLite/FTS5Zustandxterm.js

Distillery

active

Share a link from your phone. Your laptop reads it through your own recorded principles and tells you what resonates.

PythonFlaskOllamayt-dlpSQLiteiOS ShortcutsTailscale

StrudelVision

active

A Saturday night that kept going. Music visualizer with four WebGL shader modes, a Strudel REPL, a synth pad, a DJ mixer, and a TouchDesigner bridge — all in one index.html. Kinda works.

WebGL2Canvas2DWeb Audio APIStrudelOllamaWeb Speech APIWebSocketVanilla JS

Cipher

concept

Financial monitoring agent. Scores news against your investment thesis. Calls you if something matters.

PythonForgeFrameTwilioRSSLLM Scoring

Micro

Small tools. Single-purpose. No ceremony.

Voice Widget

shipped

On-device transcription. Click lips, speak, text on clipboard. Audio never saved.

Swiftwhisper.cppmacOS

Resonance / Recursive Hall

shipped

Generative WebGL architecture — seeded procedural halls rendered as wireframe ink drawings

Three.jsWebGLCustom GLSL ShadersVanilla JS

Orellana Tools

active

QuickBooks tools for a landscaping business that ran on verbal quotes. Make an invoice from field notes; record a check without retyping it into the books.

PythonMCPQuickBooks APIuvFastAPI

Deuce

active

A pricing instrument for tennis prediction markets. It prices fair value and signs the forecast before the market moves. The ledger is the product, not a profit claim.

PythonMarkov modelPolymarketMCPPoke