Home

Pieces worth seeing.

014 / np_cutoff.R DA
May 2026 – Present · SNU (BH lab) · ~225 diseases

Network Propagation Score Cutoff

Permutation-based empirical p-value framework for picking "significant" genes after random-walk-with-restart on a STRING v11 + OTAR PPI network. Degree-matched nulls, Leave-One-Out validation, OpenTargets gold standard.

R Python igraph FinnGen R12 OpenTargets API
015 / facility_assessment.js DA
Apr 2026 – Jun 2026 · Medelite (case study) · 3 CMS datasets

Facility Assessment Report Generator

CCN in → CMS Provider Data Catalog out → validated PDF/Word report for Medelite's INFINITE platform. NH_Data_Dictionary as source of truth, unit verification, suppression-code awareness, value-by-value reconciliation against the verification facility.

CMS Provider Data Catalog NH_Data_Dictionary Serverless ETL jsPDF Vercel
001 / seoul_restaurants.ipynb DA
2024 · 25 districts · 528K records

Seoul Restaurant Survival Analysis

Survival analysis of 528,000+ restaurant license records across Seoul's 25 districts. Kaplan-Meier curves, log-rank tests, Cox proportional hazards regression. Median lifespan 6.1 years; only 35% reach 10 — location matters more than cuisine.

Python pandas lifelines Matplotlib
002 / military_career_analysis.ipynb DA
May 2026 · KELS 2021 panel · longitudinal

Veterans and Career Trajectories

A 4-year longitudinal test of whether mandatory military service shifts career trajectories. Non-parametric significance testing on ~4,000 KELS 2021 panel participants — the result ran opposite to my prior.

Python pandas SciPy Seaborn
003 / visa_perm_analysis.py DA
Feb 2025 · UMich hackathon · 8M+ records

What 8 Million PERM Applications Tell Us About Who Gets Approved

A data engineering + statistical analysis pipeline on a decade of US Department of Labor PERM filings — 1.5GB+ of raw data, RapidFuzz-based entity resolution, four parallel statistical cuts.

Python pandas SciPy RapidFuzz
004 / korean_price_monitor.py DE
Feb 2026 – Apr 2026 · KOSTAT × ECOS

Korean Price Monitor

A data engineering pipeline that asks whether Korea's official CPI captures what people actually pay. Joins two government APIs, validates every run with 6 data-calibrated quality checks, and exposes the gap in a 4-page Streamlit dashboard.

Python PostgreSQL Docker Streamlit
005 / pheweb_beta_matrix.py DE
Nov 2025 – Feb 2026 · UMich Medical School · genomics

PheWeb Beta Matrix Builder

A reusable pipeline that turns PheWAS summary statistics into variant-phenotype embeddings — config-driven across PheWeb instances, with sign-consistent matrix construction and 50-dim truncated SVD embeddings.

Python pandas scikit-learn requests
006 / cdc_event_pipeline.py DE
Feb 2026 – Apr 2026 · streaming · event sourcing

CDC Event Sourcing Pipeline

Streaming PostgreSQL WAL changes through Debezium + Kafka so intermediate states don't vanish between polls. Append-only event log, materialized snapshots, UUID5-deduped consumer, and a 5-page Streamlit dashboard.

PostgreSQL Debezium Kafka Python
007 / linkedin_scraper DE
May 2025 – Sep 2025 · Maetel · intern

LinkedIn Scraper

Profile and post extraction to power persona capture inside Maetel's product — Playwright with persistent Chrome session, snowflake-ID upload-date decoding, and a normalized PostgreSQL schema with CSV fallback.

Python Playwright PostgreSQL
008 / quantabot.py SWE
2024 – 2025 · UM Cutaneous Lab

Quanta

A LangChain RAG system for source-grounded dermatology literature review. Layered retrieval (semantic + BM25 + MMR + cross-encoder), F1/NDCG gains over the vector-similarity baseline, ~97% memory reduction.

Python LangChain GPT-4 ChromaDB
009 / party_organizer.tsx SWE
Dec 2025 – Feb 2026 · Yeonrim Bar (client) · live

Kyareureuk Party (꺄르륵 파티)

A private event-coordination platform for a Seoul bar's recurring matchmaking nights — Kakao OAuth, gender-quota enforcement, real-time admin approval, manual bank-transfer verification. Live at yeonrim.space, ~10 registrations per event, twice a week.

Next.js 16 TypeScript Firebase Kakao OAuth
010 / food_ordering_web.tsx SWE
2024 · UMich KISA · Pocha pop-up

Real-Time Food Ordering Platform (Pocha)

A full-stack remote ordering system built for UMich KISA's Pocha pop-ups — 150+ concurrent users, 3,000+ orders, Stripe + Apple Pay checkout, Socket.io live order tracking, and an admin dashboard for the restaurant. Live at umichkisa.com/pocha.

Next.js Flask Stripe Socket.io
011 / umich_kisa.tsx SWE
2024 – Present · UMich KISA · platform

UMich KISA Website

The official site for the University of Michigan Korean International Student Association and the umbrella platform that hosts Pocha event ordering and the Job Curator — shared sign-in, shared design system, one deployment. Live at umichkisa.com.

Next.js TypeScript Tailwind Vercel
012 / job_curator.tsx SWE
2024 – Present · UMich KISA · 6-person team

Job Curator for International Students

A curation platform for Korean international students seeking internships back in Korea — crawls major Korean job boards, integrates the Wanted API, deduplicates and standardizes listings, and surfaces alumni-sourced prep resources. Live at umichkisa.com/jobs.

Next.js TypeScript Wanted API web scraping
013 / subway_route_optimization.tsx SWE
Feb 2026 – Mar 2026 · TD-TSP · live

Incheon Line 2 Route Optimizer

A time-dependent route planner that beats sequential ordering on a single subway line. Brute-force search over up to 720 permutations against the real Incheon Line 2 timetable — surfaces the Wait-Time Paradox at subway-route-optimization.vercel.app.

TypeScript Vite React

More coming soon. Get in touch if you'd like to chat about any of these.