Hi, I'm Jacob 👋
I’m building infrastructure for agentic workflows: budget monitoring and guardrails for agents.
JS

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

S

Self-employed

2020 - Present
Software Engineer
Verify My Order — contact-lens prescription verification for a US retailer, built end-to-end as sole engineer. A companion Shopify app: orders don’t ship until a prescription is verified — a state machine that negotiates between doctors, patients and the retailer over multi-channel communications. Regulated-sector approval engine with legally binding response deadlines, scoped directly with the non-engineers who own the process. https://verifymyorder.com · https://dimplecolor.com Private REIT — three-statement financial model built end-to-end as sole engineer from general-ledger and budget data. Inherited a complex VLOOKUP-reliant Excel workbook; iterated across 4+ tech stacks to find the right fit: (1) Python + xlwings, (2) Google Apps Script, (3) MS Access + SQL Server, (4) MS Excel with Power Tools. The MS stack landed as the answer. The technology was the easy part; the hard part was change management — getting finance users comfortable with dates as a time-series column rather than a crosstab, the shape that enables slicers and that the Power Pivot columnar engine needs. Power Query replaced the VLOOKUP chain, feeding a star-schema data model; DAX composed the three statements; CUBE functions pivoted them back into the P&L and balance-sheet layouts users expected; Power BI on top. Xero/MYOB sync utility (same client) — custom OAuth2 app and Basiq (AU bank-feed API) integrations on Terraform-managed AWS infrastructure (ECR, Lambda, S3, Secrets Manager, CloudWatch, Route53), with D3.js across the reporting surface for interactive visualisations over financial and operational data. Supplied the general-ledger and bank feed data that fed the REIT model.
S

STRV

2017 - 2018
Sales Engineer
Sales engineering at a US software-development agency (New York) — scoping custom software builds and translating client requirements into project specs.
A

Atlassian

2014 - 2015
Software Engineer Intern
Software engineering internship in the Jira/Confluence ecosystem, during my UNSW engineering degree.

Education

U

University of New South Wales

2012 - 2016
Bachelor's Degree in Engineering (Electrical)
Electrical engineering — signals, control systems, and embedded design. Where the systems thinking started.

Tech Stack

Agentic AI / LLM tools
RAG / semantic search
Tool calling / function calling
Prompt & context engineering
Evals / structured output
Local LLMs (Llama, MLX)
Multi-modal ML (Whisper, Qwen3-VL, OCR)
Inference optimization (quantization, batching)
MCP
TypeScript
Python
Rust
React
Node.js
Remix / React Router
Next.js
Data viz / charting (D3.js, SVG)
Recharts
Tailwind
Radix / shadcn
Zod
PostgreSQL
Redis
SQLite / FTS5
ORMs (Prisma, Drizzle)
Solana (Anchor, Helius)
On-chain forensics
Applied cryptography (HMAC, ed25519, OAuth2)
Xero & Stripe APIs
Inngest (durable workflows)
Docker
Kubernetes / Helm
Terraform
CI/CD (GitHub Actions)
Testing (Vitest, Playwright)
Sentry
GCP
AWS
Fly.io

Projects

Extends /insights, /usage, claude agents and hooks

Fairway (MIT): devtools for Claude Code

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.

Go
Claude Code hooks
MCP
JSON-RPC 2.0 over HTTP + SSE
SQLite (WAL)
Git plumbing

Done-for-you · the messy tail worked by hand

Ledger AI: forensic crypto and DeFi tax bookkeeping

A multi-tenant TypeScript service that books crypto and fiat into a double-entry ledger. On-chain data flows through Inngest-orchestrated Solana pipelines (event listening, transaction parsing); off-chain data arrives via Xero/MYOB sync (durable, retry-safe, per-tenant concurrency) and a local multi-modal agent harness over bank statements, screenshots and CSVs for the messy sources. ~$1M+/year reconciled across multiple on-chain and off-chain venues — hundreds of thousands of events, tens of thousands of fiat transactions. The same substrate also feeds on-chain forensics — wallet-flow reconstruction across chains for compliance and loss-quantification.

Backend: React Router v7 + TypeScript server on GCP Cloud Run with PostgreSQL (Cloud SQL) and Prisma, ~120 Prisma tables across 18 schemas, GnuCash-shaped. Inngest orchestrates a multi-step pipeline that ingests Solana on-chain events (via RPC and Anchor). Multi-tenancy via Postgres RLS as authorization (not just filtering), fed by a Zanzibar access-grant table.

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.

Lineage: originated as a Python MVP in 2022 — a REST ingestion client over Postgres, reconciling exchange trades against on-chain transfers, extended with event-driven on-chain services — RPC listeners (web3.py) feeding async handlers, fronted by Flask/gunicorn, containerised and deployed to Kubernetes via Helm. Rebuilt in TypeScript as the schema stabilised and multi-tenant requirements landed.

TypeScript
React Router
Postgres
Solana decoders
FIFO cost basis

Writing

See all
Follow Along

Building in Public

I write about building crypto and financial-data tools — and what I learn using AI to ship faster.

Settings

Theme