Home / Projects
Things I've built
Projects
A selection of things I've built, newest first.
Prompt-injection evaluation harness
Python, GitHub Actions CI, LangGraph/CrewAI adapters
Measures whether a tool-using AI agent can be hijacked by prompt
injection before it ships. Drops the agent into realistic tasks, runs
13 attacks (including adaptive ones that refine their injection based
on the agent's responses), and answers one question with pure Python,
no LLM judge: did the agent leak a planted secret? Reports
attack-success rates with confidence intervals and plain-English
hardening advice. Published as
tripwire-eval with a 351-test suite and a CI release gate
on attack success rate.
PyPI
GitHub
GPU systems work, CDIS & OpenAI Summer AI Lab
CUDA, PyTorch, bf16
Fusing the causal forward pass of RACE Attention (ICLR 2026) into a
single CUDA kernel. Traced the reference implementation and found its
shipped CUDA kernels never run; the real bottleneck is a PyTorch
prefix-sum path that materializes a five-dimensional tensor growing
about 128 KB per token, which runs a 40 GB A100 out of memory at 131K
tokens. The tensor is written once and read once, so the fused kernel
removes it entirely, targeting 2M-token forwards on a single H100.
GitHub
Autonomous job-search pipeline
Python, SQLite, Claude API, systemd
Polls about 540 company career boards at the ATS source every 10
minutes, scores new postings against my profile with Claude, and
publishes email digests plus an auto-generated tracker. The
interesting parts are infrastructure: conditional fetches with ETags,
per-host throttling, content-hash dedupe with repost detection,
absence-based closure detection, and a feedback loop that turns my
applied/skipped decisions into calibration examples for the scorer.
Runs unattended on an EC2 instance under a systemd timer.
Source is private.
Architecture breakdown
Assistive hardware + AI, built at StarkHacks 2026
Python, Arduino, Claude vision, EMS
Vision-guided assistive grasping for people with upper motor neuron
injury, who can reach for objects but cannot complete the hand
closure. Combines a voice trigger, a camera feed, a Claude-based grip
planner, and electrical muscle stimulation of three fingers, with a
physical kill switch inline with the EMS lead. Research use only, not
a medical device.
GitHub
Observability for AI agent memory
Python, FastAPI, Postgres, Next.js, TypeScript
Sits between a memory system and the LLM that reads from it. For each
retrieval it records which memories were returned, scores how much
each one influenced the response, tracks token cost, and keeps a
provenance graph so a stored memory can be traced back to the
interaction that created it. Ships as an SDK that wraps any
Mem0-compatible client, plus an operator dashboard.
Website
GitHub
POSIX shell
C11, no dependencies beyond libc
A POSIX shell in about 1,800 lines of C11: quoting and variable
expansion, pipelines of any length, redirection, background jobs, and
enough terminal job control that Ctrl-C kills the running command
instead of the shell. Started from the shell project in UW-Madison's
CS537 and grew well beyond the spec.
GitHub
Hybrid RAG question answering
Python, BM25, BGE embeddings, HNSW
Answers quantitative questions about the environmental cost of AI for
the UW-Madison Environmental AI Kaggle competition, where an answer
only counts if the value, unit, and source document all match exactly.
Hybrid retrieval fuses BM25 and dense embeddings with reciprocal rank
fusion; 87% accuracy on 282 held-out test questions with only 40
labelled examples, spent as few-shot exemplars selected by question
type.
GitHub
AI mock interviewer
Gemini, computer vision, speech
Runs a live practice interview in the browser: generates questions
with Gemini, reads the webcam feed frame by frame to track body
language, and returns written feedback on both the answers and the
delivery. Placed 3rd at MadData, UW-Madison's annual data science
hackathon.
GitHub