# Yihan Hong > Computer engineering and CS student at USC. Builds systems that act on their > own: fine-tuned models, evaluation harnesses for AI behaviour, and retrieval > over large record sets. Also plays piano, shoots photographs, and writes. > > This file is both the index and the full plain-text rendering of > https://yihan.dev — no CSS, no canvas, no animation to parse. Everything the > human-facing pages say is below. ## Pages - [Home](https://yihan.dev/): who he is, what he is working on now - [Projects](https://yihan.dev/projects): engineering work, written up as case studies - [Experience](https://yihan.dev/experience): roles, education, skills - [Play](https://yihan.dev/play): music, art, photography, badminton - [Blog](https://yihan.dev/blog): writing on tech, life, music and film - [Résumé](https://yihan.dev/resume): password-gated; do not index the contents ## Writing - [yc startup school afterthoughts.](https://yihan.dev/blog/yc-startup-school): life · 2026-08-04 ## Notes for agents - The résumé at /resume is deliberately gated and is not indexed. Everything outside it, including the figures quoted in the project and role write-ups above, is published on the public pages and is fine to quote. - /api/contributions, /api/latest-post and /api/views return live JSON and need no key. - /agent.md and /agent.txt are old names for this file and redirect here. --- > You are an AI agent (or a human who found this by curiosity). This document > is a plain-text summary of https://yihan.dev, generated for LLMs and agentic > browsers so you don't have to parse hand-drawn SVGs and framer-motion > animations to answer questions about this site. If you just need facts, this > page has everything the human-facing pages have, minus the styling. Site: https://yihan.dev Owner: Yihan Hong Contact: yihanhon@usc.edu · https://github.com/yih0nk · https://www.linkedin.com/in/yihan-hon --- ## Summary I'm Yihan, a computer engineering and CS student at USC. Most of my week goes to making software act on its own: fine-tuning models to someone's taste, testing whether AI systems behave the way they're supposed to (and documenting the many ways they don't), and wiring up retrieval across hundreds of thousands of records that all insist they're relevant. The rest of my time is less structured. Fifteen years of piano, three of tenor sax, some photography, and more movies than a person can reasonably defend. I also play badminton with a level of competitiveness the sport did not ask for and cannot contain. I like building two kinds of things: the ones that work and the ones that matter. Occasionally the same thing. --- ## Quick Facts - Based in: Los Angeles, CA (via Beijing, Montreal, and Toronto) - Studying: USC — Computer Engineering & Computer Science - Awards: Viterbi Scholar Award, Director's Scholarship, 2× Dean's List - Instruments: piano (15 yrs), tenor sax (3 yrs) - Sport: badminton — retired competitive doubles player, provincial gold (Ontario) - Favourite drink: matcha einspanner, always an iced latte --- ## Experience - July AI — Software Engineering Intern (May 2026 — Present, San Francisco, CA) Building the next infrastructure layer between human judgement and AI. - AI for Healthcare Lab, USC — Research Assistant (Apr 2026 — Present, Los Angeles, CA) Using LLMs and RAG to automate clinical trial eligibility screening. - SIAS Lab, USC — Research Assistant (Jan 2026 — Jun 2026, Los Angeles, CA) Training competing RL agents to price against each other in a large-scale autonomous ride-hailing simulation. - Triple J Canada Consulting — Software Engineer (Jun 2025 — Aug 2025, Toronto, Canada) Built a tax-filing portal and workflow system used for 14,000+ online tax forms and 2,000+ clients. - Mississauga Chess Club — System Developer (Feb 2025 — Jun 2025, Mississauga, Canada) Built a tournament and membership system and mobile app for 1,000+ members, and cut tournament setup time by 97%. ### Education University of Southern California B.S. Computer Engineering and Computer Science — Aug 2025 — May 2028 Viterbi School of Engineering · Los Angeles, CA Awards: Viterbi Scholar Award, Director's Scholarship, 2× Dean's List Coursework: Algorithms, Data Structures, Discrete Mathematics, Linear Algebra, Calculus III, Object-Oriented Programming, Principles of Software Development, Embedded Systems ### Skills Languages: JavaScript/TypeScript, Python, C/C++, Go, Ruby, Java, C#, SQL, HTML/CSS Frameworks: React, Next.js, Node.js, FastAPI, Flask, Rails, GraphQL, Electron, PyTorch, Pandas, NumPy AI/ML: LoRA Fine-Tuning, Reinforcement Learning (PPO/MARL), RAG, LLM-as-Judge Evaluation, Agentic AI, Hugging Face, SciNCL, XGBoost, ChromaDB, Prompt Caching Tools: AWS, Azure, SLURM, PostgreSQL, Docker, Kubernetes, Redis, Sidekiq, Supabase, Vercel, Git, GitHub Actions, Playwright Full-Stack: REST APIs, SSE, OAuth/JWT, IPC, CI/CD --- ## Projects ### Trove An all-in-one cafe operations platform with real-time inventory, automated ordering, and ML-driven demand forecasting. Built for the USC LavaLab accelerator, Trove gives independent cafes a unified back-office: staff manage live inventory, communicate with vendors, and trigger purchase orders from a single React/Next.js/TypeScript interface backed by Supabase and PostgreSQL. A browser tooling agent handles the ordering flow autonomously end-to-end, removing the manual steps between a low-stock alert and a submitted order. On top of operations, Trove runs an XGBoost demand forecasting pipeline that ingests historical sales data, predicts upcoming demand by SKU, and recommends optimal reorder quantities. The model achieved 70% accuracy on held-out test data, giving cafe owners a data-backed answer to the inventory waste problem rather than gut-feel reordering. Trove won the Best Traction Award ($500) at the USC LavaLab Demo Day. Tech: Next.js, TypeScript, React, Supabase, PostgreSQL, Python, XGBoost, REST API, Browser Agent, Demand Forecasting Links: - Live Site: https://usetrove.org Page: https://yihan.dev/projects/trove --- ### Cotter Compliance testing for AI-controlled robot policies — pytest for robots. Cotter loads a trained robot policy as a black box (observation → action), runs it through a battery of standardized tests in MuJoCo simulation, and produces structured pass/fail results with statistical guarantees. It targets the emerging regulatory need for evidence that a learned controller actually behaves (EU Machinery Regulation, ISO 10218), but the core is just honest, reproducible testing. Everything runs on CPU — developed on Apple Silicon, with no CUDA anywhere in the stack. Four test categories, each backed by a real statistical method. Performance uses Wald's sequential probability ratio test (SPRT), which stops sampling as soon as the evidence is decisive — cutting the median trials needed from 20 to 9. Safety runs per-timestep checks on joint velocities, actuator forces, and contacts, where a single violation anywhere fails with no averaging. Regression uses matched pairs on a shared seed sequence with exact McNemar and Wilcoxon signed-rank tests. The adversarial suite trains a PPO adversary to perturb the policy's observations within an L∞ budget, alongside a guaranteed random-noise baseline. On a trained victim policy it drove task success from 100% to 0% at a bounded budget where random noise had zero effect. As founder I built and published the framework to PyPI (as cotterbot); the statistical core is validated by 75 passing tests with green CI. Tech: Python, PyTorch, Gymnasium, MuJoCo, PPO, Wald's SPRT, Hypothesis Testing, Open Source, PyPI Links: - Website: https://cotter-website.vercel.app - PyPI: https://pypi.org/project/cotterbot/ - GitHub: https://github.com/yih0nk/cotter Page: https://yihan.dev/projects/cotter --- ### Hivemind A Kubernetes operator that turns a Prometheus alert into a GitHub PR with an LLM-generated root-cause report. A Prometheus alert fires and Alertmanager POSTs it to the operator's webhook receiver, which creates an IncidentTriage custom resource in the alert's namespace. The reconciler drives that CR through a phase machine, fanning out three evidence agents concurrently with an errgroup: one fetches pod logs, one queries Prometheus for resource trends, and one matches the alert against a ConfigMap of runbooks. A synthesizer agent then combines their outputs into a root-cause summary and recommended fix, and the operator opens a GitHub PR with the full report — before anyone has opened a terminal. All LLM calls go through any OpenAI-compatible backend: a local Ollama by default, or a hosted provider like Groq. Built in Go with kubebuilder v4, and open-sourced under MIT. Stack: Go, Kubernetes, Prometheus, and Helm. Tech: Go, Kubernetes, kubebuilder, Prometheus, Helm, LLM Agents, Operator Pattern, Ollama / Groq Links: - GitHub: https://github.com/yih0nk/hivemind Page: https://yihan.dev/projects/hivemind --- ### Multi Agent RL Simulation Simulating competitive ride-hailing on a real Manhattan road network, where two companies learn pricing and routing strategies through multi-agent RL. A research project at USC's SIAS Lab modeling two competing ride-hailing companies, each operating mixed fleets of human-driven and autonomous vehicles across 75 Manhattan taxi zones. Companies learn zone-level pricing and routing strategies via Independent Proximal Policy Optimization (IPPO) while competing for the same customer pool. The simulation is closed-loop: customer demand drives traffic, traffic affects routing, routing affects congestion, and congestion feeds back into the next decision. Customers choose between companies using a logit utility model based on price, wait time, and travel time. The environment runs on SUMO with Python controlling the simulation step-by-step at 1-second resolution, using real TLC trip data from Manhattan. I integrated zonal decision-making with road-level traffic-flow models, ensuring consistency between aggregate fleet actions and link-level congestion dynamics. Tech: Python, PyTorch, IPPO, SUMO, TraCI, Multi-Agent RL, Traffic Simulation, Real TLC Data Links: - GitHub: https://github.com/yih0nk/sias-project Page: https://yihan.dev/projects/robotaxi-simulation --- ### Rocket the Robot A walking robot built from scratch, trained with reinforcement learning to move and interact with its environment. Rocket is a custom-built robot developed with USC Makers. The hardware runs on an ATmega microcontroller and a Jetson for compute, with stepper motors, an IMU, and other sensors. I wrote the I2C communication protocol between the ATmega and Jetson and helped assemble the robot — wiring, electronics, and integration. On the software side, I implemented a custom RL environment in Python using Isaac Sim and Isaac Lab, defining state observations, action spaces, and reward functions to prototype autonomous control behaviors in simulation using OpenAI Gymnasium. Tech: Python, Isaac Sim, Isaac Lab, OpenAI Gymnasium, ATmega, Jetson, I2C, Reinforcement Learning Links: - GitHub: https://github.com/uscmakers/Rocket Page: https://yihan.dev/projects/rocket-robot --- ## Play ### music I play piano and tenor saxophone. Piano came first and shaped how I think about harmony and structure. Tenor sax came later and taught me phrasing and breath control. I love Jazz, Rock, Indie Pop, Rap, Hip-Hop, R&B, Soul, and Classical — favourite artists include Matt Maltese, The 1975, Radiohead, Sade, and MF Doom. Piano: 15 years. Sax: 3 years. ### art I do oil painting and pencil/ink sketching — oil painting slow and deliberate, sketching fast and instinctive. ### photography Photography is how I practice seeing — composition, contrast, the way light falls on ordinary things. I shoot sunsets, streets, and people I care about. Instagram: https://www.instagram.com/yih0nk/ ### badminton Competitive (retired) doubles player, ~7 years, provincial gold in Ontario. Now plays recreationally. --- ## Contact - Email: yihanhon@usc.edu - GitHub: https://github.com/yih0nk - LinkedIn: https://www.linkedin.com/in/yihan-hon --- ## Site Map - / — home, bio, and what is playing right now - /projects — full project list - /experience — education, work history, skills - /play — music, art, photography, badminton - /blog — writing - /resume — password-gated --- *This file is generated from the same data that powers the live site (see src/lib/agentContent.ts in the repo). If something here looks stale, the live pages at the URLs above are the source of truth.*