Selected work

Retire With Time

Enterprise wealth management platform for financial advisors and their clients. The projection engine draws correlated multi asset returns through Cholesky decomposition and reshapes them into a multivariate Student t, so tails fatten and assets crash together while marginal mean and volatility are preserved. It models federal and state tax law, Social Security taxation, SECURE 2.0 RMDs including the inherited IRA ten year rule, IRMAA re-tiering off post withdrawal MAGI, ACA premium credits and the subsidy cliff, NIIT, AMT, and long term capital gains basis tracking across 13 withdrawal strategies. Tax brackets and RMD divisors live as database rows editable from an admin console rather than constants in code. Ricki, a self hosted Gemma assistant with real tool access and document ingest, runs on our own infrastructure so client data never leaves the box. The same engine runs three ways, on serverless GPU, local GPU, and CPU, with a parity gate that fails CI if they disagree.

Next.js, React 19, FastAPI, PostgreSQL, PyTorch, Modal, Redis, Stripe, Plaid, SwiftUI

Talon
10 landing providers

Solana sniper bot that detects new token creations and lands buy transactions in the same block. Transaction shapes are serialized once at startup into fixed stack allocated buffers, then patched at recorded byte offsets on detection rather than rebuilt. Signing runs on a hand rolled thread pool pinned to physical cores, coordinating through cache line padded atomics and switching between spin and park depending on core availability. Detection runs three interchangeable ways, including raw UDP shred ingestion with FEC reassembly done in process.

Rust, Tokio, Solana, Yellowstone gRPC, ShredStream, Axum, Next.js

Staking platform for head to head wagers on console and PC matches. A unified SSE endpoint multiplexes every live event over one connection per client, fanned out through Redis Pub/Sub so odds stay consistent across machines that scale to zero. Balance moves through a single conditional SQL update, closing the read-modify-write race a naive check leaves open under concurrency. Stripe Connect Express handles payouts, with every webhook persisted and deduped before processing. One backend serves the web app and an Expo mobile client over the same realtime contract.

Next.js, FastAPI, PostgreSQL, Redis, Stripe Connect, Expo, React Native, Fly.io

geoai24.9 km median on 4,000 held-out panoramas

Local open weights geolocation for Street View panoramas. A SigLIP2 backbone feeds an autoregressive hierarchical S2 cell classifier, then a ProtoNet content selector reranks candidates by image feature similarity rather than model probability. Three training generations plateaued, so instead of scaling further I ran diagnostics that isolated selection as the bottleneck rather than model capacity. Replacing greedy ranking with ProtoNet selection cut median error from roughly 73 km to 24.9 km with no retraining, and removed an inference stage rather than adding one.

Python, PyTorch, SigLIP2, S2 geometry, FastAPI

pkarb

Arbitrage engine monitoring Kalshi and Polymarket for price inefficiencies. Kalshi's taker fee is reimplemented exactly and subtracted inside the margin calculation, so the threshold is fee inclusive rather than fee blind. Event matching funnels through a unified API, then TF-IDF cosine similarity, then LLM verification, with persistent caches so any pair is judged once. The flakier Polymarket leg is placed first so a rejection aborts with zero exposure.

Python, scikit-learn, py-clob-client, Groq, Claude, Next.js

oddstaked

Odds aggregator across DraftKings, FanDuel, Bet365, and BetMGM. Bet365's sync token is generated by obfuscated in-page JavaScript, so it is acquired two independent ways: intercepting it off the site's own outgoing requests, and reimplementing their character substitution cipher in Python. Cross book normalization resolves 133 canonical team entries and guards against false player matches so lines are actually comparable.

Python, curl_cffi, Playwright, Pydantic

Push to talk dictation for Windows and macOS. Audio is captured on a dedicated thread, transcribed locally by Whisper, cleaned up by a local Ollama model for punctuation and proper nouns, then pasted at the cursor. Nothing leaves the machine. A silent warmup at startup forces the mmapped weights into RAM, removing a multi second stall on the first keypress.

Rust, Tauri, whisper.cpp, cpal, React, Vite, SQLite

Solcialslive on mainnet

Onchain social platform with no centralized backend. Posts, replies, likes, follows, and profiles are Anchor PDA accounts on Solana, with images chunked into sub 10 KB accounts to stay under the account size limit. The client hand rolls Anchor instruction encoding, computing the eight byte discriminators directly instead of depending on a generated IDL.

Next.js, React 19, Solana, Anchor, Rust, TypeScript

Experience

Retire With Time2025

Founder

Built an enterprise wealth management platform from the ground up, covering the tax and actuarial modeling, the simulation engine, the advisor and client web app, a native iOS client, and a self hosted LLM assistant with tool access.

Lazard2021

Software Engineering Intern

Financial technology solutions and internal tooling at a global advisory firm.

Skills

Languages

Rust, Python, TypeScript, JavaScript, Swift, C++, C, C#, Go, SQL, Bash

Frameworks

Next.js, React, React Native, Expo, SwiftUI, Tauri, FastAPI, Node.js, Express, Tailwind, Flask, Django

Infrastructure

PostgreSQL, Neon, Redis, Solana, Anchor, Stripe, Plaid, Docker, Fly.io, Modal, Cloudflare, Vercel, Linux, Nginx, Caddy

Machine learning

PyTorch, SigLIP2, Whisper, NumPy, Pandas, scikit-learn, OpenCV, Monte Carlo simulation

Automation

Playwright, Selenium, Puppeteer, curl_cffi, TLS fingerprinting, web scraping at scale