About
I started building in crypto in 2020, and when I had to do my taxes nothing could reconcile activity spread across many wallets and chains, so I built my own software for that (see my project Ledger AI). The FTX collapse in 2022 pushed me into local LLMs to structure unstructured evidence and quantify losses. When Claude 3 launched in 2024 I put a model in the loop and started building budget monitoring tools and guardrails for agents (see my project Fairway). I also do freelance work building software in regulated industries (see Verify My Order).
Open to AI and full-stack engineering roles — remote, or based in Tel Aviv.
Work
Tech Stack
Projects
Extends /insights, /usage, claude agents and hooks
Guardrails and devtools for collaborating agents. Claude Code’s docs tell you what to do when you ask; Fairway tells you what to do when you don’t know what to ask, and gives you hooks to encourage patterns and discourage antipatterns. For example, a concurrency guard that intercepts wide git operations (reset --hard, checkout ., force push) before one autonomous coding agent clobbers another’s uncommitted work — multi-agent-safe by design, no shared state between sessions, pre-run interception at the hook layer.
Nine small tools sharing one Go binary, one WAL-mode SQLite store and one MCP server, so anything one tool writes another can read — each extending commands Claude Code already ships (subset: /insights, /usage). Pick the ones you want: most are read-only pull commands that need nothing installed, and two wire into your setup with explicit install and uninstall verbs. The binary alone creates no files, opens no ports, writes no config. Next: budget management for agents, built on the reconciliation primitives from Ledger AI.
Done-for-you · the messy tail worked by hand
Koinly and CTC handle the easy 90%; Ledger AI handles the hard 10% — the DeFi protocols and decentralised exchanges the automated tools give up on, decoded into statements accountants and tax offices accept. Works that tail by hand, at volume, and quantifies the gap in dollars rather than hiding it. Also includes fiat extensions for Xero and MYOB. Hundreds of thousands of on-chain multi-chain events parsed, tens of thousands of fiat transactions reconciled for clients to date.
Backend: React Router v7 + TypeScript server with PostgreSQL and Prisma, ~60 Prisma tables shaped to the GnuCash schema. Inngest orchestrates a multi-step pipeline that ingests Solana on-chain events (via RPC and Anchor). Multi-tenant access via Postgres RLS over Zanzibar-lite access grants.
Frontend: React components that feel familiar if you’re used to MS Excel, optimised for information density. SSR via React Router v7; per-report view state (filters, pagination, selection) in an HMAC-signed cookie with Zod schemas; TanStack Table with keyboard navigation; inline mutations with useFetcher; Framer Motion over Radix UI. Built as a headless engine for distribution.
Agent Harness: Python pipeline for ingesting unstructured data from voice, vision and OCR using local models on MLX (Apple Silicon). Model choice per task via evals (vision-language models benchmarked for OCR on legible vs degraded documents). Structured output feeds downstream pipelines like Ledger AI.
Writing
See allBuilding in Public
I write about building crypto and financial-data tools — and what I learn using AI to ship faster.