I’m a CS major at Columbia University. My experiences include harness engineering, LLM architecture, agent benchmarking, and industry experience in backend, app dev, and ML training.
I’m always endlessly interested in superalignment, intelligence research, and applied AI. If you have any interesting projects, please message me.
Now
PeKe Labs — Developer I. AR controller hardware, iOS app development, backend ML/SWE.
Columbia Software Systems Laboratory — Research Intern. Benchmarking code generation.
roleOriginated the approach, wrote the implementation plan, and built the prediction layer by turning a 90K-event trajectory corpus into the predictor's transition table.
TypeScriptCodexsandboxingSWE-bench
The Problem:
Codex runs tools serially, leaving the repository idle while it reasons about a
verification command that is often predictable.
The Solution:
Spex observes an unmodified Codex and pre-runs likely tests, lint checks, type checks, and
builds. A pull-only tool returns the byte-identical result only when Codex requests it.
Across 84 sealed runs on 42 SWE-bench Verified tasks, Spex matched the baseline’s 38
resolutions, served 80% of verification calls from speculative work, reduced aggregate
trace wall time by 13.9%, and increased verification by 64% with no added tokens or stale
results.
Architecture:
Spex reads Codex app-server events over JSON-RPC and predicts from a transition table
mined with PrefixSpan-style patterns over 2,146 trajectories and 90,591 normalized events.
Runtime prediction is a map lookup with 75.4% held-out recall, so it needs no second model
call. Allow-listed commands enter a two-slot sandbox queue and are keyed by command,
working directory, and source epoch. Each edit advances the epoch; duplicate or outdated
work is discarded before it can enter model context. Append-only JSONL traces record
predictions, launches, cache hits, misses, resets, and timing.
−13.9%wall time, SWE-bench Verified
80%verify calls served from pre-runs
75%top-3 held-out recall
+64%self-verification, 0 added tokens
The daemon watches an unmodified Codex, pre-runs the predicted verification command in a sandbox, and serves a byte-identical result from an epoch-fenced cache.
awardWinner, Social Impact Track · Winner, Best Use of Featherless (DevFest 2026)
periodFeb 2026
roleTeam of 4 with Alex Jerpelea, Theo Chapman, Anirudh Sridharan. I wrote the architecture and built the agent perception and damage systems, the three disaster modules, and the backend orchestration.
Emergency-training software rarely combines real neighborhoods, configurable disasters,
autonomous people, and replayable evidence. Abstract maps miss local geometry, while
scripted crowds cannot show how perception changes behavior.
The Solution:
OpenDisaster reconstructs any coordinates from OpenStreetMap, elevation data, and
satellite imagery. It simulates tornadoes, earthquakes, floods, and fires with structural
damage, configurable controls, eight VLM-driven agents, heatmaps, POV replays, and
narrated casualty reports.
Architecture:
A Bun backend proxies Overpass, elevation, satellite, Featherless, and ElevenLabs
requests. Three.js and WebGPU generate GeoJSON terrain and buildings, project satellite
materials, and render fire and debris particles. A bitecs Structure-of-Arrays ECS runs at
a fixed 1/60-second step and publishes disaster events. Each agent sends a first-person
frame over WebSocket to google/gemma-3-27b-it; calls are pooled across up to four API
keys, and responses drive road-graph navigation. Logs feed replay, while ElevenLabs
eleven_v3 gives eight agents stable voices with danger-aware delivery. Without an API
key, agents fall back to autonomous wandering.
4disaster modules
8simultaneous VLM agents
Allreal-world coordinates
Map, elevation, and satellite data resolve into one ECS world; disaster and agent runtimes both write to it, and everything downstream reads from it.City blocks reconstructed at altitude from OpenStreetMap and satellite imageryTornado simulation in progress with agent markers and per-agent POV strip
roleOriginated the project, designed client-side encrypted sync through rclone to R2, and wrote the initial spec and pull prototype.
PythonrcloneCloudflare R2richkeyring
The Problem:
AI coding sessions contain decisions, context, and failed approaches, but remain tied to
one provider and one machine.
The Solution:
Threadline gives Claude Code and Codex sessions Git-shaped history, cross-device sync,
search, review, diffing, and selective sharing without a hosted service or account.
Architecture:
Sessions use content-addressed blob, tree, and commit objects with linear fast-forward
history. When machines diverge, JSONL transcripts merge as a deduplicated union of turns
inside a two-parent commit. Immutable objects let each push copy only new objects and
update one ref through rclone. Client-side encryption leaves Cloudflare R2 with ciphertext
only, so no application server is required.
2agent providers
18git-shaped commands
E2Eencrypted, zero-server
A session repo is a real object store. Sync is an incremental copy of immutable objects plus one ref pointer, through an encrypted remote.
Equity portfolios carry hidden exposure to rates, inflation, credit, commodities, and
other macro outcomes. Polymarket prices many of those events directly, but investors lack
a bridge from portfolio risk to prediction-market hedges.
The Solution:
PolyHedge converts holdings into 18 macro-factor exposures, maps significant factors to
live Polymarket contracts, compares portfolio-implied probabilities with market prices,
and sizes quarter-Kelly hedges. Gaps below 8 points are ignored; positions are capped at
3% each and 10% total, with correlation haircuts and cross-factor deduplication.
Architecture:
An 11-stage Python pipeline uses OLS with Newey-West errors, QR orthogonalization, and a
Chow test to build dollar-weighted factor profiles. Yield-curve level, slope, and
curvature come from PCA. Polymarket markets are filtered by volume, expiry, domain, and
binary outcome, then ranked 40% on relevance, 35% on liquidity, and 25% on timing.
Probability inversion loading-weights holdings, caps moves at ±3σ, applies a tanh mapping,
and corrects bond ETFs for duration and convexity. A Next.js and React dashboard renders
the resulting exposures, divergences, hedge scenarios, and risk summaries with Recharts.
18orthogonalized macro factors
11pipeline stages
Eleven stages, grouped. Market data enters at ingest, the Polymarket catalog enters at match, and everything converges on a sized position.Divergence map with ranked hedge cards showing gaps of +16.5pp and −23.0ppDetail view comparing TradFi-implied probability against the live Polymarket price
roleColumbia Software Systems Laboratory Research Intern.
PythonPlaywrightPyTorchCLIPDINOGitHub Content API
The Problem:
No benchmark exists yet that tests models’ skills at 3D interactive web simulation generations.
The Solution:
A 649-case benchmark mined from more than 22K GitHub repositories and Three.js, with over 1,600
audited agent runs. Paper in progress, backed by Google.