About
I'm a startup-native software engineer + designer working on applied AI, with a love for building across the stack. I'm a sucker for great aesthetics, and I've always liked making things: LEGO, Minecraft builds, 3D models. I'm also drawn to open worlds and worldbuilding.
I'm currently pursuing my master's in Computer Science at Penn, graduating in May 2027, and doing research with the Penn NLP Group under Prof. Chris Callison-Burch on LLM vigilance and memory systems.
I'm passionate about tennis and swimming and try to make time for both regularly. I also love dogs and have a Rottweiler named Grogu!

Experience

Moative
Sole engineer on most projects, owning each from PRD and prototyping through infrastructure, deployment, and client demos.
- An AI interview-screening platform that turns raw interview audio into evidence-cited candidate scorecards, used across 100+ interviews at 15+ companies. Built on a LangGraph multi-agent pipeline (diarization, trait-weighted scoring, comparison); I owned the app, auth, and deployment.
- A utility support agent for outages, billing, and usage that serves web chat, phone, and SMS from one LangGraph runtime, with per-customer memory that persists across sessions and channels.
- A permit-review agent where a multimodal model checks site plans and engineering drawings against a 22-point municipal-code checklist, returning a pass/fail with rationale per requirement. I shipped the Django backend, the citizen application flow, and the staff review dashboard.
- A company-lookup API (FastAPI) that turns a company name into structured firmographics and a NAICS code, using LangChain scraping agents and a RAG layer over the 800-page NAICS manual to avoid fabricated codes.

Samsung Research
- Built a pet facial-state classifier (eye, ear, and mouth position) whose fine-tuned MobileNetV2-SSD beat the baseline by 11%, ahead of YOLOv8 and ResNet across standardized evaluation sets.
- Compiled and annotated a 10K+ image dataset through manual collection, labeling, and augmentation to improve class balance, earning a Certificate of Excellence and a $1,000 award.
Selected work
A platform that turns a plain-English prompt ("a diamond sword that shoots lightning") into a compiled, installable Minecraft mod through an agentic loop with no human in it: an agent writes Fabric/Java against retrieved API context, a sandboxed Docker + Gradle container compiles it, and build errors feed back until it passes. I built the full product around it, and reverse-verified Minecraft 26.1's newly unobfuscated API from the compiled JARs after official mappings were discontinued.
A coverage-guided fuzzing agent that feeds a function's uncovered branches back to an LLM each iteration to target unhit paths, instead of mutating blindly like AFL or LibFuzzer. On a benchmark tokenizer it hit 98.3% branch coverage vs 90.7% for random fuzzing and found 4 crashes the baseline missed, using under half the inputs.
A Java web search engine running on distributed infrastructure I built from scratch: a sharded, consistent-hashing key-value store and a Spark-style compute engine with an RDD interface. On top of it, a crawler over 300K+ pages, a distributed inverted index, iterative PageRank, and multi-signal ranking that serves sub-50ms queries.
A from-scratch voxel engine in C++ and OpenGL (3-person team) where I owned rendering and generation: chunked terrain that streams in and out around the player in real time, a full GLSL shader stack with a procedural analytic day/night sky, and rivers and asset scatter from a stochastic L-system.
A full-stack system that rethinks the post-stay hotel review: instead of a generic form, it mines a property's existing reviews for what is missing, stale, or contradicted, then asks one or two targeted follow-ups. A deterministic gap-scoring engine does the analysis offline and an LLM only phrases the questions, at roughly a tenth of a cent per insight. Placed 3rd of 65 teams at the 2026 Wharton × Expedia Hack-AI-thon.
Research

Advised by Chris Callison-Burch and Mark Yatskar
My research targets the 'vigilance gap': a model holds a safety-critical fact a user shared earlier (say, a latex allergy) but fails to act on it once the question stops pointing back to it ("banana or avocado smoothie?").
I approach it as a memory problem. Most memory systems are built to fetch what a user is asking about, while vigilance needs the opposite: surfacing a fact they are not asking about but urgently need.
A memory system I designed for safety rather than general recall raised success on a safety benchmark from 48% to 87%, while cutting false alarms from 11% to 8%, below the base model. I also built the parallelized, cost-tracked pipeline that runs these evaluations at scale.
Teaching
University of Pennsylvania
- CIS 5210 · Artificial Intelligence. Taught by Harry Smith (Spring 2026) and Chris Callison-Burch (Summer and Fall 2026).
- CIT 5960 · Algorithms and Computation. Taught by Anindya De and Erik Waingarten (Fall 2026).